mirror of
https://github.com/holub/mame
synced 2025-07-08 19:31:59 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
5fce1597df
@ -3697,7 +3697,7 @@ static PaError PaAlsaStream_GetAvailableFrames( PaAlsaStream *self, int queryCap
|
||||
*available, int *xrunOccurred )
|
||||
{
|
||||
PaError result = paNoError;
|
||||
unsigned long captureFrames, playbackFrames;
|
||||
unsigned long captureFrames = 0, playbackFrames = 0;
|
||||
*xrunOccurred = 0;
|
||||
|
||||
assert( queryCapture || queryPlayback );
|
||||
@ -4579,7 +4579,7 @@ error:
|
||||
|
||||
PaError PaAlsa_GetStreamInputCard( PaStream* s, int* card )
|
||||
{
|
||||
PaAlsaStream *stream;
|
||||
PaAlsaStream *stream = NULL;
|
||||
PaError result = paNoError;
|
||||
snd_pcm_info_t* pcmInfo;
|
||||
|
||||
@ -4598,7 +4598,7 @@ error:
|
||||
|
||||
PaError PaAlsa_GetStreamOutputCard( PaStream* s, int* card )
|
||||
{
|
||||
PaAlsaStream *stream;
|
||||
PaAlsaStream *stream = NULL;
|
||||
PaError result = paNoError;
|
||||
snd_pcm_info_t* pcmInfo;
|
||||
|
||||
|
7
makefile
7
makefile
@ -4,9 +4,6 @@
|
||||
#
|
||||
# Core makefile for building MAME and derivatives
|
||||
#
|
||||
# Copyright (c) Nicola Salmoria and the MAME Team.
|
||||
# Visit http://mamedev.org for licensing and usage restrictions.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
|
||||
@ -396,6 +393,10 @@ ifdef OPTIMIZE
|
||||
PARAMS += --OPTIMIZE=$(OPTIMIZE)
|
||||
endif
|
||||
|
||||
ifdef SHLIB
|
||||
PARAMS += --SHLIB=$(SHLIB)
|
||||
endif
|
||||
|
||||
ifdef ARCHOPTS
|
||||
PARAMS += --ARCHOPTS='$(ARCHOPTS)'
|
||||
endif
|
||||
|
@ -311,6 +311,21 @@ newoption {
|
||||
}
|
||||
|
||||
|
||||
newoption {
|
||||
trigger = "SHLIB",
|
||||
description = "Generate shared libs.",
|
||||
allowed = {
|
||||
{ "0", "Static libs" },
|
||||
{ "1", "Shared libs" },
|
||||
}
|
||||
}
|
||||
|
||||
if _OPTIONS["SHLIB"]=="1" then
|
||||
LIBTYPE = "SharedLib"
|
||||
else
|
||||
LIBTYPE = "StaticLib"
|
||||
end
|
||||
|
||||
PYTHON = "python"
|
||||
|
||||
if _OPTIONS["PYTHON_EXECUTABLE"]~=nil then
|
||||
@ -743,6 +758,12 @@ if _OPTIONS["OPTIMIZE"] then
|
||||
end
|
||||
end
|
||||
|
||||
if _OPTIONS["SHLIB"] then
|
||||
buildoptions {
|
||||
"-fPIC"
|
||||
}
|
||||
end
|
||||
|
||||
if _OPTIONS["SSE2"]=="1" then
|
||||
buildoptions {
|
||||
"-msse2",
|
||||
|
@ -554,6 +554,7 @@ project "bgfx"
|
||||
configuration { "gmake" }
|
||||
buildoptions {
|
||||
"-Wno-uninitialized",
|
||||
"-Wno-unused-function",
|
||||
}
|
||||
|
||||
configuration { }
|
||||
@ -619,24 +620,32 @@ project "portaudio"
|
||||
"-Wno-bad-function-cast",
|
||||
"-Wno-undef",
|
||||
"-Wno-missing-braces",
|
||||
"-Wno-unused-but-set-variable",
|
||||
"-Wno-maybe-uninitialized",
|
||||
"-Wno-unused-variable",
|
||||
"-Wno-unused-value",
|
||||
"-Wno-unused-function",
|
||||
"-Wno-unknown-pragmas",
|
||||
"-Wno-sometimes-uninitialized",
|
||||
}
|
||||
|
||||
local version = str_to_version(_OPTIONS["gcc_version"])
|
||||
if (_OPTIONS["gcc"]~=nil) and string.find(_OPTIONS["gcc"], "clang") then
|
||||
buildoptions_c {
|
||||
"-Wno-unknown-warning-option",
|
||||
"-Wno-absolute-value",
|
||||
"-Wno-unused-variable",
|
||||
}
|
||||
local version = str_to_version(_OPTIONS["gcc_version"])
|
||||
if (_OPTIONS["gcc"]~=nil) then
|
||||
if string.find(_OPTIONS["gcc"], "clang") then
|
||||
buildoptions_c {
|
||||
"-Wno-unknown-warning-option",
|
||||
"-Wno-absolute-value",
|
||||
"-Wno-unused-but-set-variable",
|
||||
"-Wno-maybe-uninitialized",
|
||||
"-Wno-sometimes-uninitialized",
|
||||
}
|
||||
else
|
||||
if (version >= 40600) then
|
||||
buildoptions_c {
|
||||
"-Wno-unused-but-set-variable",
|
||||
"-Wno-maybe-uninitialized",
|
||||
"-Wno-sometimes-uninitialized",
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
configuration { "vs*" }
|
||||
buildoptions {
|
||||
"/wd4204", -- warning C4204: nonstandard extension used : non-constant aggregate initializer
|
||||
|
@ -2,8 +2,9 @@
|
||||
-- copyright-holders:MAMEdev Team
|
||||
|
||||
project ("emu")
|
||||
targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
|
||||
uuid ("e6fa15e4-a354-4526-acef-13c8e80fcacf")
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
options {
|
||||
"ForceCPP",
|
||||
}
|
||||
@ -265,8 +266,6 @@ files {
|
||||
MAME_DIR .. "src/emu/machine/laserdsc.h",
|
||||
MAME_DIR .. "src/emu/machine/latch.c",
|
||||
MAME_DIR .. "src/emu/machine/latch.h",
|
||||
MAME_DIR .. "src/emu/machine/netlist.c",
|
||||
MAME_DIR .. "src/emu/machine/netlist.h",
|
||||
MAME_DIR .. "src/emu/machine/nvram.c",
|
||||
MAME_DIR .. "src/emu/machine/nvram.h",
|
||||
MAME_DIR .. "src/emu/machine/ram.c",
|
||||
@ -358,7 +357,7 @@ function emuProject(_target, _subtarget)
|
||||
|
||||
project ("optional")
|
||||
uuid (os.uuid("optional-" .. _target .."_" .. _subtarget))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
options {
|
||||
"ForceCPP",
|
||||
@ -388,16 +387,17 @@ function emuProject(_target, _subtarget)
|
||||
|
||||
dofile(path.join("src", "sound.lua"))
|
||||
|
||||
dofile(path.join("src", "netlist.lua"))
|
||||
|
||||
dofile(path.join("src", "video.lua"))
|
||||
|
||||
dofile(path.join("src", "machine.lua"))
|
||||
|
||||
-- netlist now defines a project
|
||||
dofile(path.join("src", "netlist.lua"))
|
||||
|
||||
project ("bus")
|
||||
uuid ("5d782c89-cf7e-4cfe-8f9f-0d4bfc16c91d")
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
options {
|
||||
"ForceCPP",
|
||||
@ -428,7 +428,7 @@ function emuProject(_target, _subtarget)
|
||||
|
||||
project ("dasm")
|
||||
uuid ("f2d28b0a-6da5-4f78-b629-d834aa00429d")
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
options {
|
||||
"ForceCPP",
|
||||
|
@ -2,8 +2,9 @@
|
||||
-- copyright-holders:MAMEdev Team
|
||||
|
||||
project "utils"
|
||||
targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
|
||||
uuid "22489ad0-4cb2-4d91-ad81-24b0d80ca30a"
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
@ -94,8 +95,9 @@ project "utils"
|
||||
|
||||
|
||||
project "formats"
|
||||
targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
|
||||
uuid "f69636b1-fcce-45ce-b09a-113e371a2d7a"
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
@ -311,6 +313,8 @@ project "formats"
|
||||
MAME_DIR .. "src/lib/formats/pc98fdi_dsk.h",
|
||||
MAME_DIR .. "src/lib/formats/phc25_cas.c",
|
||||
MAME_DIR .. "src/lib/formats/phc25_cas.h",
|
||||
MAME_DIR .. "src/lib/formats/pk8020_dsk.c",
|
||||
MAME_DIR .. "src/lib/formats/pk8020_dsk.h",
|
||||
MAME_DIR .. "src/lib/formats/pmd_cas.c",
|
||||
MAME_DIR .. "src/lib/formats/pmd_cas.h",
|
||||
MAME_DIR .. "src/lib/formats/primoptp.c",
|
||||
@ -391,6 +395,8 @@ project "formats"
|
||||
MAME_DIR .. "src/lib/formats/wd177x_dsk.h",
|
||||
MAME_DIR .. "src/lib/formats/x07_cas.c",
|
||||
MAME_DIR .. "src/lib/formats/x07_cas.h",
|
||||
MAME_DIR .. "src/lib/formats/x1_dsk.c",
|
||||
MAME_DIR .. "src/lib/formats/x1_dsk.h",
|
||||
MAME_DIR .. "src/lib/formats/x1_tap.c",
|
||||
MAME_DIR .. "src/lib/formats/x1_tap.h",
|
||||
MAME_DIR .. "src/lib/formats/xdf_dsk.c",
|
||||
|
@ -2662,3 +2662,14 @@ if (MACHINES["PCI9050"]~=null) then
|
||||
}
|
||||
end
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/emu/machine/netlist.h,MACHINES += NETLIST
|
||||
---------------------------------------------------
|
||||
|
||||
if (MACHINES["NETLIST"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/emu/machine/netlist.c",
|
||||
MAME_DIR .. "src/emu/machine/netlist.h",
|
||||
}
|
||||
end
|
||||
|
@ -87,6 +87,7 @@ function mainProject(_target, _subtarget)
|
||||
links {
|
||||
"osd_" .. _OPTIONS["osd"],
|
||||
"bus",
|
||||
"netlist",
|
||||
"optional",
|
||||
"emu",
|
||||
"dasm",
|
||||
|
@ -1,127 +1,152 @@
|
||||
-- license:BSD-3-Clause
|
||||
-- copyright-holders:MAMEdev Team
|
||||
|
||||
files {
|
||||
MAME_DIR .. "src/emu/netlist/nl_config.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_dice_compat.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_lists.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_time.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_util.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_base.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_base.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_parser.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_parser.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_setup.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_setup.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_factory.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_factory.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pconfig.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/palloc.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/palloc.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/plists.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/poptions.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pparser.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pparser.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstate.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstate.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_bjt.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_bjt.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_fourterm.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_fourterm.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_solver.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_solver.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_switches.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_switches.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_twoterm.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_twoterm.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_opamps.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_opamps.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct1.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct2.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_gauss_seidel.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4020.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4020.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4066.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4066.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7400.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7400.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7402.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7402.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7404.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7404.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7408.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7408.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7410.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7410.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7411.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7411.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7420.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7420.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7425.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7425.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7427.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7427.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7430.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7430.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7432.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7432.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7437.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7437.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7448.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7448.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7450.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7450.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7474.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7474.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7483.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7483.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7486.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7486.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7490.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7490.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7493.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7493.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74107.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74107.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74123.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74123.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74153.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74153.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74175.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74175.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74192.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74192.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74193.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74193.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74279.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74279.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_82S16.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_82S16.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9310.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9310.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9312.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9312.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9316.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9316.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_ne555.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_ne555.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_r2r_dac.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_r2r_dac.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_legacy.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_legacy.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/net_lib.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/net_lib.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_log.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_log.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_system.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_system.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_cmos.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_signal.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_truthtable.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_truthtable.h",
|
||||
project "netlist"
|
||||
targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
|
||||
uuid "665ef8ac-2a4c-4c3e-a05f-fd1e5db11de9"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
}
|
||||
|
||||
includedirs {
|
||||
MAME_DIR .. "src/emu/netlist",
|
||||
MAME_DIR .. "src/osd",
|
||||
MAME_DIR .. "src/lib/util",
|
||||
}
|
||||
-- if _OPTIONS["with-bundled-expat"] then
|
||||
-- includedirs {
|
||||
-- MAME_DIR .. "3rdparty/expat/lib",
|
||||
-- }
|
||||
--end
|
||||
|
||||
|
||||
files {
|
||||
MAME_DIR .. "src/emu/netlist/nl_config.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_dice_compat.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_lists.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_time.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_util.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_base.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_base.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_parser.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_parser.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_setup.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_setup.h",
|
||||
MAME_DIR .. "src/emu/netlist/nl_factory.c",
|
||||
MAME_DIR .. "src/emu/netlist/nl_factory.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pconfig.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/palloc.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/palloc.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/plists.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/poptions.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pparser.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pparser.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstate.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstate.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.h",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.c",
|
||||
MAME_DIR .. "src/emu/netlist/plib/pstring.h",
|
||||
MAME_DIR .. "src/emu/netlist/tools/nl_convert.c",
|
||||
MAME_DIR .. "src/emu/netlist/tools/nl_convert.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_bjt.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_bjt.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_fourterm.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_fourterm.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_solver.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_solver.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_switches.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_switches.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_twoterm.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_twoterm.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_opamps.c",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_opamps.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct1.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_direct2.h",
|
||||
MAME_DIR .. "src/emu/netlist/analog/nld_ms_gauss_seidel.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4020.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4020.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4066.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_4066.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7400.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7400.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7402.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7402.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7404.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7404.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7408.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7408.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7410.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7410.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7411.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7411.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7420.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7420.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7425.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7425.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7427.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7427.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7430.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7430.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7432.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7432.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7437.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7437.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7448.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7448.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7450.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7450.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7474.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7474.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7483.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7483.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7486.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7486.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7490.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7490.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7493.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_7493.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74107.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74107.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74123.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74123.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74153.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74153.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74175.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74175.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74192.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74192.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74193.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74193.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74279.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74279.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_82S16.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_82S16.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9310.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9310.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9312.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9312.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9316.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_9316.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_ne555.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_ne555.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_r2r_dac.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_r2r_dac.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_legacy.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_legacy.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/net_lib.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/net_lib.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_log.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_log.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_system.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_system.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_cmos.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_signal.h",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_truthtable.c",
|
||||
MAME_DIR .. "src/emu/netlist/devices/nld_truthtable.h",
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ end
|
||||
|
||||
project ("osd_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
removeflags {
|
||||
"SingleOutputDir",
|
||||
@ -54,7 +54,7 @@ project ("osd_" .. _OPTIONS["osd"])
|
||||
|
||||
project ("ocore_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
|
@ -293,8 +293,9 @@ end
|
||||
|
||||
|
||||
project ("osd_" .. _OPTIONS["osd"])
|
||||
targetsubdir(_OPTIONS["target"] .."_" .._OPTIONS["subtarget"])
|
||||
uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
dofile("sdl_cfg.lua")
|
||||
osdmodulesbuild()
|
||||
@ -361,8 +362,9 @@ project ("osd_" .. _OPTIONS["osd"])
|
||||
|
||||
|
||||
project ("ocore_" .. _OPTIONS["osd"])
|
||||
targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
|
||||
uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
|
@ -90,7 +90,7 @@ end
|
||||
|
||||
project ("osd_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
dofile("windows_cfg.lua")
|
||||
osdmodulesbuild()
|
||||
@ -153,7 +153,7 @@ project ("osd_" .. _OPTIONS["osd"])
|
||||
|
||||
project ("ocore_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
|
@ -443,6 +443,7 @@ links {
|
||||
"flac",
|
||||
"7z",
|
||||
"ocore_" .. _OPTIONS["osd"],
|
||||
"netlist",
|
||||
}
|
||||
|
||||
includedirs {
|
||||
@ -455,8 +456,6 @@ files {
|
||||
MAME_DIR .. "src/tools/nltool.c",
|
||||
}
|
||||
|
||||
dofile("netlist.lua")
|
||||
|
||||
--------------------------------------------------
|
||||
-- castool
|
||||
--------------------------------------------------
|
||||
|
@ -54,7 +54,7 @@ BUSES["MIDI"] = true
|
||||
function createProjects_ldplayer_ldplayer(_target, _subtarget)
|
||||
project ("drvldplayer")
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drvldplayer"))
|
||||
|
||||
options {
|
||||
|
@ -470,6 +470,7 @@ MACHINES["MSM6242"] = true
|
||||
--MACHINES["NCR5380N"] = true
|
||||
--MACHINES["NCR5390"] = true
|
||||
MACHINES["NCR539x"] = true
|
||||
MACHINES["NETLIST"] = true
|
||||
--MACHINES["NCR53C7XX"] = true
|
||||
MACHINES["NMC9306"] = true
|
||||
--MACHINES["NSC810"] = true
|
||||
@ -760,7 +761,7 @@ end
|
||||
function createMAMEProjects(_target, _subtarget, _name)
|
||||
project (_name)
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
|
||||
|
||||
options {
|
||||
|
@ -15,7 +15,7 @@ dofile("mess.lua")
|
||||
function createProjects_mame_dummy(_target, _subtarget)
|
||||
project ("mame_dummy")
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drv-mame_dummy"))
|
||||
|
||||
options {
|
||||
|
@ -471,6 +471,7 @@ MACHINES["NCR5380N"] = true
|
||||
MACHINES["NCR5390"] = true
|
||||
MACHINES["NCR539x"] = true
|
||||
MACHINES["NCR53C7XX"] = true
|
||||
MACHINES["NETLIST"] = true
|
||||
MACHINES["NMC9306"] = true
|
||||
MACHINES["NSC810"] = true
|
||||
MACHINES["NSCSI"] = true
|
||||
@ -859,7 +860,7 @@ end
|
||||
function createMESSProjects(_target, _subtarget, _name)
|
||||
project (_name)
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
|
||||
|
||||
options {
|
||||
|
121
scripts/target/mame/nl.lua
Normal file
121
scripts/target/mame/nl.lua
Normal file
@ -0,0 +1,121 @@
|
||||
-- license:BSD-3-Clause
|
||||
-- copyright-holders:MAMEdev Team
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
--
|
||||
-- nl.lua
|
||||
--
|
||||
-- Compiles all drivers using netlist code
|
||||
-- Use make SUBTARGET=nl to build
|
||||
--
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- Specify all the CPU cores necessary for the
|
||||
-- drivers referenced in nl.lst.
|
||||
--------------------------------------------------
|
||||
|
||||
CPUS["Z80"] = true
|
||||
--CPUS["M6502"] = true
|
||||
--CPUS["MCS48"] = true
|
||||
--CPUS["MCS51"] = true
|
||||
--CPUS["M6800"] = true
|
||||
--CPUS["M6809"] = true
|
||||
--CPUS["M680X0"] = true
|
||||
--CPUS["TMS9900"] = true
|
||||
--CPUS["COP400"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- Specify all the sound cores necessary for the
|
||||
-- drivers referenced in nl.lst.
|
||||
--------------------------------------------------
|
||||
|
||||
--SOUNDS["SAMPLES"] = true
|
||||
SOUNDS["DAC"] = true
|
||||
--SOUNDS["DISCRETE"] = true
|
||||
SOUNDS["AY8910"] = true
|
||||
--SOUNDS["YM2151"] = true
|
||||
--SOUNDS["ASTROCADE"] = true
|
||||
--SOUNDS["TMS5220"] = true
|
||||
--SOUNDS["OKIM6295"] = true
|
||||
--SOUNDS["HC55516"] = true
|
||||
--SOUNDS["YM3812"] = true
|
||||
--SOUNDS["CEM3394"] = true
|
||||
--SOUNDS["VOTRAX"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available video cores
|
||||
--------------------------------------------------
|
||||
|
||||
VIDEOS["FIXFREQ"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available machine cores
|
||||
--------------------------------------------------
|
||||
|
||||
MACHINES["NETLIST"] = true
|
||||
--MACHINES["6821PIA"] = true
|
||||
--MACHINES["TTL74148"] = true
|
||||
--MACHINES["TTL74153"] = true
|
||||
--MACHINES["TTL7474"] = true
|
||||
--MACHINES["RIOT6532"] = true
|
||||
--MACHINES["PIT8253"] = true
|
||||
--MACHINES["Z80CTC"] = true
|
||||
--MACHINES["68681"] = true
|
||||
--MACHINES["BANKDEV"] = true
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- specify available bus cores
|
||||
--------------------------------------------------
|
||||
|
||||
-- not needed by nl.lua but build system wants at least one bus
|
||||
BUSES["CENTRONICS"] = true
|
||||
|
||||
--------------------------------------------------
|
||||
-- This is the list of files that are necessary
|
||||
-- for building all of the drivers referenced
|
||||
-- in tiny.lst
|
||||
--------------------------------------------------
|
||||
|
||||
function createProjects_mame_nl(_target, _subtarget)
|
||||
project ("mame_netlist")
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drv-mame-nl"))
|
||||
|
||||
options {
|
||||
"ForceCPP",
|
||||
}
|
||||
|
||||
includedirs {
|
||||
MAME_DIR .. "src/osd",
|
||||
MAME_DIR .. "src/emu",
|
||||
MAME_DIR .. "src/mame",
|
||||
MAME_DIR .. "src/lib",
|
||||
MAME_DIR .. "src/lib/util",
|
||||
MAME_DIR .. "3rdparty",
|
||||
MAME_DIR .. "3rdparty/zlib",
|
||||
GEN_DIR .. "mame/layout",
|
||||
}
|
||||
|
||||
files{
|
||||
MAME_DIR .. "src/mame/drivers/pong.c",
|
||||
MAME_DIR .. "src/mame/drivers/nl_pong.c",
|
||||
MAME_DIR .. "src/mame/drivers/nl_pongd.c",
|
||||
MAME_DIR .. "src/mame/drivers/nl_breakout.c",
|
||||
|
||||
MAME_DIR .. "src/mame/drivers/1942.c",
|
||||
MAME_DIR .. "src/mame/video/1942.c",
|
||||
MAME_DIR .. "src/mame/drivers/popeye.c",
|
||||
MAME_DIR .. "src/mame/video/popeye.c",
|
||||
|
||||
}
|
||||
end
|
||||
|
||||
function linkProjects_mame_nl(_target, _subtarget)
|
||||
links {
|
||||
"mame_netlist",
|
||||
}
|
||||
end
|
@ -78,7 +78,7 @@ BUSES["CENTRONICS"] = true
|
||||
function createProjects_mame_tiny(_target, _subtarget)
|
||||
project ("mame_tiny")
|
||||
targetsubdir(_target .."_" .. _subtarget)
|
||||
kind "StaticLib"
|
||||
kind (LIBTYPE)
|
||||
uuid (os.uuid("drv-mame-tiny"))
|
||||
|
||||
options {
|
||||
|
@ -5,8 +5,6 @@
|
||||
EACA Colour Genie Floppy Disc Controller
|
||||
|
||||
TODO:
|
||||
- Plain sector files are not working (some sectors are marked DDM),
|
||||
maybe support the .cgd format?
|
||||
- What's the exact FD1793 model?
|
||||
- How does it turn off the motor?
|
||||
- What's the source of the timer and the exact timings?
|
||||
|
@ -35,8 +35,8 @@ WRITE8_MEMBER( isa8_gblaster_device::saa1099_1_16_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0 : m_saa1099_1->control_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_1->data_w( space, offset, data ); break;
|
||||
case 0 : m_saa1099_1->data_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_1->control_w( space, offset, data ); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,8 +44,29 @@ WRITE8_MEMBER( isa8_gblaster_device::saa1099_2_16_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0 : m_saa1099_2->control_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_2->data_w( space, offset, data ); break;
|
||||
case 0 : m_saa1099_2->data_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_2->control_w( space, offset, data ); break;
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER( isa8_gblaster_device::detect_r )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0:
|
||||
case 1: return 0x7f; break; // this register reportedly returns 0x3f on a Tandy 1000 TL, and 0x7f on a generic 486 PC.
|
||||
case 6:
|
||||
case 7: return detect_reg; break;
|
||||
default: return 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( isa8_gblaster_device::detect_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 2:
|
||||
case 3: detect_reg = (data & 0xff); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +98,8 @@ isa8_gblaster_device::isa8_gblaster_device(const machine_config &mconfig, const
|
||||
device_t(mconfig, ISA8_GAME_BLASTER, "Game Blaster Sound Card", tag, owner, clock, "isa_gblaster", __FILE__),
|
||||
device_isa8_card_interface(mconfig, *this),
|
||||
m_saa1099_1(*this, "saa1099.1"),
|
||||
m_saa1099_2(*this, "saa1099.2")
|
||||
m_saa1099_2(*this, "saa1099.2"),
|
||||
detect_reg(0xFF)
|
||||
{
|
||||
}
|
||||
|
||||
@ -90,6 +112,7 @@ void isa8_gblaster_device::device_start()
|
||||
set_isa_device();
|
||||
m_isa->install_device(0x0220, 0x0221, 0, 0, read8_delegate( FUNC(isa8_gblaster_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_gblaster_device::saa1099_1_16_w), this ) );
|
||||
m_isa->install_device(0x0222, 0x0223, 0, 0, read8_delegate( FUNC(isa8_gblaster_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_gblaster_device::saa1099_2_16_w), this ) );
|
||||
m_isa->install_device(0x0224, 0x022F, 0, 0, read8_delegate( FUNC(isa8_gblaster_device::detect_r), this ), write8_delegate( FUNC(isa8_gblaster_device::detect_w), this ) );
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -29,6 +29,8 @@ public:
|
||||
DECLARE_READ8_MEMBER(saa1099_16_r);
|
||||
DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
|
||||
DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
|
||||
DECLARE_READ8_MEMBER(detect_r);
|
||||
DECLARE_WRITE8_MEMBER(detect_w);
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
@ -37,6 +39,7 @@ private:
|
||||
// internal state
|
||||
required_device<saa1099_device> m_saa1099_1;
|
||||
required_device<saa1099_device> m_saa1099_2;
|
||||
UINT8 detect_reg;
|
||||
};
|
||||
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
pro audio spectrum 16: 1 OPL3
|
||||
|
||||
2 x saa1099 chips
|
||||
inherited from game blaster
|
||||
also on sound blaster 1.0
|
||||
option on sound blaster 1.5
|
||||
|
||||
@ -150,8 +151,8 @@ WRITE8_MEMBER( isa8_sblaster1_0_device::saa1099_1_16_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0 : m_saa1099_1->control_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_1->data_w( space, offset, data ); break;
|
||||
case 0 : m_saa1099_1->data_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_1->control_w( space, offset, data ); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,8 +160,8 @@ WRITE8_MEMBER( isa8_sblaster1_0_device::saa1099_2_16_w )
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 0 : m_saa1099_2->control_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_2->data_w( space, offset, data ); break;
|
||||
case 0 : m_saa1099_2->data_w( space, offset, data ); break;
|
||||
case 1 : m_saa1099_2->control_w( space, offset, data ); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -215,6 +215,8 @@ void nubus_image_device::device_start()
|
||||
|
||||
filectx.curdir[0] = '.';
|
||||
filectx.curdir[1] = '\0';
|
||||
filectx.dirp = NULL;
|
||||
filectx.fd = NULL;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -280,7 +282,7 @@ WRITE32_MEMBER( nubus_image_device::file_cmd_w )
|
||||
strcpy((char*)filectx.filename, (char*)filectx.curdir);
|
||||
break;
|
||||
case kFileCmdSetDir:
|
||||
if(filectx.filename[0] == '/') {
|
||||
if ((filectx.filename[0] == '/') || (filectx.filename[0] == '$')) {
|
||||
strcpy((char*)filectx.curdir, (char*)filectx.filename);
|
||||
} else {
|
||||
strcat((char*)filectx.curdir, "/");
|
||||
@ -291,10 +293,15 @@ WRITE32_MEMBER( nubus_image_device::file_cmd_w )
|
||||
if(filectx.dirp) osd_closedir(filectx.dirp);
|
||||
filectx.dirp = osd_opendir((const char *)filectx.curdir);
|
||||
case kFileCmdGetNextListing:
|
||||
dp = osd_readdir(filectx.dirp);
|
||||
if(dp) {
|
||||
strncpy((char*)filectx.filename, dp->name, sizeof(filectx.filename));
|
||||
} else {
|
||||
if (filectx.dirp) {
|
||||
dp = osd_readdir(filectx.dirp);
|
||||
if(dp) {
|
||||
strncpy((char*)filectx.filename, dp->name, sizeof(filectx.filename));
|
||||
} else {
|
||||
memset(filectx.filename, 0, sizeof(filectx.filename));
|
||||
}
|
||||
}
|
||||
else {
|
||||
memset(filectx.filename, 0, sizeof(filectx.filename));
|
||||
}
|
||||
break;
|
||||
|
@ -313,7 +313,7 @@ offs_t hd6309_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *o
|
||||
// read_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 hd6309_device::read_operand()
|
||||
inline UINT8 hd6309_device::read_operand()
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -332,7 +332,7 @@ ATTR_FORCE_INLINE UINT8 hd6309_device::read_operand()
|
||||
// read_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 hd6309_device::read_operand(int ordinal)
|
||||
inline UINT8 hd6309_device::read_operand(int ordinal)
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -356,7 +356,7 @@ ATTR_FORCE_INLINE UINT8 hd6309_device::read_operand(int ordinal)
|
||||
// write_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void hd6309_device::write_operand(UINT8 data)
|
||||
inline void hd6309_device::write_operand(UINT8 data)
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -375,7 +375,7 @@ ATTR_FORCE_INLINE void hd6309_device::write_operand(UINT8 data)
|
||||
// write_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void hd6309_device::write_operand(int ordinal, UINT8 data)
|
||||
inline void hd6309_device::write_operand(int ordinal, UINT8 data)
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -398,7 +398,7 @@ ATTR_FORCE_INLINE void hd6309_device::write_operand(int ordinal, UINT8 data)
|
||||
// bittest_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 &hd6309_device::bittest_register()
|
||||
inline UINT8 &hd6309_device::bittest_register()
|
||||
{
|
||||
switch(m_temp_im & 0xC0)
|
||||
{
|
||||
@ -414,7 +414,7 @@ ATTR_FORCE_INLINE UINT8 &hd6309_device::bittest_register()
|
||||
// bittest_source
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE bool hd6309_device::bittest_source()
|
||||
inline bool hd6309_device::bittest_source()
|
||||
{
|
||||
return (m_temp.b.l & (1 << ((m_temp_im >> 3) & 0x07))) ? true : false;
|
||||
}
|
||||
@ -424,7 +424,7 @@ ATTR_FORCE_INLINE bool hd6309_device::bittest_source()
|
||||
// bittest_dest
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE bool hd6309_device::bittest_dest()
|
||||
inline bool hd6309_device::bittest_dest()
|
||||
{
|
||||
return (bittest_register() & (1 << ((m_temp_im >> 0) & 0x07))) ? true : false;
|
||||
}
|
||||
@ -434,7 +434,7 @@ ATTR_FORCE_INLINE bool hd6309_device::bittest_dest()
|
||||
// bittest_set
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void hd6309_device::bittest_set(bool result)
|
||||
inline void hd6309_device::bittest_set(bool result)
|
||||
{
|
||||
if (result)
|
||||
bittest_register() |= (1 << ((m_temp_im >> 0) & 0x07));
|
||||
@ -448,7 +448,7 @@ ATTR_FORCE_INLINE void hd6309_device::bittest_set(bool result)
|
||||
// read_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE m6809_base_device::exgtfr_register hd6309_device::read_exgtfr_register(UINT8 reg)
|
||||
inline m6809_base_device::exgtfr_register hd6309_device::read_exgtfr_register(UINT8 reg)
|
||||
{
|
||||
UINT16 value = 0;
|
||||
|
||||
@ -486,7 +486,7 @@ ATTR_FORCE_INLINE m6809_base_device::exgtfr_register hd6309_device::read_exgtfr_
|
||||
// write_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void hd6309_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
inline void hd6309_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
{
|
||||
switch(reg & 0x0F)
|
||||
{
|
||||
@ -517,7 +517,7 @@ ATTR_FORCE_INLINE void hd6309_device::write_exgtfr_register(UINT8 reg, m6809_bas
|
||||
// tfr_read
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE bool hd6309_device::tfr_read(UINT8 opcode, UINT8 arg, UINT8 &data)
|
||||
inline bool hd6309_device::tfr_read(UINT8 opcode, UINT8 arg, UINT8 &data)
|
||||
{
|
||||
PAIR16 *reg;
|
||||
|
||||
@ -550,7 +550,7 @@ ATTR_FORCE_INLINE bool hd6309_device::tfr_read(UINT8 opcode, UINT8 arg, UINT8 &d
|
||||
// tfr_write
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE bool hd6309_device::tfr_write(UINT8 opcode, UINT8 arg, UINT8 data)
|
||||
inline bool hd6309_device::tfr_write(UINT8 opcode, UINT8 arg, UINT8 data)
|
||||
{
|
||||
PAIR16 *reg;
|
||||
|
||||
@ -789,7 +789,7 @@ bool hd6309_device::divd()
|
||||
// execute_one - try to execute a single instruction
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void hd6309_device::execute_one()
|
||||
inline void hd6309_device::execute_one()
|
||||
{
|
||||
switch(pop_state())
|
||||
{
|
||||
|
@ -120,7 +120,7 @@ offs_t konami_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT
|
||||
// read_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
inline ATTR_FORCE_INLINE UINT8 konami_cpu_device::read_operand()
|
||||
inline UINT8 konami_cpu_device::read_operand()
|
||||
{
|
||||
return super::read_operand();
|
||||
}
|
||||
@ -130,7 +130,7 @@ inline ATTR_FORCE_INLINE UINT8 konami_cpu_device::read_operand()
|
||||
// read_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
inline ATTR_FORCE_INLINE UINT8 konami_cpu_device::read_operand(int ordinal)
|
||||
inline UINT8 konami_cpu_device::read_operand(int ordinal)
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -146,7 +146,7 @@ inline ATTR_FORCE_INLINE UINT8 konami_cpu_device::read_operand(int ordinal)
|
||||
// write_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::write_operand(UINT8 data)
|
||||
inline void konami_cpu_device::write_operand(UINT8 data)
|
||||
{
|
||||
super::write_operand(data);
|
||||
}
|
||||
@ -157,7 +157,7 @@ ATTR_FORCE_INLINE void konami_cpu_device::write_operand(UINT8 data)
|
||||
// write_operand
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::write_operand(int ordinal, UINT8 data)
|
||||
inline void konami_cpu_device::write_operand(int ordinal, UINT8 data)
|
||||
{
|
||||
switch(m_addressing_mode)
|
||||
{
|
||||
@ -173,7 +173,7 @@ ATTR_FORCE_INLINE void konami_cpu_device::write_operand(int ordinal, UINT8 data)
|
||||
// ireg
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT16 &konami_cpu_device::ireg()
|
||||
inline UINT16 &konami_cpu_device::ireg()
|
||||
{
|
||||
switch(m_opcode & 0x70)
|
||||
{
|
||||
@ -194,7 +194,7 @@ ATTR_FORCE_INLINE UINT16 &konami_cpu_device::ireg()
|
||||
// read_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE m6809_base_device::exgtfr_register konami_cpu_device::read_exgtfr_register(UINT8 reg)
|
||||
inline m6809_base_device::exgtfr_register konami_cpu_device::read_exgtfr_register(UINT8 reg)
|
||||
{
|
||||
exgtfr_register result;
|
||||
result.word_value = 0x00FF;
|
||||
@ -217,7 +217,7 @@ ATTR_FORCE_INLINE m6809_base_device::exgtfr_register konami_cpu_device::read_exg
|
||||
// write_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
inline void konami_cpu_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
{
|
||||
switch(reg & 0x07)
|
||||
{
|
||||
@ -287,7 +287,7 @@ template<class T> T konami_cpu_device::safe_shift_left(T value, UINT32 shift)
|
||||
// lmul
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::lmul()
|
||||
inline void konami_cpu_device::lmul()
|
||||
{
|
||||
PAIR result;
|
||||
|
||||
@ -313,7 +313,7 @@ ATTR_FORCE_INLINE void konami_cpu_device::lmul()
|
||||
// divx
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::divx()
|
||||
inline void konami_cpu_device::divx()
|
||||
{
|
||||
UINT16 result;
|
||||
UINT8 remainder;
|
||||
@ -357,7 +357,7 @@ void konami_cpu_device::set_lines(UINT8 data)
|
||||
// execute_one - try to execute a single instruction
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void konami_cpu_device::execute_one()
|
||||
inline void konami_cpu_device::execute_one()
|
||||
{
|
||||
switch(pop_state())
|
||||
{
|
||||
|
@ -456,7 +456,7 @@ const char *m6809_base_device::inputnum_string(int inputnum)
|
||||
// read_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE m6809_base_device::exgtfr_register m6809_base_device::read_exgtfr_register(UINT8 reg)
|
||||
m6809_base_device::exgtfr_register m6809_base_device::read_exgtfr_register(UINT8 reg)
|
||||
{
|
||||
exgtfr_register result;
|
||||
result.byte_value = 0xFF;
|
||||
@ -483,7 +483,7 @@ ATTR_FORCE_INLINE m6809_base_device::exgtfr_register m6809_base_device::read_exg
|
||||
// write_exgtfr_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void m6809_base_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
void m6809_base_device::write_exgtfr_register(UINT8 reg, m6809_base_device::exgtfr_register value)
|
||||
{
|
||||
switch(reg & 0x0F)
|
||||
{
|
||||
@ -516,7 +516,7 @@ void m6809_base_device::log_illegal()
|
||||
// execute_one - try to execute a single instruction
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void m6809_base_device::execute_one()
|
||||
void m6809_base_device::execute_one()
|
||||
{
|
||||
switch(pop_state())
|
||||
{
|
||||
|
@ -147,27 +147,27 @@ protected:
|
||||
devcb_write_line m_lic_func; // LIC pin on the 6809E
|
||||
|
||||
// eat cycles
|
||||
ATTR_FORCE_INLINE void eat(int cycles) { m_icount -= cycles; }
|
||||
inline void eat(int cycles) { m_icount -= cycles; }
|
||||
void eat_remaining();
|
||||
|
||||
// read a byte from given memory location
|
||||
ATTR_FORCE_INLINE UINT8 read_memory(UINT16 address) { eat(1); return m_addrspace[AS_PROGRAM]->read_byte(address); }
|
||||
inline UINT8 read_memory(UINT16 address) { eat(1); return m_addrspace[AS_PROGRAM]->read_byte(address); }
|
||||
|
||||
// write a byte to given memory location
|
||||
ATTR_FORCE_INLINE void write_memory(UINT16 address, UINT8 data) { eat(1); m_addrspace[AS_PROGRAM]->write_byte(address, data); }
|
||||
inline void write_memory(UINT16 address, UINT8 data) { eat(1); m_addrspace[AS_PROGRAM]->write_byte(address, data); }
|
||||
|
||||
// read_opcode() is like read_memory() except it is used for reading opcodes. In the case of a system
|
||||
// with memory mapped I/O, this function can be used to greatly speed up emulation.
|
||||
ATTR_FORCE_INLINE UINT8 read_opcode(UINT16 address) { eat(1); return m_direct->read_decrypted_byte(address); }
|
||||
inline UINT8 read_opcode(UINT16 address) { eat(1); return m_direct->read_decrypted_byte(address); }
|
||||
|
||||
// read_opcode_arg() is identical to read_opcode() except it is used for reading opcode arguments. This
|
||||
// difference can be used to support systems that use different encoding mechanisms for opcodes
|
||||
// and opcode arguments.
|
||||
ATTR_FORCE_INLINE UINT8 read_opcode_arg(UINT16 address) { eat(1); return m_direct->read_raw_byte(address); }
|
||||
inline UINT8 read_opcode_arg(UINT16 address) { eat(1); return m_direct->read_raw_byte(address); }
|
||||
|
||||
// read_opcode() and bump the program counter
|
||||
ATTR_FORCE_INLINE UINT8 read_opcode() { return read_opcode(m_pc.w++); }
|
||||
ATTR_FORCE_INLINE UINT8 read_opcode_arg() { return read_opcode_arg(m_pc.w++); }
|
||||
inline UINT8 read_opcode() { return read_opcode(m_pc.w++); }
|
||||
inline UINT8 read_opcode_arg() { return read_opcode_arg(m_pc.w++); }
|
||||
|
||||
// state stack - implemented as a UINT32
|
||||
void push_state(UINT8 state) { m_state = (m_state << 8) | state; }
|
||||
@ -219,15 +219,15 @@ protected:
|
||||
template<class T> T set_flags(UINT8 mask, T r);
|
||||
|
||||
// branch conditions
|
||||
ATTR_FORCE_INLINE bool cond_hi() { return !(m_cc & CC_ZC); } // BHI/BLS
|
||||
ATTR_FORCE_INLINE bool cond_cc() { return !(m_cc & CC_C); } // BCC/BCS
|
||||
ATTR_FORCE_INLINE bool cond_ne() { return !(m_cc & CC_Z); } // BNE/BEQ
|
||||
ATTR_FORCE_INLINE bool cond_vc() { return !(m_cc & CC_V); } // BVC/BVS
|
||||
ATTR_FORCE_INLINE bool cond_pl() { return !(m_cc & CC_N); } // BPL/BMI
|
||||
ATTR_FORCE_INLINE bool cond_ge() { return (m_cc & CC_N ? true : false) == (m_cc & CC_V ? true : false); } // BGE/BLT
|
||||
ATTR_FORCE_INLINE bool cond_gt() { return cond_ge() && !(m_cc & CC_Z); } // BGT/BLE
|
||||
ATTR_FORCE_INLINE void set_cond(bool cond) { m_cond = cond; }
|
||||
ATTR_FORCE_INLINE bool branch_taken() { return m_cond; }
|
||||
inline bool cond_hi() { return !(m_cc & CC_ZC); } // BHI/BLS
|
||||
inline bool cond_cc() { return !(m_cc & CC_C); } // BCC/BCS
|
||||
inline bool cond_ne() { return !(m_cc & CC_Z); } // BNE/BEQ
|
||||
inline bool cond_vc() { return !(m_cc & CC_V); } // BVC/BVS
|
||||
inline bool cond_pl() { return !(m_cc & CC_N); } // BPL/BMI
|
||||
inline bool cond_ge() { return (m_cc & CC_N ? true : false) == (m_cc & CC_V ? true : false); } // BGE/BLT
|
||||
inline bool cond_gt() { return cond_ge() && !(m_cc & CC_Z); } // BGT/BLE
|
||||
inline void set_cond(bool cond) { m_cond = cond; }
|
||||
inline bool branch_taken() { return m_cond; }
|
||||
|
||||
// interrupt registers
|
||||
bool firq_saves_entire_state() { return false; }
|
||||
@ -235,8 +235,8 @@ protected:
|
||||
UINT16 entire_state_registers() { return 0xFF; }
|
||||
|
||||
// miscellaneous
|
||||
exgtfr_register read_exgtfr_register(UINT8 reg);
|
||||
void write_exgtfr_register(UINT8 reg, exgtfr_register value);
|
||||
inline exgtfr_register read_exgtfr_register(UINT8 reg);
|
||||
inline void write_exgtfr_register(UINT8 reg, exgtfr_register value);
|
||||
bool is_register_addressing_mode();
|
||||
bool is_ea_addressing_mode() { return m_addressing_mode == ADDRESSING_MODE_EA; }
|
||||
UINT16 get_pending_interrupt();
|
||||
@ -255,7 +255,7 @@ private:
|
||||
int m_clock_divider;
|
||||
|
||||
// functions
|
||||
void execute_one();
|
||||
inline void execute_one();
|
||||
const char *inputnum_string(int inputnum);
|
||||
};
|
||||
|
||||
|
@ -69,4 +69,8 @@ UINT16 i8xc196_device::io_r16(UINT8 adr)
|
||||
return data;
|
||||
}
|
||||
|
||||
void i8xc196_device::do_exec_partial()
|
||||
{
|
||||
}
|
||||
|
||||
#include "cpu/mcs96/i8xc196.inc"
|
||||
|
@ -23,7 +23,6 @@ public:
|
||||
virtual void do_exec_full();
|
||||
virtual void do_exec_partial();
|
||||
|
||||
virtual void next(int cycles);
|
||||
virtual void io_w8(UINT8 adr, UINT8 data);
|
||||
virtual void io_w16(UINT8 adr, UINT16 data);
|
||||
virtual UINT8 io_r8(UINT8 adr);
|
||||
|
@ -30,7 +30,7 @@ ADDRESS_MAP_END
|
||||
|
||||
// device definitions
|
||||
m58846_device::m58846_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: melps4_cpu_device(mconfig, M58846, "M58846", tag, owner, clock, 11, ADDRESS_MAP_NAME(program_2kx9), 7, ADDRESS_MAP_NAME(data_128x4), "m58846", __FILE__)
|
||||
: melps4_cpu_device(mconfig, M58846, "M58846", tag, owner, clock, 11, ADDRESS_MAP_NAME(program_2kx9), 7, ADDRESS_MAP_NAME(data_128x4), 12 /* number of D pins */, 2 /* subroutine page */, 1 /* interrupt page */, "m58846", __FILE__)
|
||||
{ }
|
||||
|
||||
|
||||
@ -50,10 +50,6 @@ offs_t m58846_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *o
|
||||
void m58846_device::device_start()
|
||||
{
|
||||
melps4_cpu_device::device_start();
|
||||
|
||||
// set fixed state
|
||||
m_sm_page = 2;
|
||||
m_int_page = 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -75,6 +75,21 @@ void melps4_cpu_device::device_start()
|
||||
m_data = &space(AS_DATA);
|
||||
m_prgmask = (1 << m_prgwidth) - 1;
|
||||
m_datamask = (1 << m_datawidth) - 1;
|
||||
m_d_mask = (1 << m_d_pins) - 1;
|
||||
|
||||
// resolve callbacks
|
||||
m_read_k.resolve_safe(0);
|
||||
m_read_d.resolve_safe(0);
|
||||
m_read_s.resolve_safe(0);
|
||||
m_read_f.resolve_safe(0);
|
||||
m_read_t.resolve_safe(0);
|
||||
|
||||
m_write_d.resolve_safe();
|
||||
m_write_s.resolve_safe();
|
||||
m_write_f.resolve_safe();
|
||||
m_write_g.resolve_safe();
|
||||
m_write_u.resolve_safe();
|
||||
m_write_t.resolve_safe();
|
||||
|
||||
// zerofill
|
||||
m_pc = 0;
|
||||
@ -83,6 +98,10 @@ void melps4_cpu_device::device_start()
|
||||
m_op = 0;
|
||||
m_prev_op = 0;
|
||||
m_bitmask = 0;
|
||||
|
||||
m_port_d = 0;
|
||||
m_port_s = 0;
|
||||
m_port_f = 0;
|
||||
|
||||
m_sm = m_sms = false;
|
||||
m_ba_flag = false;
|
||||
@ -115,6 +134,10 @@ void melps4_cpu_device::device_start()
|
||||
save_item(NAME(m_prev_op));
|
||||
save_item(NAME(m_bitmask));
|
||||
|
||||
save_item(NAME(m_port_d));
|
||||
save_item(NAME(m_port_s));
|
||||
save_item(NAME(m_port_f));
|
||||
|
||||
save_item(NAME(m_sm));
|
||||
save_item(NAME(m_sms));
|
||||
save_item(NAME(m_ba_flag));
|
||||
@ -181,6 +204,88 @@ void melps4_cpu_device::device_reset()
|
||||
|
||||
m_v = 0;
|
||||
m_w = 0;
|
||||
|
||||
// clear ports
|
||||
write_d_pin(MELPS4_PORTD_CLR, 0);
|
||||
write_gen_port(MELPS4_PORTS, 0);
|
||||
write_gen_port(MELPS4_PORTF, 0);
|
||||
write_gen_port(MELPS4_PORTG, 0);
|
||||
write_gen_port(MELPS4_PORTU, 0);
|
||||
m_write_t(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// i/o handling
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 melps4_cpu_device::read_gen_port(int port)
|
||||
{
|
||||
// input generic port
|
||||
switch (port)
|
||||
{
|
||||
case MELPS4_PORTS:
|
||||
return m_port_s | m_read_s(port, 0xff);
|
||||
case MELPS4_PORTF:
|
||||
return m_port_f | (m_read_f(port, 0xff) & 0xf);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::write_gen_port(int port, UINT8 data)
|
||||
{
|
||||
// output generic port
|
||||
switch (port)
|
||||
{
|
||||
case MELPS4_PORTS:
|
||||
m_port_s = data;
|
||||
m_write_s(port, data, 0xff);
|
||||
break;
|
||||
case MELPS4_PORTF:
|
||||
m_port_f = data & 0xf;
|
||||
m_write_f(port, data & 0xf, 0xff);
|
||||
break;
|
||||
case MELPS4_PORTG:
|
||||
m_write_g(port, data & 0xf, 0xff);
|
||||
break;
|
||||
case MELPS4_PORTU:
|
||||
m_write_u(port, data & 1, 0xff);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int melps4_cpu_device::read_d_pin(int bit)
|
||||
{
|
||||
// read port D, return state of selected pin
|
||||
bit &= 0xf;
|
||||
UINT16 d = (m_port_d | m_read_d(bit, 0xffff)) & m_d_mask;
|
||||
return d >> bit & 1;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::write_d_pin(int bit, int state)
|
||||
{
|
||||
// clear all port D pins
|
||||
if (bit == MELPS4_PORTD_CLR)
|
||||
{
|
||||
m_port_d = 0;
|
||||
m_write_d(bit, 0, 0xffff);
|
||||
}
|
||||
|
||||
// set/reset one port D pin
|
||||
else
|
||||
{
|
||||
bit &= 0xf;
|
||||
m_port_d = ((m_port_d & (~(1 << bit))) | (state << bit)) & m_d_mask;
|
||||
m_write_d(bit, m_port_d, 0xffff);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -12,6 +12,58 @@
|
||||
#include "emu.h"
|
||||
|
||||
|
||||
// I/O ports setup
|
||||
|
||||
// K input or A/D input port, up to 16 pins
|
||||
#define MCFG_MELPS4_READ_K_CB(_devcb) \
|
||||
melps4_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// D discrete I/O port, up to 16 pins - offset 0-15 for bit, 16 for all pins clear
|
||||
#define MCFG_MELPS4_READ_D_CB(_devcb) \
|
||||
melps4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb);
|
||||
#define MCFG_MELPS4_WRITE_D_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// 8-bit S generic I/O port
|
||||
#define MCFG_MELPS4_READ_S_CB(_devcb) \
|
||||
melps4_cpu_device::set_read_s_callback(*device, DEVCB_##_devcb);
|
||||
#define MCFG_MELPS4_WRITE_S_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_s_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// 4-bit F generic I/O port
|
||||
#define MCFG_MELPS4_READ_F_CB(_devcb) \
|
||||
melps4_cpu_device::set_read_f_callback(*device, DEVCB_##_devcb);
|
||||
#define MCFG_MELPS4_WRITE_F_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// 4-bit G generic output port
|
||||
#define MCFG_MELPS4_WRITE_G_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// 1-bit U generic output port
|
||||
#define MCFG_MELPS4_WRITE_U_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_u_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
// T timer I/O pin
|
||||
#define MCFG_MELPS4_READ_T_CB(_devcb) \
|
||||
melps4_cpu_device::set_read_t_callback(*device, DEVCB_##_devcb);
|
||||
#define MCFG_MELPS4_WRITE_T_CB(_devcb) \
|
||||
melps4_cpu_device::set_write_t_callback(*device, DEVCB_##_devcb);
|
||||
|
||||
|
||||
#define MELPS4_PORTD_CLR 16
|
||||
|
||||
// only generic ports here (S is 8-bit)
|
||||
enum
|
||||
{
|
||||
MELPS4_PORTS = 0,
|
||||
MELPS4_PORTF = 2,
|
||||
MELPS4_PORTG,
|
||||
MELPS4_PORTU
|
||||
};
|
||||
|
||||
|
||||
|
||||
// pinout reference
|
||||
|
||||
/*
|
||||
@ -45,20 +97,46 @@ class melps4_cpu_device : public cpu_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
melps4_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
|
||||
melps4_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, int d_pins, UINT8 sm_page, UINT8 int_page, const char *shortname, const char *source)
|
||||
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
, m_program_config("program", ENDIANNESS_LITTLE, 16, prgwidth, -1, program)
|
||||
, m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data)
|
||||
, m_prgwidth(prgwidth)
|
||||
, m_datawidth(datawidth)
|
||||
, m_stack_levels(3)
|
||||
, m_sm_page(14)
|
||||
, m_int_page(12)
|
||||
, m_d_pins(d_pins)
|
||||
, m_sm_page(sm_page)
|
||||
, m_int_page(int_page)
|
||||
, m_xami_mask(0xf)
|
||||
, m_sp_mask(0x7<<4)
|
||||
, m_ba_op(0x01)
|
||||
, m_stack_levels(3)
|
||||
, m_read_k(*this)
|
||||
, m_read_d(*this)
|
||||
, m_read_s(*this)
|
||||
, m_read_f(*this)
|
||||
, m_read_t(*this)
|
||||
, m_write_d(*this)
|
||||
, m_write_s(*this)
|
||||
, m_write_f(*this)
|
||||
, m_write_g(*this)
|
||||
, m_write_u(*this)
|
||||
, m_write_t(*this)
|
||||
{ }
|
||||
|
||||
// static configuration helpers
|
||||
template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_read_s_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_read_f_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_read_t_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_read_t.set_callback(object); }
|
||||
|
||||
template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_write_s_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_write_f_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_write_u_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(object); }
|
||||
template<class _Object> static devcb_base &set_write_t_callback(device_t &device, _Object object) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(object); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
@ -89,17 +167,19 @@ protected:
|
||||
int m_icount;
|
||||
|
||||
// fixed settings or mask options that differ between MCU type
|
||||
int m_prgwidth; // number of bits and bitmask for ROM/RAM size
|
||||
int m_prgwidth; // number of bits and bitmask for ROM/RAM size: see melps4.c for info
|
||||
int m_datawidth; // "
|
||||
int m_prgmask; // "
|
||||
int m_datamask; // "
|
||||
int m_d_pins; // number of D port pins and bitmask: 11 on '40,'41,'42,'44, 8 on '43, 12 on '45,'46, 16 on '47
|
||||
int m_d_mask; // "
|
||||
|
||||
UINT8 m_stack_levels; // 3 levels on MELPS 4, 12 levels on MELPS 41/42
|
||||
UINT8 m_sm_page; // subroutine default page: 14 on '40 to '44, 2 on '45,'46, 0 on '47
|
||||
UINT8 m_int_page; // interrupt routine page: 12 on '40 to '44, 1 on '45,'46, 2 on '47
|
||||
UINT8 m_xami_mask; // mask option for XAMI opcode on '40,'41,'45 (0xf for others)
|
||||
UINT16 m_sp_mask; // SP opcode location(middle 4 bits): 7 on '40 to '46, 3 on '47
|
||||
UINT16 m_ba_op; // BA opcode location: 1 on '40 to '46, N/A on '47
|
||||
UINT8 m_stack_levels; // 3 levels on MELPS 4, 12 levels on MELPS 41/42
|
||||
|
||||
// internal state, misc regs
|
||||
UINT16 m_pc; // program counter (11 or 10-bit)
|
||||
@ -108,6 +188,10 @@ protected:
|
||||
UINT16 m_op;
|
||||
UINT16 m_prev_op;
|
||||
UINT8 m_bitmask; // opcode bit argument
|
||||
|
||||
UINT16 m_port_d; // last written port data
|
||||
UINT8 m_port_s; // "
|
||||
UINT8 m_port_f; // "
|
||||
|
||||
bool m_sm, m_sms; // subroutine mode flag + stack
|
||||
bool m_ba_flag; // temp flag indicates BA opcode was executed
|
||||
@ -133,6 +217,25 @@ protected:
|
||||
UINT8 m_v; // timer control V
|
||||
UINT8 m_w; // timer control W
|
||||
|
||||
// i/o handlers
|
||||
devcb_read16 m_read_k;
|
||||
devcb_read16 m_read_d;
|
||||
devcb_read8 m_read_s;
|
||||
devcb_read8 m_read_f;
|
||||
devcb_read_line m_read_t;
|
||||
|
||||
devcb_write16 m_write_d;
|
||||
devcb_write8 m_write_s;
|
||||
devcb_write8 m_write_f;
|
||||
devcb_write8 m_write_g;
|
||||
devcb_write8 m_write_u;
|
||||
devcb_write_line m_write_t;
|
||||
|
||||
UINT8 read_gen_port(int port);
|
||||
void write_gen_port(int port, UINT8 data);
|
||||
int read_d_pin(int bit);
|
||||
void write_d_pin(int bit, int state);
|
||||
|
||||
// misc internal helpers
|
||||
UINT8 ram_r();
|
||||
void ram_w(UINT8 data);
|
||||
|
@ -529,43 +529,44 @@ void melps4_cpu_device::op_rti()
|
||||
void melps4_cpu_device::op_cld()
|
||||
{
|
||||
// CLD: clear port D
|
||||
op_illegal();
|
||||
write_d_pin(MELPS4_PORTD_CLR, 0);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_cls()
|
||||
{
|
||||
// CLS: clear port S
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTS, 0);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_clds()
|
||||
{
|
||||
// CLDS: CLD, CLS
|
||||
op_illegal();
|
||||
op_cld();
|
||||
op_cls();
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_sd()
|
||||
{
|
||||
// SD: set port D bit designated by Y
|
||||
op_illegal();
|
||||
write_d_pin(m_y, 1);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_rd()
|
||||
{
|
||||
// RD: reset port D bit designated by Y
|
||||
op_illegal();
|
||||
write_d_pin(m_y, 0);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_szd()
|
||||
{
|
||||
// SZD: skip next if port D bit designated by Y is 0
|
||||
op_illegal();
|
||||
m_skip = !read_d_pin(m_y);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_osab()
|
||||
{
|
||||
// OSAB: output A and B to port S
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTS, m_b << 4 | m_a);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_ospa()
|
||||
@ -577,49 +578,50 @@ void melps4_cpu_device::op_ospa()
|
||||
void melps4_cpu_device::op_ose()
|
||||
{
|
||||
// OSE: output E to port S
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTS, m_e);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_ias()
|
||||
{
|
||||
// IAS i: transfer port S(hi/lo) to A
|
||||
op_illegal();
|
||||
int shift = (m_op & 1) ? 0 : 4;
|
||||
m_a = read_gen_port(MELPS4_PORTS) >> shift & 0xf;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_ofa()
|
||||
{
|
||||
// OFA: output A to port F
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTF, m_a);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_iaf()
|
||||
{
|
||||
// IAF: input port F to A
|
||||
op_illegal();
|
||||
m_a = read_gen_port(MELPS4_PORTF);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_oga()
|
||||
{
|
||||
// OGA: output A to port G
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTG, m_a);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_iak()
|
||||
{
|
||||
// IAK: input port K to A
|
||||
op_illegal();
|
||||
m_a = m_read_k(0, 0xffff) & 0xf;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_szk()
|
||||
{
|
||||
// SZK j: skip next if port K bit is reset
|
||||
op_illegal();
|
||||
m_skip = !(m_read_k(0, 0xffff) & m_bitmask);
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_su()
|
||||
{
|
||||
// SU/RU: set/reset port U
|
||||
op_illegal();
|
||||
write_gen_port(MELPS4_PORTU, m_op & 1);
|
||||
}
|
||||
|
||||
|
||||
@ -628,15 +630,15 @@ void melps4_cpu_device::op_su()
|
||||
void melps4_cpu_device::op_ei()
|
||||
{
|
||||
// EI: enable interrupt flag
|
||||
m_inte = 1;
|
||||
m_prohibit_irq = true;
|
||||
m_inte = 1;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_di()
|
||||
{
|
||||
// DI: disable interrupt flag
|
||||
m_inte = 0;
|
||||
m_prohibit_irq = true;
|
||||
m_inte = 0;
|
||||
}
|
||||
|
||||
void melps4_cpu_device::op_inth()
|
||||
|
@ -57,6 +57,15 @@
|
||||
#include "pic16c62x.h"
|
||||
|
||||
|
||||
const device_type PIC16C620 = &device_creator<pic16c620_device>;
|
||||
const device_type PIC16C620A = &device_creator<pic16c620a_device>;
|
||||
const device_type PIC16C621 = &device_creator<pic16c621_device>;
|
||||
const device_type PIC16C621A = &device_creator<pic16c621a_device>;
|
||||
const device_type PIC16C622 = &device_creator<pic16c622_device>;
|
||||
const device_type PIC16C622A = &device_creator<pic16c622a_device>;
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Internal Memory Map
|
||||
****************************************************************************/
|
||||
|
@ -54,17 +54,21 @@ public:
|
||||
device_delegate(const basetype &src) : basetype(src), device_delegate_helper(src.m_device_name) { }
|
||||
device_delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object), device_delegate_helper(src.m_device_name) { }
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { }
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { }
|
||||
#endif
|
||||
device_delegate &operator=(const thistype &src) { *static_cast<basetype *>(this) = src; m_device_name = src.m_device_name; return *this; }
|
||||
|
||||
// provide additional constructors that take a device name string
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, const char *devname) : basetype(funcptr, name, (_FunctionClass *)0), device_delegate_helper(devname) { }
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, const char *devname, _FunctionClass *object) : basetype(funcptr, name, (_FunctionClass *)0), device_delegate_helper(devname) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, const char *devname, _FunctionClass *object) : basetype(funcptr, name, (_FunctionClass *)0), device_delegate_helper(devname) { }
|
||||
template<class _FunctionClass> device_delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, const char *devname, _FunctionClass *object) : basetype(funcptr, name, (_FunctionClass *)0), device_delegate_helper(devname) { }
|
||||
device_delegate(typename basetype::template traits<device_t>::static_func_type funcptr, const char *name) : basetype(funcptr, name, (device_t *)0), device_delegate_helper(NULL) { }
|
||||
device_delegate(typename basetype::template traits<device_t>::static_ref_func_type funcptr, const char *name) : basetype(funcptr, name, (device_t *)0), device_delegate_helper(NULL) { }
|
||||
#endif
|
||||
|
||||
// and constructors that provide a search root
|
||||
device_delegate(const thistype &src, device_t &search_root) : basetype(src), device_delegate_helper(src.m_device_name) { bind_relative_to(search_root); }
|
||||
|
@ -23,8 +23,6 @@ const device_type MPCC68561 = &device_creator<mpcc68561_t>;
|
||||
|
||||
#define LOG_MPCC (1)
|
||||
|
||||
#if 0 // future
|
||||
|
||||
/***************************************************************************
|
||||
IMPLEMENTATION
|
||||
***************************************************************************/
|
||||
@ -481,7 +479,3 @@ WRITE8_MEMBER( mpcc68561_t::reg_w )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#endif
|
||||
|
@ -9,6 +9,7 @@ const device_type FD1781x = &device_creator<fd1781_t>;
|
||||
const device_type FD1791x = &device_creator<fd1791_t>;
|
||||
const device_type FD1792x = &device_creator<fd1792_t>;
|
||||
const device_type FD1793x = &device_creator<fd1793_t>;
|
||||
const device_type KR1818VG93x = &device_creator<kr1818vg93_t>;
|
||||
const device_type FD1794x = &device_creator<fd1794_t>;
|
||||
const device_type FD1795x = &device_creator<fd1795_t>;
|
||||
const device_type FD1797x = &device_creator<fd1797_t>;
|
||||
@ -903,12 +904,17 @@ void wd_fdc_t::interrupt_start()
|
||||
status_type_1 = true;
|
||||
}
|
||||
|
||||
if(!(command & 0x0f)) {
|
||||
intrq_cond = 0;
|
||||
} else if ((command & 0x0f) > 8) { // assume I_IMM is set only if condition equal to 8 but not more than, Spectrum's BetaDisk require this
|
||||
intrq_cond = 0;
|
||||
int intcond = command & 0x0f;
|
||||
if (!nonsticky_immint) {
|
||||
if(intcond == 0)
|
||||
intrq_cond = 0;
|
||||
else
|
||||
intrq_cond = (intrq_cond & I_IMM) | intcond;
|
||||
} else {
|
||||
intrq_cond = (intrq_cond & I_IMM) | (command & 0x0f);
|
||||
if (intcond < 8)
|
||||
intrq_cond = intcond;
|
||||
else
|
||||
intrq_cond = 0;
|
||||
}
|
||||
|
||||
if(command & I_IMM) {
|
||||
@ -2394,6 +2400,7 @@ fd1771_t::fd1771_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1771_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2418,6 +2425,7 @@ fd1781_t::fd1781_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1781_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2444,6 +2452,7 @@ fd1791_t::fd1791_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1792x, "FD1792", tag, owner, clock, "fd1792", __FILE__)
|
||||
@ -2459,6 +2468,7 @@ fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1793x, "FD1793", tag, owner, clock, "fd1793", __FILE__)
|
||||
@ -2474,6 +2484,23 @@ fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
kr1818vg93_t::kr1818vg93_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, KR1818VG93x, "KR1818VG93", tag, owner, clock, "kr1818vg93", __FILE__)
|
||||
{
|
||||
step_times = fd179x_step_times;
|
||||
delay_register_commit = 4;
|
||||
delay_command_commit = 12;
|
||||
disable_mfm = false;
|
||||
has_enmf = false;
|
||||
inverted_bus = false;
|
||||
side_control = false;
|
||||
side_compare = true;
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = true;
|
||||
}
|
||||
|
||||
fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1794x, "FD1794", tag, owner, clock, "fd1794", __FILE__)
|
||||
@ -2489,6 +2516,7 @@ fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1795x, "FD1795", tag, owner, clock, "fd1795", __FILE__)
|
||||
@ -2504,6 +2532,7 @@ fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1795_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2527,6 +2556,7 @@ fd1797_t::fd1797_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1797_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2550,6 +2580,7 @@ mb8866_t::mb8866_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, MB8876x, "MB8876", tag, owner, clock, "mb8876", __FILE__)
|
||||
@ -2565,6 +2596,7 @@ mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, MB8877x, "MB8877", tag, owner, clock, "mb8877", __FILE__)
|
||||
@ -2580,6 +2612,7 @@ mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1761x, "FD1761", tag, owner, clock, "fd1761", __FILE__)
|
||||
@ -2595,6 +2628,7 @@ fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1763x, "FD1763", tag, owner, clock, "fd1763", __FILE__)
|
||||
@ -2610,6 +2644,7 @@ fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, FD1765x, "FD1765", tag, owner, clock, "fd1765", __FILE__)
|
||||
@ -2625,6 +2660,7 @@ fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1765_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2648,6 +2684,7 @@ fd1767_t::fd1767_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int fd1767_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2671,6 +2708,7 @@ wd2791_t::wd2791_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, WD2793x, "WD2793", tag, owner, clock, "wd2793", __FILE__)
|
||||
@ -2686,6 +2724,7 @@ wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_analog_t(mconfig, WD2795x, "WD2795", tag, owner, clock, "wd2795", __FILE__)
|
||||
@ -2701,6 +2740,7 @@ wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int wd2795_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2724,6 +2764,7 @@ wd2797_t::wd2797_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = true;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int wd2797_t::calc_sector_size(UINT8 size, UINT8 command) const
|
||||
@ -2747,6 +2788,7 @@ wd1770_t::wd1770_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = false;
|
||||
motor_control = true;
|
||||
ready_hooked = false;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : wd_fdc_digital_t(mconfig, WD1772x, "WD1772", tag, owner, clock, "wd1772", __FILE__)
|
||||
@ -2764,6 +2806,7 @@ wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = false;
|
||||
motor_control = true;
|
||||
ready_hooked = false;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
||||
int wd1772_t::settle_time() const
|
||||
@ -2784,4 +2827,5 @@ wd1773_t::wd1773_t(const machine_config &mconfig, const char *tag, device_t *own
|
||||
head_control = false;
|
||||
motor_control = false;
|
||||
ready_hooked = true;
|
||||
nonsticky_immint = false;
|
||||
}
|
||||
|
@ -59,6 +59,9 @@
|
||||
#define MCFG_FD1793x_ADD(_tag, _clock) \
|
||||
MCFG_DEVICE_ADD(_tag, FD1793x, _clock)
|
||||
|
||||
#define MCFG_KR1818VG93x_ADD(_tag, _clock) \
|
||||
MCFG_DEVICE_ADD(_tag, KR1818VG93x, _clock)
|
||||
|
||||
#define MCFG_FD1794x_ADD(_tag, _clock) \
|
||||
MCFG_DEVICE_ADD(_tag, FD1794x, _clock)
|
||||
|
||||
@ -188,6 +191,7 @@ protected:
|
||||
bool head_control;
|
||||
bool motor_control;
|
||||
bool ready_hooked;
|
||||
bool nonsticky_immint;
|
||||
int clock_ratio;
|
||||
const int *step_times;
|
||||
int delay_register_commit;
|
||||
@ -532,6 +536,11 @@ public:
|
||||
fd1793_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
};
|
||||
|
||||
class kr1818vg93_t : public wd_fdc_analog_t {
|
||||
public:
|
||||
kr1818vg93_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
};
|
||||
|
||||
class fd1794_t : public wd_fdc_analog_t {
|
||||
public:
|
||||
fd1794_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
@ -647,6 +656,7 @@ extern const device_type FD1781x;
|
||||
extern const device_type FD1791x;
|
||||
extern const device_type FD1792x;
|
||||
extern const device_type FD1793x;
|
||||
extern const device_type KR1818VG93x;
|
||||
extern const device_type FD1795x;
|
||||
extern const device_type FD1797x;
|
||||
|
||||
|
@ -42,6 +42,15 @@ private:
|
||||
// nld_Q
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
NETLIB_NAME(Q)::NETLIB_NAME(Q)(const family_t afamily)
|
||||
: netlist_device_t(afamily)
|
||||
, m_qtype(BJT_NPN) { }
|
||||
|
||||
NETLIB_NAME(Q)::~NETLIB_NAME(Q)()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
NETLIB_START(Q)
|
||||
{
|
||||
register_param("model", m_model, "");
|
||||
|
@ -38,16 +38,15 @@ public:
|
||||
BJT_PNP
|
||||
};
|
||||
|
||||
ATTR_COLD NETLIB_NAME(Q)(const family_t afamily)
|
||||
: netlist_device_t(afamily)
|
||||
, m_qtype(BJT_NPN) { }
|
||||
NETLIB_NAME(Q)(const family_t afamily);
|
||||
virtual ~NETLIB_NAME(Q)();
|
||||
|
||||
inline q_type qtype() const { return m_qtype; }
|
||||
inline bool is_qtype(q_type atype) const { return m_qtype == atype; }
|
||||
inline void set_qtype(q_type atype) { m_qtype = atype; }
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
ATTR_HOT void update();
|
||||
|
||||
netlist_param_model_t m_model;
|
||||
@ -59,9 +58,11 @@ class NETLIB_NAME(QBJT) : public NETLIB_NAME(Q)
|
||||
{
|
||||
public:
|
||||
|
||||
ATTR_COLD NETLIB_NAME(QBJT)(const family_t afamily)
|
||||
NETLIB_NAME(QBJT)(const family_t afamily)
|
||||
: NETLIB_NAME(Q)(afamily) { }
|
||||
|
||||
virtual ~NETLIB_NAME(QBJT)() { }
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
@ -110,9 +111,9 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
virtual void start();
|
||||
ATTR_HOT virtual void update_param();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void reset();
|
||||
NETLIB_UPDATE_TERMINALSI();
|
||||
|
||||
nl_double m_gB; // base conductance / switch on
|
||||
@ -142,8 +143,8 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
ATTR_HOT void update_param();
|
||||
ATTR_HOT void virtual update();
|
||||
NETLIB_UPDATE_TERMINALSI();
|
||||
|
@ -56,9 +56,9 @@ public:
|
||||
: netlist_device_t(afamily), m_gfac(1.0) { }
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
/* ATTR_COLD */ virtual void update_param();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
virtual void update_param();
|
||||
ATTR_HOT void update();
|
||||
|
||||
ATTR_COLD void start_internal(const nl_double def_RI);
|
||||
@ -112,9 +112,9 @@ public:
|
||||
//: netlist_device_t(afamily), m_gfac(1.0) { }
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
/* ATTR_COLD */ virtual void update_param();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
virtual void update_param();
|
||||
ATTR_HOT void update();
|
||||
|
||||
nl_double m_gfac;
|
||||
@ -156,9 +156,9 @@ public:
|
||||
: NETLIB_NAME(VCCS)(VCVS) { }
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
/* ATTR_COLD */ virtual void update_param();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
virtual void update_param();
|
||||
//ATTR_HOT void update();
|
||||
|
||||
netlist_terminal_t m_OP2;
|
||||
|
@ -20,15 +20,15 @@ public:
|
||||
|
||||
virtual ~netlist_matrix_solver_direct_t();
|
||||
|
||||
/* ATTR_COLD */ virtual void vsetup(netlist_analog_net_t::list_t &nets);
|
||||
/* ATTR_COLD */ virtual void reset() { netlist_matrix_solver_t::reset(); }
|
||||
virtual void vsetup(netlist_analog_net_t::list_t &nets);
|
||||
virtual void reset() { netlist_matrix_solver_t::reset(); }
|
||||
|
||||
ATTR_HOT inline unsigned N() const { if (m_N == 0) return m_dim; else return m_N; }
|
||||
|
||||
ATTR_HOT inline int vsolve_non_dynamic(const bool newton_raphson);
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void add_term(int net_idx, netlist_terminal_t *term);
|
||||
virtual void add_term(int net_idx, netlist_terminal_t *term);
|
||||
|
||||
ATTR_HOT virtual nl_double vsolve();
|
||||
|
||||
|
@ -31,7 +31,7 @@ public:
|
||||
|
||||
virtual ~netlist_matrix_solver_SOR_t() {}
|
||||
|
||||
/* ATTR_COLD */ virtual void log_stats();
|
||||
virtual void log_stats();
|
||||
|
||||
ATTR_HOT inline int vsolve_non_dynamic();
|
||||
protected:
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
|
||||
virtual ~netlist_matrix_solver_SOR_t() {}
|
||||
|
||||
/* ATTR_COLD */ virtual void log_stats();
|
||||
virtual void log_stats();
|
||||
|
||||
ATTR_HOT virtual int vsolve_non_dynamic(const bool newton_raphson);
|
||||
protected:
|
||||
|
@ -36,7 +36,7 @@ public:
|
||||
|
||||
virtual ~netlist_matrix_solver_SOR_mat_t() {}
|
||||
|
||||
/* ATTR_COLD */ virtual void log_stats();
|
||||
virtual void log_stats();
|
||||
|
||||
ATTR_HOT inline int vsolve_non_dynamic(const bool newton_raphson);
|
||||
protected:
|
||||
|
@ -100,9 +100,9 @@ public:
|
||||
};
|
||||
|
||||
ATTR_COLD netlist_matrix_solver_t(const eSolverType type, const netlist_solver_parameters_t *params);
|
||||
/* ATTR_COLD */ virtual ~netlist_matrix_solver_t();
|
||||
virtual ~netlist_matrix_solver_t();
|
||||
|
||||
/* ATTR_COLD */ virtual void vsetup(netlist_analog_net_t::list_t &nets) = 0;
|
||||
virtual void vsetup(netlist_analog_net_t::list_t &nets) = 0;
|
||||
|
||||
template<class C>
|
||||
void solve_base(C *p);
|
||||
@ -120,11 +120,11 @@ public:
|
||||
|
||||
/* netdevice functions */
|
||||
ATTR_HOT virtual void update();
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
|
||||
ATTR_COLD int get_net_idx(netlist_net_t *net);
|
||||
/* ATTR_COLD */ virtual void log_stats() {};
|
||||
virtual void log_stats() {};
|
||||
|
||||
inline eSolverType type() const { return m_type; }
|
||||
|
||||
@ -136,7 +136,7 @@ protected:
|
||||
// should return next time step
|
||||
ATTR_HOT virtual nl_double vsolve() = 0;
|
||||
|
||||
/* ATTR_COLD */ virtual void add_term(int net_idx, netlist_terminal_t *term) = 0;
|
||||
virtual void add_term(int net_idx, netlist_terminal_t *term) = 0;
|
||||
|
||||
plist_t<netlist_analog_net_t *> m_nets;
|
||||
plist_t<netlist_analog_output_t *> m_inps;
|
||||
@ -173,7 +173,7 @@ public:
|
||||
NETLIB_NAME(solver)()
|
||||
: netlist_device_t() { }
|
||||
|
||||
/* ATTR_COLD */ virtual ~NETLIB_NAME(solver)();
|
||||
virtual ~NETLIB_NAME(solver)();
|
||||
|
||||
ATTR_COLD void post_start();
|
||||
ATTR_COLD void stop();
|
||||
|
@ -122,8 +122,8 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
ATTR_HOT void update();
|
||||
|
||||
private:
|
||||
@ -144,8 +144,8 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
ATTR_HOT void update();
|
||||
};
|
||||
|
||||
@ -193,9 +193,9 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
/* ATTR_COLD */ virtual void update_param();
|
||||
virtual void start();
|
||||
virtual void reset();
|
||||
virtual void update_param();
|
||||
ATTR_HOT void update();
|
||||
|
||||
netlist_param_double_t m_C;
|
||||
@ -282,8 +282,8 @@ public:
|
||||
NETLIB_UPDATE_TERMINALSI();
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void start();
|
||||
/* ATTR_COLD */ virtual void update_param();
|
||||
virtual void start();
|
||||
virtual void update_param();
|
||||
ATTR_HOT void update();
|
||||
|
||||
netlist_param_model_t m_model;
|
||||
|
@ -18,7 +18,7 @@
|
||||
class NETLIB_NAME(_name) : public net_signal_t<_num_input, _check, _invert> \
|
||||
{ \
|
||||
public: \
|
||||
ATTR_COLD NETLIB_NAME(_name) () \
|
||||
NETLIB_NAME(_name) () \
|
||||
: net_signal_t<_num_input, _check, _invert>() { } \
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
ATTR_COLD void start()
|
||||
void start()
|
||||
{
|
||||
const char *sIN[8] = { "A", "B", "C", "D", "E", "F", "G", "H" };
|
||||
|
||||
@ -47,7 +47,7 @@ public:
|
||||
save(NLNAME(m_active));
|
||||
}
|
||||
|
||||
ATTR_COLD void reset()
|
||||
void reset()
|
||||
{
|
||||
m_Q[0].initial(0);
|
||||
m_active = 1;
|
||||
|
@ -177,7 +177,7 @@ NETLIB_UPDATE_PARAM(analog_input)
|
||||
// nld_d_to_a_proxy
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
ATTR_COLD void nld_d_to_a_proxy::start()
|
||||
void nld_d_to_a_proxy::start()
|
||||
{
|
||||
nld_base_d_to_a_proxy::start();
|
||||
|
||||
@ -192,7 +192,7 @@ ATTR_COLD void nld_d_to_a_proxy::start()
|
||||
m_Q.initial(0.0);
|
||||
}
|
||||
|
||||
ATTR_COLD void nld_d_to_a_proxy::reset()
|
||||
void nld_d_to_a_proxy::reset()
|
||||
{
|
||||
m_RV.do_reset();
|
||||
m_is_timestep = m_RV.m_P.net().as_analog().solver()->is_timestep();
|
||||
|
@ -97,7 +97,7 @@ UINT32 truthtable_desc_t::get_ignored_extended(UINT32 i)
|
||||
// desc
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
ATTR_COLD void truthtable_desc_t::help(unsigned cur, pstring_list_t list,
|
||||
void truthtable_desc_t::help(unsigned cur, pstring_list_t list,
|
||||
UINT64 state,UINT16 val, UINT8 *timing_index)
|
||||
{
|
||||
pstring elem = list[cur].trim();
|
||||
@ -142,7 +142,7 @@ ATTR_COLD void truthtable_desc_t::help(unsigned cur, pstring_list_t list,
|
||||
}
|
||||
}
|
||||
|
||||
ATTR_COLD void truthtable_desc_t::setup(const pstring_list_t &truthtable, UINT32 disabled_ignore)
|
||||
void truthtable_desc_t::setup(const pstring_list_t &truthtable, UINT32 disabled_ignore)
|
||||
{
|
||||
unsigned line = 0;
|
||||
|
||||
|
@ -45,10 +45,10 @@ struct truthtable_desc_t
|
||||
{
|
||||
}
|
||||
|
||||
ATTR_COLD void setup(const pstring_list_t &desc, UINT32 disabled_ignore);
|
||||
void setup(const pstring_list_t &desc, UINT32 disabled_ignore);
|
||||
|
||||
private:
|
||||
ATTR_COLD void help(unsigned cur, pstring_list_t list,
|
||||
void help(unsigned cur, pstring_list_t list,
|
||||
UINT64 state,UINT16 val, UINT8 *timing_index);
|
||||
static unsigned count_bits(UINT32 v);
|
||||
static UINT32 set_bits(UINT32 v, UINT32 b);
|
||||
@ -106,7 +106,7 @@ public:
|
||||
m_desc = desc;
|
||||
}
|
||||
|
||||
/* ATTR_COLD */ virtual void start()
|
||||
virtual void start()
|
||||
{
|
||||
pstring header = m_desc[0];
|
||||
|
||||
@ -164,7 +164,7 @@ public:
|
||||
|
||||
}
|
||||
|
||||
ATTR_COLD void reset()
|
||||
void reset()
|
||||
{
|
||||
m_active = 0;
|
||||
for (unsigned i=0; i<m_NO;i++)
|
||||
@ -174,7 +174,7 @@ public:
|
||||
}
|
||||
|
||||
template<bool doOUT>
|
||||
ATTR_HOT inline void process()
|
||||
inline void process()
|
||||
{
|
||||
netlist_time mt = netlist_time::zero;
|
||||
|
||||
@ -262,7 +262,7 @@ class netlist_base_factory_truthtable_t : public netlist_base_factory_t
|
||||
{
|
||||
NETLIST_PREVENT_COPYING(netlist_base_factory_truthtable_t)
|
||||
public:
|
||||
ATTR_COLD netlist_base_factory_truthtable_t(const pstring &name, const pstring &classname,
|
||||
netlist_base_factory_truthtable_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param)
|
||||
: netlist_base_factory_t(name, classname, def_param)
|
||||
{}
|
||||
@ -275,11 +275,11 @@ class netlist_factory_truthtable_t : public netlist_base_factory_truthtable_t
|
||||
{
|
||||
NETLIST_PREVENT_COPYING(netlist_factory_truthtable_t)
|
||||
public:
|
||||
ATTR_COLD netlist_factory_truthtable_t(const pstring &name, const pstring &classname,
|
||||
netlist_factory_truthtable_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param)
|
||||
: netlist_base_factory_truthtable_t(name, classname, def_param) { }
|
||||
|
||||
ATTR_COLD netlist_device_t *Create()
|
||||
netlist_device_t *Create()
|
||||
{
|
||||
typedef nld_truthtable_t<m_NI, m_NO, has_state> tt_type;
|
||||
netlist_device_t *r = palloc(tt_type, &m_ttbl, m_desc);
|
||||
|
@ -173,7 +173,7 @@ class netlist_core_device_t;
|
||||
#if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF)
|
||||
typedef void (netlist_core_device_t::*net_update_delegate)();
|
||||
#elif ((NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF_CONV) || (NL_PMF_TYPE == NL_PMF_TYPE_INTERNAL))
|
||||
typedef void (*net_update_delegate)(netlist_core_device_t *);
|
||||
typedef MEMBER_ABI void (*net_update_delegate)(netlist_core_device_t *);
|
||||
#endif
|
||||
|
||||
//============================================================
|
||||
@ -248,7 +248,7 @@ typedef void (*net_update_delegate)(netlist_core_device_t *);
|
||||
, _priv)
|
||||
|
||||
#define NETLIB_LOGIC_FAMILY(_fam) \
|
||||
/* ATTR_COLD */ virtual const netlist_logic_family_desc_t *default_logic_family() \
|
||||
virtual const netlist_logic_family_desc_t *default_logic_family() \
|
||||
{ \
|
||||
return &netlist_family_ ## _fam; \
|
||||
}
|
||||
@ -409,9 +409,9 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/* ATTR_COLD */ virtual void reset() = 0;
|
||||
virtual void reset() = 0;
|
||||
// must call parent save_register !
|
||||
/* ATTR_COLD */ virtual void save_register() { };
|
||||
virtual void save_register() { };
|
||||
|
||||
private:
|
||||
pstring m_name;
|
||||
@ -483,7 +483,7 @@ public:
|
||||
ATTR_HOT /* inline */ void update_dev(const UINT32 mask);
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void save_register()
|
||||
virtual void save_register()
|
||||
{
|
||||
save(NLNAME(m_state));
|
||||
netlist_owned_object_t::save_register();
|
||||
@ -537,9 +537,9 @@ public:
|
||||
netlist_terminal_t *m_otherterm;
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void save_register();
|
||||
virtual void save_register();
|
||||
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void reset();
|
||||
private:
|
||||
ATTR_HOT void set_ptr(nl_double *ptr, const nl_double val)
|
||||
{
|
||||
@ -613,7 +613,7 @@ public:
|
||||
ATTR_HOT void activate_lh();
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void reset()
|
||||
virtual void reset()
|
||||
{
|
||||
//netlist_core_terminal_t::reset();
|
||||
set_state(STATE_INP_ACTIVE);
|
||||
@ -637,7 +637,7 @@ public:
|
||||
ATTR_HOT nl_double Q_Analog() const;
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void reset()
|
||||
virtual void reset()
|
||||
{
|
||||
//netlist_core_terminal_t::reset();
|
||||
set_state(STATE_INP_ACTIVE);
|
||||
@ -656,7 +656,7 @@ public:
|
||||
typedef plist_t<netlist_net_t *> list_t;
|
||||
|
||||
ATTR_COLD netlist_net_t(const family_t afamily);
|
||||
/* ATTR_COLD */ virtual ~netlist_net_t();
|
||||
virtual ~netlist_net_t();
|
||||
|
||||
ATTR_COLD void init_object(netlist_base_t &nl, const pstring &aname);
|
||||
|
||||
@ -705,8 +705,8 @@ public:
|
||||
|
||||
protected: //FIXME: needed by current solver code
|
||||
|
||||
/* ATTR_COLD */ virtual void save_register();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void save_register();
|
||||
virtual void reset();
|
||||
|
||||
netlist_sig_t m_new_Q;
|
||||
netlist_sig_t m_cur_Q;
|
||||
@ -736,7 +736,7 @@ public:
|
||||
typedef plist_t<netlist_logic_net_t *> list_t;
|
||||
|
||||
ATTR_COLD netlist_logic_net_t();
|
||||
/* ATTR_COLD */ virtual ~netlist_logic_net_t() { };
|
||||
virtual ~netlist_logic_net_t() { };
|
||||
|
||||
ATTR_HOT netlist_sig_t Q() const
|
||||
{
|
||||
@ -778,8 +778,8 @@ public:
|
||||
|
||||
protected: //FIXME: needed by current solver code
|
||||
|
||||
/* ATTR_COLD */ virtual void save_register();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void save_register();
|
||||
virtual void reset();
|
||||
|
||||
|
||||
private:
|
||||
@ -796,7 +796,7 @@ public:
|
||||
typedef plist_t<netlist_analog_net_t *> list_t;
|
||||
|
||||
ATTR_COLD netlist_analog_net_t();
|
||||
/* ATTR_COLD */ virtual ~netlist_analog_net_t() { };
|
||||
virtual ~netlist_analog_net_t() { };
|
||||
|
||||
ATTR_HOT nl_double Q_Analog() const
|
||||
{
|
||||
@ -815,8 +815,8 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/* ATTR_COLD */ virtual void save_register();
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
virtual void save_register();
|
||||
virtual void reset();
|
||||
|
||||
|
||||
private:
|
||||
@ -841,7 +841,7 @@ public:
|
||||
ATTR_COLD netlist_logic_output_t();
|
||||
|
||||
ATTR_COLD void init_object(netlist_core_device_t &dev, const pstring &aname);
|
||||
/* ATTR_COLD */ virtual void reset()
|
||||
virtual void reset()
|
||||
{
|
||||
set_state(STATE_OUT);
|
||||
}
|
||||
@ -865,7 +865,7 @@ public:
|
||||
ATTR_COLD netlist_analog_output_t();
|
||||
|
||||
ATTR_COLD void init_object(netlist_core_device_t &dev, const pstring &aname);
|
||||
/* ATTR_COLD */ virtual void reset()
|
||||
virtual void reset()
|
||||
{
|
||||
set_state(STATE_OUT);
|
||||
}
|
||||
@ -903,7 +903,7 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/* ATTR_COLD */ virtual void reset() { }
|
||||
virtual void reset() { }
|
||||
|
||||
private:
|
||||
const param_type_t m_param_type;
|
||||
@ -920,7 +920,7 @@ public:
|
||||
ATTR_HOT nl_double Value() const { return m_param; }
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void save_register()
|
||||
virtual void save_register()
|
||||
{
|
||||
save(NLNAME(m_param));
|
||||
netlist_param_t::save_register();
|
||||
@ -942,7 +942,7 @@ public:
|
||||
ATTR_HOT int Value() const { return m_param; }
|
||||
|
||||
protected:
|
||||
/* ATTR_COLD */ virtual void save_register()
|
||||
virtual void save_register()
|
||||
{
|
||||
save(NLNAME(m_param));
|
||||
netlist_param_t::save_register();
|
||||
@ -1005,9 +1005,9 @@ public:
|
||||
|
||||
ATTR_COLD netlist_core_device_t(const family_t afamily);
|
||||
|
||||
/* ATTR_COLD */ virtual ~netlist_core_device_t();
|
||||
virtual ~netlist_core_device_t();
|
||||
|
||||
/* ATTR_COLD */ virtual void init(netlist_base_t &anetlist, const pstring &name);
|
||||
virtual void init(netlist_base_t &anetlist, const pstring &name);
|
||||
ATTR_HOT virtual void update_param() {}
|
||||
|
||||
ATTR_HOT void update_dev()
|
||||
@ -1066,9 +1066,9 @@ public:
|
||||
protected:
|
||||
|
||||
ATTR_HOT virtual void update() { }
|
||||
/* ATTR_COLD */ virtual void start() { }
|
||||
/* ATTR_COLD */ virtual void stop() { } \
|
||||
/* ATTR_COLD */ virtual const netlist_logic_family_desc_t *default_logic_family()
|
||||
virtual void start() { }
|
||||
virtual void stop() { } \
|
||||
virtual const netlist_logic_family_desc_t *default_logic_family()
|
||||
{
|
||||
return &netlist_family_TTL;
|
||||
}
|
||||
@ -1088,9 +1088,9 @@ public:
|
||||
ATTR_COLD netlist_device_t();
|
||||
ATTR_COLD netlist_device_t(const family_t afamily);
|
||||
|
||||
/* ATTR_COLD */ virtual ~netlist_device_t();
|
||||
virtual ~netlist_device_t();
|
||||
|
||||
/* ATTR_COLD */ virtual void init(netlist_base_t &anetlist, const pstring &name);
|
||||
virtual void init(netlist_base_t &anetlist, const pstring &name);
|
||||
|
||||
ATTR_COLD netlist_setup_t &setup();
|
||||
|
||||
@ -1245,12 +1245,12 @@ protected:
|
||||
};
|
||||
|
||||
// any derived netlist must override this ...
|
||||
/* ATTR_COLD */ virtual void verror(const loglevel_e level,
|
||||
virtual void verror(const loglevel_e level,
|
||||
const char *format, va_list ap) const = 0;
|
||||
|
||||
/* from netlist_object */
|
||||
/* ATTR_COLD */ virtual void reset();
|
||||
/* ATTR_COLD */ virtual void save_register();
|
||||
virtual void reset();
|
||||
virtual void save_register();
|
||||
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
// performance
|
||||
|
@ -47,7 +47,7 @@
|
||||
*/
|
||||
|
||||
// This will be autodetected
|
||||
// #define NL_PMF_TYPE 3
|
||||
#define NL_PMF_TYPE 3
|
||||
|
||||
#define NL_PMF_TYPE_VIRTUAL 0
|
||||
#define NL_PMF_TYPE_GNUC_PMF 1
|
||||
|
@ -27,9 +27,9 @@ public:
|
||||
: m_name(name), m_classname(classname), m_def_param(def_param)
|
||||
{}
|
||||
|
||||
/* ATTR_COLD */ virtual ~netlist_base_factory_t() {}
|
||||
virtual ~netlist_base_factory_t() {}
|
||||
|
||||
/* ATTR_COLD */ virtual netlist_device_t *Create() = 0;
|
||||
virtual netlist_device_t *Create() = 0;
|
||||
|
||||
ATTR_COLD const pstring &name() const { return m_name; }
|
||||
ATTR_COLD const pstring &classname() const { return m_classname; }
|
||||
|
@ -128,9 +128,9 @@ public:
|
||||
|
||||
// save state support & mame disasm
|
||||
|
||||
ATTR_COLD const entry_t *listptr() const { return &m_list[0]; }
|
||||
ATTR_HOT int count() const { return m_end - m_list; }
|
||||
ATTR_HOT const entry_t & operator[](const int & index) const { return m_list[index]; }
|
||||
ATTR_COLD const entry_t *listptr() const { return &m_list[1]; }
|
||||
ATTR_HOT int count() const { return m_end - &m_list[1]; }
|
||||
ATTR_HOT const entry_t & operator[](const int & index) const { return m_list[1+index]; }
|
||||
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
// profiling
|
||||
|
@ -50,7 +50,8 @@
|
||||
#if defined(__GNUC__)
|
||||
/* does not work in versions over 4.7.x of 32bit MINGW */
|
||||
#if defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
|
||||
#define PHAS_PMF_INTERNAL 0
|
||||
#define PHAS_PMF_INTERNAL 1
|
||||
#define MEMBER_ABI __thiscall
|
||||
#elif defined(EMSCRIPTEN)
|
||||
#define PHAS_PMF_INTERNAL 0
|
||||
#elif defined(__arm__) || defined(__ARMEL__)
|
||||
@ -62,6 +63,9 @@
|
||||
#define USE_DELEGATE_TYPE PHAS_PMF_INTERNAL 0
|
||||
#endif
|
||||
|
||||
#ifndef MEMBER_ABI
|
||||
#define MEMBER_ABI
|
||||
#endif
|
||||
|
||||
/* not supported in GCC prior to 4.4.x */
|
||||
/* ATTR_HOT and ATTR_COLD cause performance degration in 5.1 */
|
||||
|
413
src/emu/netlist/tools/nl_convert.c
Normal file
413
src/emu/netlist/tools/nl_convert.c
Normal file
@ -0,0 +1,413 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nl_convert.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nl_convert.h"
|
||||
|
||||
#if 0
|
||||
#include <cstddef>
|
||||
#include <cstdarg>
|
||||
|
||||
#include "plib/pstring.h"
|
||||
#include "plib/plists.h"
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------
|
||||
convert - convert a spice netlist
|
||||
-------------------------------------------------*/
|
||||
|
||||
|
||||
void nl_convert_base_t::out(const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
m_buf += pstring(format).vprintf(ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void nl_convert_base_t::add_pin_alias(const pstring &devname, const pstring &name, const pstring &alias)
|
||||
{
|
||||
m_pins.add(palloc(sp_pin_alias_t, devname + "." + name, devname + "." + alias), false);
|
||||
}
|
||||
|
||||
void nl_convert_base_t::add_ext_alias(const pstring &alias)
|
||||
{
|
||||
m_ext_alias.add(alias);
|
||||
}
|
||||
|
||||
void nl_convert_base_t::add_device(const pstring &atype, const pstring &aname, const pstring &amodel)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname, amodel), false);
|
||||
}
|
||||
void nl_convert_base_t::add_device(const pstring &atype, const pstring &aname, double aval)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname, aval), false);
|
||||
}
|
||||
void nl_convert_base_t::add_device(const pstring &atype, const pstring &aname)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname), false);
|
||||
}
|
||||
|
||||
void nl_convert_base_t::add_term(pstring netname, pstring termname)
|
||||
{
|
||||
sp_net_t * net = m_nets.find_by_name(netname);
|
||||
if (net == NULL)
|
||||
{
|
||||
net = palloc(sp_net_t, netname);
|
||||
m_nets.add(net, false);
|
||||
}
|
||||
|
||||
/* if there is a pin alias, translate ... */
|
||||
sp_pin_alias_t *alias = m_pins.find_by_name(termname);
|
||||
|
||||
if (alias != NULL)
|
||||
net->terminals().add(alias->alias());
|
||||
else
|
||||
net->terminals().add(termname);
|
||||
}
|
||||
|
||||
void nl_convert_base_t::dump_nl()
|
||||
{
|
||||
for (int i=0; i<m_ext_alias.size(); i++)
|
||||
{
|
||||
sp_net_t *net = m_nets.find_by_name(m_ext_alias[i]);
|
||||
// use the first terminal ...
|
||||
out("ALIAS(%s, %s)\n", m_ext_alias[i].cstr(), net->terminals()[0].cstr());
|
||||
// if the aliased net only has this one terminal connected ==> don't dump
|
||||
if (net->terminals().size() == 1)
|
||||
net->set_no_export();
|
||||
}
|
||||
for (int i=0; i<devs.size(); i++)
|
||||
{
|
||||
if (devs[i]->has_value())
|
||||
out("%s(%s, %s)\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr(), get_nl_val(devs[i]->value()).cstr());
|
||||
else if (devs[i]->has_model())
|
||||
out("%s(%s, \"%s\")\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr(), devs[i]->model().cstr());
|
||||
else
|
||||
out("%s(%s)\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr());
|
||||
}
|
||||
// print nets
|
||||
for (int i=0; i<m_nets.size(); i++)
|
||||
{
|
||||
sp_net_t * net = m_nets[i];
|
||||
if (!net->is_no_export())
|
||||
{
|
||||
//printf("Net %s\n", net->name().cstr());
|
||||
out("NET_C(%s", net->terminals()[0].cstr() );
|
||||
for (int j=1; j<net->terminals().size(); j++)
|
||||
{
|
||||
out(", %s", net->terminals()[j].cstr() );
|
||||
}
|
||||
out(")\n");
|
||||
}
|
||||
}
|
||||
devs.clear_and_free();
|
||||
m_nets.clear_and_free();
|
||||
m_pins.clear_and_free();
|
||||
m_ext_alias.clear();
|
||||
}
|
||||
|
||||
const pstring nl_convert_base_t::get_nl_val(const double val)
|
||||
{
|
||||
{
|
||||
int i = 0;
|
||||
while (m_sp_units[i].sp_unit != "-" )
|
||||
{
|
||||
if (m_sp_units[i].mult <= nl_math::abs(val))
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
return pstring::sprintf(m_sp_units[i].nl_func.cstr(), val / m_sp_units[i].mult);
|
||||
}
|
||||
}
|
||||
double nl_convert_base_t::get_sp_unit(const pstring &unit)
|
||||
{
|
||||
int i = 0;
|
||||
while (m_sp_units[i].sp_unit != "-")
|
||||
{
|
||||
if (m_sp_units[i].sp_unit == unit)
|
||||
return m_sp_units[i].mult;
|
||||
i++;
|
||||
}
|
||||
fprintf(stderr, "Unit %s unknown\n", unit.cstr());
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
double nl_convert_base_t::get_sp_val(const pstring &sin)
|
||||
{
|
||||
int p = sin.len() - 1;
|
||||
while (p>=0 && (sin.substr(p,1) < "0" || sin.substr(p,1) > "9"))
|
||||
p--;
|
||||
pstring val = sin.substr(0,p + 1);
|
||||
pstring unit = sin.substr(p + 1);
|
||||
|
||||
double ret = get_sp_unit(unit) * val.as_double();
|
||||
//printf("<%s> %s %d ==> %f\n", sin.cstr(), unit.cstr(), p, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
nl_convert_base_t::sp_unit nl_convert_base_t::m_sp_units[] = {
|
||||
{"T", "", 1.0e12 },
|
||||
{"G", "", 1.0e9 },
|
||||
{"MEG", "RES_M(%g)", 1.0e6 },
|
||||
{"k", "RES_K(%g)", 1.0e3 }, /* eagle */
|
||||
{"K", "RES_K(%g)", 1.0e3 },
|
||||
{"", "%g", 1.0e0 },
|
||||
{"M", "CAP_M(%g)", 1.0e-3 },
|
||||
{"u", "CAP_U(%g)", 1.0e-6 }, /* eagle */
|
||||
{"U", "CAP_U(%g)", 1.0e-6 },
|
||||
{"µ", "CAP_U(%g)", 1.0e-6 },
|
||||
{"N", "CAP_N(%g)", 1.0e-9 },
|
||||
{"P", "CAP_P(%g)", 1.0e-12},
|
||||
{"F", "%ge-15", 1.0e-15},
|
||||
|
||||
{"MIL", "%e", 25.4e-6},
|
||||
|
||||
{"-", "%g", 1.0 }
|
||||
};
|
||||
|
||||
|
||||
void nl_convert_spice_t::convert(const pstring &contents)
|
||||
{
|
||||
pstring_list_t spnl(contents, "\n");
|
||||
|
||||
// Add gnd net
|
||||
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_START(dummy)\n");
|
||||
add_term("0", "GND");
|
||||
|
||||
pstring line = "";
|
||||
|
||||
for (std::size_t i=0; i < spnl.size(); i++)
|
||||
{
|
||||
// Basic preprocessing
|
||||
pstring inl = spnl[i].trim().ucase();
|
||||
if (inl.startsWith("+"))
|
||||
line = line + inl.substr(1);
|
||||
else
|
||||
{
|
||||
process_line(line);
|
||||
line = inl;
|
||||
}
|
||||
}
|
||||
process_line(line);
|
||||
dump_nl();
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_END()\n");
|
||||
}
|
||||
|
||||
void nl_convert_spice_t::process_line(const pstring &line)
|
||||
{
|
||||
if (line != "")
|
||||
{
|
||||
pstring_list_t tt(line, " ", true);
|
||||
double val = 0.0;
|
||||
switch (tt[0].cstr()[0])
|
||||
{
|
||||
case ';':
|
||||
out("// %s\n", line.substr(1).cstr());
|
||||
break;
|
||||
case '*':
|
||||
out("// %s\n", line.substr(1).cstr());
|
||||
break;
|
||||
case '.':
|
||||
if (tt[0].equals(".SUBCKT"))
|
||||
{
|
||||
out("NETLIST_START(%s)\n", tt[1].cstr());
|
||||
for (int i=2; i<tt.size(); i++)
|
||||
add_ext_alias(tt[i]);
|
||||
}
|
||||
else if (tt[0].equals(".ENDS"))
|
||||
{
|
||||
dump_nl();
|
||||
out("NETLIST_END()\n");
|
||||
}
|
||||
else
|
||||
out("// %s\n", line.cstr());
|
||||
break;
|
||||
case 'Q':
|
||||
{
|
||||
bool cerr = false;
|
||||
/* check for fourth terminal ... should be numeric net
|
||||
* including "0" or start with "N" (ltspice)
|
||||
*/
|
||||
// FIXME: we need a is_long method ..
|
||||
ATTR_UNUSED int nval =tt[4].as_long(&cerr);
|
||||
if ((!cerr || tt[4].startsWith("N")) && tt.size() > 5)
|
||||
add_device("QBJT", tt[0], tt[5]);
|
||||
else
|
||||
add_device("QBJT", tt[0], tt[4]);
|
||||
add_term(tt[1], tt[0] + ".C");
|
||||
add_term(tt[2], tt[0] + ".B");
|
||||
add_term(tt[3], tt[0] + ".E");
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("RES", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".1");
|
||||
add_term(tt[2], tt[0] + ".2");
|
||||
break;
|
||||
case 'C':
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("CAP", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".1");
|
||||
add_term(tt[2], tt[0] + ".2");
|
||||
break;
|
||||
case 'V':
|
||||
// just simple Voltage sources ....
|
||||
if (tt[2].equals("0"))
|
||||
{
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("ANALOG_INPUT", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".Q");
|
||||
//add_term(tt[2], tt[0] + ".2");
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "Voltage Source %s not connected to GND\n", tt[0].cstr());
|
||||
break;
|
||||
case 'D':
|
||||
// FIXME: Rewrite resistor value
|
||||
add_device("DIODE", tt[0], tt[3]);
|
||||
add_term(tt[1], tt[0] + ".A");
|
||||
add_term(tt[2], tt[0] + ".K");
|
||||
break;
|
||||
case 'U':
|
||||
case 'X':
|
||||
{
|
||||
// FIXME: specific code for KICAD exports
|
||||
// last element is component type
|
||||
// FIXME: Parameter
|
||||
|
||||
pstring xname = tt[0].replace(".", "_");
|
||||
pstring tname = "TTL_" + tt[tt.size()-1] + "_DIP";
|
||||
add_device(tname, xname);
|
||||
for (int i=1; i < tt.size() - 1; i++)
|
||||
{
|
||||
pstring term = pstring::sprintf("%s.%d", xname.cstr(), i);
|
||||
add_term(tt[i], term);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
out("// IGNORED %s: %s\n", tt[0].cstr(), line.cstr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void nl_convert_eagle_t::convert(const pstring &contents)
|
||||
{
|
||||
eagle_tokenizer tok(*this);
|
||||
tok.reset(contents.cstr());
|
||||
|
||||
out("NETLIST_START(dummy)\n");
|
||||
add_term("GND", "GND");
|
||||
add_term("VCC", "VCC");
|
||||
eagle_tokenizer::token_t token = tok.get_token();
|
||||
while (true)
|
||||
{
|
||||
if (token.is_type(eagle_tokenizer::ENDOFFILE))
|
||||
{
|
||||
dump_nl();
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_END()\n");
|
||||
return;
|
||||
}
|
||||
else if (token.is(tok.m_tok_SEMICOLON))
|
||||
{
|
||||
/* ignore empty statements */
|
||||
token = tok.get_token();
|
||||
}
|
||||
else if (token.is(tok.m_tok_ADD))
|
||||
{
|
||||
pstring name = tok.get_string();
|
||||
/* skip to semicolon */
|
||||
do
|
||||
{
|
||||
token = tok.get_token();
|
||||
} while (!token.is(tok.m_tok_SEMICOLON));
|
||||
token = tok.get_token();
|
||||
pstring sval = "";
|
||||
if (token.is(tok.m_tok_VALUE))
|
||||
{
|
||||
pstring vname = tok.get_string();
|
||||
sval = tok.get_string();
|
||||
tok.require_token(tok.m_tok_SEMICOLON);
|
||||
token = tok.get_token();
|
||||
}
|
||||
switch (name.cstr()[0])
|
||||
{
|
||||
case 'Q':
|
||||
{
|
||||
add_device("QBJT", name, sval);
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
{
|
||||
double val = get_sp_val(sval);
|
||||
add_device("RES", name, val);
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
{
|
||||
double val = get_sp_val(sval);
|
||||
add_device("CAP", name, val);
|
||||
}
|
||||
break;
|
||||
case 'P':
|
||||
if (sval.ucase() == "HIGH")
|
||||
add_device("TTL_INPUT", name, 1);
|
||||
else if (sval.ucase() == "LOW")
|
||||
add_device("TTL_INPUT", name, 0);
|
||||
else
|
||||
add_device("ANALOG_INPUT", name, sval.as_double());
|
||||
add_pin_alias(name, "1", "Q");
|
||||
break;
|
||||
case 'D':
|
||||
/* Pin 1 = Anode, Pin 2 = Cathode */
|
||||
add_device("DIODE", name, sval);
|
||||
add_pin_alias(name, "1", "A");
|
||||
add_pin_alias(name, "2", "K");
|
||||
break;
|
||||
case 'U':
|
||||
case 'X':
|
||||
{
|
||||
pstring tname = "TTL_" + sval + "_DIP";
|
||||
add_device(tname, name);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
tok.error("// IGNORED %s\n", name.cstr());
|
||||
}
|
||||
|
||||
}
|
||||
else if (token.is(tok.m_tok_SIGNAL))
|
||||
{
|
||||
pstring netname = tok.get_string();
|
||||
token = tok.get_token();
|
||||
while (!token.is(tok.m_tok_SEMICOLON))
|
||||
{
|
||||
/* fixme: should check for string */
|
||||
pstring devname = token.str();
|
||||
pstring pin = tok.get_string();
|
||||
add_term(netname, devname + "." + pin);
|
||||
token = tok.get_token(); }
|
||||
}
|
||||
else
|
||||
{
|
||||
out("Unexpected %s\n", token.str().cstr());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
#include "plib/pstring.h"
|
||||
#include "plib/plists.h"
|
||||
#include "plib/pparser.h"
|
||||
|
||||
/*-------------------------------------------------
|
||||
convert - convert a spice netlist
|
||||
@ -37,137 +38,23 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
void out(const char *format, ...) ATTR_PRINTF(2,3)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
m_buf += pstring(format).vprintf(ap);
|
||||
va_end(ap);
|
||||
}
|
||||
void out(const char *format, ...) ATTR_PRINTF(2,3);
|
||||
void add_pin_alias(const pstring &devname, const pstring &name, const pstring &alias);
|
||||
|
||||
void add_pin_alias(const pstring &devname, const pstring &name, const pstring &alias)
|
||||
{
|
||||
m_pins.add(palloc(sp_pin_alias_t, devname + "." + name, devname + "." + alias), false);
|
||||
}
|
||||
void add_ext_alias(const pstring &alias);
|
||||
|
||||
void add_ext_alias(const pstring &alias)
|
||||
{
|
||||
m_ext_alias.add(alias);
|
||||
}
|
||||
void add_device(const pstring &atype, const pstring &aname, const pstring &amodel);
|
||||
void add_device(const pstring &atype, const pstring &aname, double aval);
|
||||
void add_device(const pstring &atype, const pstring &aname);
|
||||
|
||||
void add_device(const pstring &atype, const pstring &aname, const pstring &amodel)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname, amodel), false);
|
||||
}
|
||||
void add_device(const pstring &atype, const pstring &aname, double aval)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname, aval), false);
|
||||
}
|
||||
void add_device(const pstring &atype, const pstring &aname)
|
||||
{
|
||||
devs.add(palloc(sp_dev_t, atype, aname), false);
|
||||
}
|
||||
void add_term(pstring netname, pstring termname);
|
||||
|
||||
void add_term(pstring netname, pstring termname)
|
||||
{
|
||||
sp_net_t * net = m_nets.find_by_name(netname);
|
||||
if (net == NULL)
|
||||
{
|
||||
net = palloc(sp_net_t, netname);
|
||||
m_nets.add(net, false);
|
||||
}
|
||||
void dump_nl();
|
||||
|
||||
/* if there is a pin alias, translate ... */
|
||||
sp_pin_alias_t *alias = m_pins.find_by_name(termname);
|
||||
const pstring get_nl_val(const double val);
|
||||
double get_sp_unit(const pstring &unit);
|
||||
|
||||
if (alias != NULL)
|
||||
net->terminals().add(alias->alias());
|
||||
else
|
||||
net->terminals().add(termname);
|
||||
}
|
||||
|
||||
void dump_nl()
|
||||
{
|
||||
for (int i=0; i<m_ext_alias.size(); i++)
|
||||
{
|
||||
sp_net_t *net = m_nets.find_by_name(m_ext_alias[i]);
|
||||
// use the first terminal ...
|
||||
out("ALIAS(%s, %s)\n", m_ext_alias[i].cstr(), net->terminals()[0].cstr());
|
||||
// if the aliased net only has this one terminal connected ==> don't dump
|
||||
if (net->terminals().size() == 1)
|
||||
net->set_no_export();
|
||||
}
|
||||
for (int i=0; i<devs.size(); i++)
|
||||
{
|
||||
if (devs[i]->has_value())
|
||||
out("%s(%s, %s)\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr(), get_nl_val(devs[i]->value()).cstr());
|
||||
else if (devs[i]->has_model())
|
||||
out("%s(%s, \"%s\")\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr(), devs[i]->model().cstr());
|
||||
else
|
||||
out("%s(%s)\n", devs[i]->type().cstr(),
|
||||
devs[i]->name().cstr());
|
||||
}
|
||||
// print nets
|
||||
for (int i=0; i<m_nets.size(); i++)
|
||||
{
|
||||
sp_net_t * net = m_nets[i];
|
||||
if (!net->is_no_export())
|
||||
{
|
||||
//printf("Net %s\n", net->name().cstr());
|
||||
out("NET_C(%s", net->terminals()[0].cstr() );
|
||||
for (int j=1; j<net->terminals().size(); j++)
|
||||
{
|
||||
out(", %s", net->terminals()[j].cstr() );
|
||||
}
|
||||
out(")\n");
|
||||
}
|
||||
}
|
||||
devs.clear_and_free();
|
||||
m_nets.clear_and_free();
|
||||
m_pins.clear_and_free();
|
||||
m_ext_alias.clear();
|
||||
}
|
||||
|
||||
const pstring get_nl_val(const double val)
|
||||
{
|
||||
{
|
||||
int i = 0;
|
||||
while (m_sp_units[i].sp_unit != "-" )
|
||||
{
|
||||
if (m_sp_units[i].mult <= nl_math::abs(val))
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
return pstring::sprintf(m_sp_units[i].nl_func.cstr(), val / m_sp_units[i].mult);
|
||||
}
|
||||
}
|
||||
double get_sp_unit(const pstring &unit)
|
||||
{
|
||||
int i = 0;
|
||||
while (m_sp_units[i].sp_unit != "-")
|
||||
{
|
||||
if (m_sp_units[i].sp_unit == unit)
|
||||
return m_sp_units[i].mult;
|
||||
i++;
|
||||
}
|
||||
fprintf(stderr, "Unit %s unknown\n", unit.cstr());
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
double get_sp_val(const pstring &sin)
|
||||
{
|
||||
int p = sin.len() - 1;
|
||||
while (p>=0 && (sin.substr(p,1) < "0" || sin.substr(p,1) > "9"))
|
||||
p--;
|
||||
pstring val = sin.substr(0,p + 1);
|
||||
pstring unit = sin.substr(p + 1);
|
||||
|
||||
double ret = get_sp_unit(unit) * val.as_double();
|
||||
//printf("<%s> %s %d ==> %f\n", sin.cstr(), unit.cstr(), p, ret);
|
||||
return ret;
|
||||
}
|
||||
double get_sp_val(const pstring &sin);
|
||||
|
||||
private:
|
||||
struct sp_net_t
|
||||
@ -253,26 +140,6 @@ private:
|
||||
|
||||
};
|
||||
|
||||
nl_convert_base_t::sp_unit nl_convert_base_t::m_sp_units[] = {
|
||||
{"T", "", 1.0e12 },
|
||||
{"G", "", 1.0e9 },
|
||||
{"MEG", "RES_M(%g)", 1.0e6 },
|
||||
{"k", "RES_K(%g)", 1.0e3 }, /* eagle */
|
||||
{"K", "RES_K(%g)", 1.0e3 },
|
||||
{"", "%g", 1.0e0 },
|
||||
{"M", "CAP_M(%g)", 1.0e-3 },
|
||||
{"u", "CAP_U(%g)", 1.0e-6 }, /* eagle */
|
||||
{"U", "CAP_U(%g)", 1.0e-6 },
|
||||
{"µ", "CAP_U(%g)", 1.0e-6 },
|
||||
{"N", "CAP_N(%g)", 1.0e-9 },
|
||||
{"P", "CAP_P(%g)", 1.0e-12},
|
||||
{"F", "%ge-15", 1.0e-15},
|
||||
|
||||
{"MIL", "%e", 25.4e-6},
|
||||
|
||||
{"-", "%g", 1.0 }
|
||||
};
|
||||
|
||||
class nl_convert_spice_t : public nl_convert_base_t
|
||||
{
|
||||
public:
|
||||
@ -282,136 +149,11 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
void convert(const pstring &contents)
|
||||
{
|
||||
pstring_list_t spnl(contents, "\n");
|
||||
|
||||
// Add gnd net
|
||||
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_START(dummy)\n");
|
||||
add_term("0", "GND");
|
||||
|
||||
pstring line = "";
|
||||
|
||||
for (std::size_t i=0; i < spnl.size(); i++)
|
||||
{
|
||||
// Basic preprocessing
|
||||
pstring inl = spnl[i].trim().ucase();
|
||||
if (inl.startsWith("+"))
|
||||
line = line + inl.substr(1);
|
||||
else
|
||||
{
|
||||
process_line(line);
|
||||
line = inl;
|
||||
}
|
||||
}
|
||||
process_line(line);
|
||||
dump_nl();
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_END()\n");
|
||||
}
|
||||
void convert(const pstring &contents);
|
||||
|
||||
protected:
|
||||
|
||||
void process_line(const pstring &line)
|
||||
{
|
||||
if (line != "")
|
||||
{
|
||||
pstring_list_t tt(line, " ", true);
|
||||
double val = 0.0;
|
||||
switch (tt[0].cstr()[0])
|
||||
{
|
||||
case ';':
|
||||
out("// %s\n", line.substr(1).cstr());
|
||||
break;
|
||||
case '*':
|
||||
out("// %s\n", line.substr(1).cstr());
|
||||
break;
|
||||
case '.':
|
||||
if (tt[0].equals(".SUBCKT"))
|
||||
{
|
||||
out("NETLIST_START(%s)\n", tt[1].cstr());
|
||||
for (int i=2; i<tt.size(); i++)
|
||||
add_ext_alias(tt[i]);
|
||||
}
|
||||
else if (tt[0].equals(".ENDS"))
|
||||
{
|
||||
dump_nl();
|
||||
out("NETLIST_END()\n");
|
||||
}
|
||||
else
|
||||
out("// %s\n", line.cstr());
|
||||
break;
|
||||
case 'Q':
|
||||
{
|
||||
bool cerr = false;
|
||||
/* check for fourth terminal ... should be numeric net
|
||||
* including "0" or start with "N" (ltspice)
|
||||
*/
|
||||
// FIXME: we need a is_long method ..
|
||||
ATTR_UNUSED int nval =tt[4].as_long(&cerr);
|
||||
if ((!cerr || tt[4].startsWith("N")) && tt.size() > 5)
|
||||
add_device("QBJT", tt[0], tt[5]);
|
||||
else
|
||||
add_device("QBJT", tt[0], tt[4]);
|
||||
add_term(tt[1], tt[0] + ".C");
|
||||
add_term(tt[2], tt[0] + ".B");
|
||||
add_term(tt[3], tt[0] + ".E");
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("RES", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".1");
|
||||
add_term(tt[2], tt[0] + ".2");
|
||||
break;
|
||||
case 'C':
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("CAP", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".1");
|
||||
add_term(tt[2], tt[0] + ".2");
|
||||
break;
|
||||
case 'V':
|
||||
// just simple Voltage sources ....
|
||||
if (tt[2].equals("0"))
|
||||
{
|
||||
val = get_sp_val(tt[3]);
|
||||
add_device("ANALOG_INPUT", tt[0], val);
|
||||
add_term(tt[1], tt[0] + ".Q");
|
||||
//add_term(tt[2], tt[0] + ".2");
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "Voltage Source %s not connected to GND\n", tt[0].cstr());
|
||||
break;
|
||||
case 'D':
|
||||
// FIXME: Rewrite resistor value
|
||||
add_device("DIODE", tt[0], tt[3]);
|
||||
add_term(tt[1], tt[0] + ".A");
|
||||
add_term(tt[2], tt[0] + ".K");
|
||||
break;
|
||||
case 'U':
|
||||
case 'X':
|
||||
{
|
||||
// FIXME: specific code for KICAD exports
|
||||
// last element is component type
|
||||
// FIXME: Parameter
|
||||
|
||||
pstring xname = tt[0].replace(".", "_");
|
||||
pstring tname = "TTL_" + tt[tt.size()-1] + "_DIP";
|
||||
add_device(tname, xname);
|
||||
for (int i=1; i < tt.size() - 1; i++)
|
||||
{
|
||||
pstring term = pstring::sprintf("%s.%d", xname.cstr(), i);
|
||||
add_term(tt[i], term);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
out("// IGNORED %s: %s\n", tt[0].cstr(), line.cstr());
|
||||
}
|
||||
}
|
||||
}
|
||||
void process_line(const pstring &line);
|
||||
|
||||
private:
|
||||
|
||||
@ -471,112 +213,7 @@ public:
|
||||
nl_convert_eagle_t &m_convert;
|
||||
};
|
||||
|
||||
void convert(const pstring &contents)
|
||||
{
|
||||
eagle_tokenizer tok(*this);
|
||||
tok.reset(contents.cstr());
|
||||
|
||||
out("NETLIST_START(dummy)\n");
|
||||
add_term("GND", "GND");
|
||||
add_term("VCC", "VCC");
|
||||
eagle_tokenizer::token_t token = tok.get_token();
|
||||
while (true)
|
||||
{
|
||||
if (token.is_type(eagle_tokenizer::ENDOFFILE))
|
||||
{
|
||||
dump_nl();
|
||||
// FIXME: Parameter
|
||||
out("NETLIST_END()\n");
|
||||
return;
|
||||
}
|
||||
else if (token.is(tok.m_tok_SEMICOLON))
|
||||
{
|
||||
/* ignore empty statements */
|
||||
token = tok.get_token();
|
||||
}
|
||||
else if (token.is(tok.m_tok_ADD))
|
||||
{
|
||||
pstring name = tok.get_string();
|
||||
/* skip to semicolon */
|
||||
do
|
||||
{
|
||||
token = tok.get_token();
|
||||
} while (!token.is(tok.m_tok_SEMICOLON));
|
||||
token = tok.get_token();
|
||||
pstring sval = "";
|
||||
if (token.is(tok.m_tok_VALUE))
|
||||
{
|
||||
pstring vname = tok.get_string();
|
||||
sval = tok.get_string();
|
||||
tok.require_token(tok.m_tok_SEMICOLON);
|
||||
token = tok.get_token();
|
||||
}
|
||||
switch (name.cstr()[0])
|
||||
{
|
||||
case 'Q':
|
||||
{
|
||||
add_device("QBJT", name, sval);
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
{
|
||||
double val = get_sp_val(sval);
|
||||
add_device("RES", name, val);
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
{
|
||||
double val = get_sp_val(sval);
|
||||
add_device("CAP", name, val);
|
||||
}
|
||||
break;
|
||||
case 'P':
|
||||
if (sval.ucase() == "HIGH")
|
||||
add_device("TTL_INPUT", name, 1);
|
||||
else if (sval.ucase() == "LOW")
|
||||
add_device("TTL_INPUT", name, 0);
|
||||
else
|
||||
add_device("ANALOG_INPUT", name, sval.as_double());
|
||||
add_pin_alias(name, "1", "Q");
|
||||
break;
|
||||
case 'D':
|
||||
/* Pin 1 = Anode, Pin 2 = Cathode */
|
||||
add_device("DIODE", name, sval);
|
||||
add_pin_alias(name, "1", "A");
|
||||
add_pin_alias(name, "2", "K");
|
||||
break;
|
||||
case 'U':
|
||||
case 'X':
|
||||
{
|
||||
pstring tname = "TTL_" + sval + "_DIP";
|
||||
add_device(tname, name);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
tok.error("// IGNORED %s\n", name.cstr());
|
||||
}
|
||||
|
||||
}
|
||||
else if (token.is(tok.m_tok_SIGNAL))
|
||||
{
|
||||
pstring netname = tok.get_string();
|
||||
token = tok.get_token();
|
||||
while (!token.is(tok.m_tok_SEMICOLON))
|
||||
{
|
||||
/* fixme: should check for string */
|
||||
pstring devname = token.str();
|
||||
pstring pin = tok.get_string();
|
||||
add_term(netname, devname + "." + pin);
|
||||
token = tok.get_token(); }
|
||||
}
|
||||
else
|
||||
{
|
||||
out("Unexpected %s\n", token.str().cstr());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
void convert(const pstring &contents);
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -144,10 +144,12 @@ public:
|
||||
void synchronize(timer_expired_delegate callback = timer_expired_delegate(), int param = 0, void *ptr = NULL) { timer_set(attotime::zero, callback, param, ptr); }
|
||||
|
||||
// timers with old-skool callbacks
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
emu_timer *timer_alloc(timer_expired_func callback, const char *name, void *ptr = NULL) { return timer_alloc(timer_expired_delegate(callback, name, &machine()), ptr); }
|
||||
void timer_set(const attotime &duration, timer_expired_func callback, const char *name, int param = 0, void *ptr = NULL) { timer_set(duration, timer_expired_delegate(callback, name, &machine()), param, ptr); }
|
||||
void timer_pulse(const attotime &period, timer_expired_func callback, const char *name, int param = 0, void *ptr = NULL) { timer_pulse(period, timer_expired_delegate(callback, name, &machine()), param, ptr); }
|
||||
void synchronize(timer_expired_func callback, const char *name = NULL, int param = 0, void *ptr = NULL) { timer_set(attotime::zero, callback, name, param, ptr); }
|
||||
#endif
|
||||
|
||||
// timers, specified by device/id; generally devices should use the device_t methods instead
|
||||
emu_timer *timer_alloc(device_t &device, device_timer_id id = 0, void *ptr = NULL);
|
||||
|
@ -92,6 +92,7 @@ static const input_item_id non_char_keys[] =
|
||||
|
||||
// messagebox buffer
|
||||
static std::string messagebox_text;
|
||||
static std::string messagebox_poptext;
|
||||
static rgb_t messagebox_backcolor;
|
||||
|
||||
// slider info
|
||||
@ -441,7 +442,7 @@ void ui_manager::update_and_render(render_container *container)
|
||||
|
||||
// display any popup messages
|
||||
if (osd_ticks() < m_popup_text_end)
|
||||
draw_text_box(container, messagebox_text.c_str(), JUSTIFY_CENTER, 0.5f, 0.9f, messagebox_backcolor);
|
||||
draw_text_box(container, messagebox_poptext.c_str(), JUSTIFY_CENTER, 0.5f, 0.9f, messagebox_backcolor);
|
||||
else
|
||||
m_popup_text_end = 0;
|
||||
|
||||
@ -868,7 +869,7 @@ void CLIB_DECL ui_manager::popup_time(int seconds, const char *text, ...)
|
||||
|
||||
// extract the text
|
||||
va_start(arg,text);
|
||||
strvprintf(messagebox_text, text, arg);
|
||||
strvprintf(messagebox_poptext, text, arg);
|
||||
messagebox_backcolor = UI_BACKGROUND_COLOR;
|
||||
va_end(arg);
|
||||
|
||||
|
@ -150,7 +150,7 @@ mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device
|
||||
// to the clock
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double offset, double period)
|
||||
inline emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double offset, double period)
|
||||
{
|
||||
emu_timer *timer = timer_alloc(id);
|
||||
timer->adjust(
|
||||
@ -228,7 +228,7 @@ void mc6847_friend_device::device_post_load(void)
|
||||
// update_field_sync_timer
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_friend_device::update_field_sync_timer(void)
|
||||
void mc6847_friend_device::update_field_sync_timer(void)
|
||||
{
|
||||
// are we expecting field sync?
|
||||
bool expected_field_sync = (m_physical_scanline < m_field_sync_falling_edge_scanline)
|
||||
@ -268,7 +268,7 @@ void mc6847_friend_device::device_timer(emu_timer &timer, device_timer_id id, in
|
||||
// new_frame
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_friend_device::new_frame(void)
|
||||
inline void mc6847_friend_device::new_frame(void)
|
||||
{
|
||||
m_physical_scanline = 0;
|
||||
m_logical_scanline = 0;
|
||||
@ -304,7 +304,7 @@ const char *mc6847_friend_device::scanline_zone_string(scanline_zone zone)
|
||||
// change_horizontal_sync
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_friend_device::change_horizontal_sync(bool line)
|
||||
inline void mc6847_friend_device::change_horizontal_sync(bool line)
|
||||
{
|
||||
g_profiler.start(PROFILER_USER1);
|
||||
|
||||
@ -372,7 +372,7 @@ ATTR_FORCE_INLINE void mc6847_friend_device::change_horizontal_sync(bool line)
|
||||
// change_field_sync
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_friend_device::change_field_sync(bool line)
|
||||
inline void mc6847_friend_device::change_field_sync(bool line)
|
||||
{
|
||||
/* output field sync */
|
||||
if (line != m_field_sync)
|
||||
@ -397,7 +397,7 @@ ATTR_FORCE_INLINE void mc6847_friend_device::change_field_sync(bool line)
|
||||
// next_scanline
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_friend_device::next_scanline(void)
|
||||
inline void mc6847_friend_device::next_scanline(void)
|
||||
{
|
||||
/* advance to next scanline */
|
||||
m_physical_scanline++;
|
||||
@ -678,7 +678,7 @@ void mc6847_base_device::record_scanline_res(int scanline, INT32 start_pos, INT3
|
||||
// record_body_scanline
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void mc6847_base_device::record_body_scanline(UINT16 physical_scanline, UINT16 scanline, INT32 start_pos, INT32 end_pos)
|
||||
inline void mc6847_base_device::record_body_scanline(UINT16 physical_scanline, UINT16 scanline, INT32 start_pos, INT32 end_pos)
|
||||
{
|
||||
// sanity checks
|
||||
assert(scanline < 192);
|
||||
@ -780,7 +780,7 @@ void mc6847_base_device::field_sync_changed(bool line)
|
||||
// border_value
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE mc6847_base_device::pixel_t mc6847_base_device::border_value(UINT8 mode, const pixel_t *palette, bool is_mc6847t1)
|
||||
inline mc6847_base_device::pixel_t mc6847_base_device::border_value(UINT8 mode, const pixel_t *palette, bool is_mc6847t1)
|
||||
{
|
||||
pixel_t result;
|
||||
switch(mc6847_friend_device::border_value(mode, is_mc6847t1))
|
||||
|
@ -101,19 +101,19 @@ static int camplynx_handle_cassette(INT16 *buffer, const UINT8 *bytes)
|
||||
if (i < camplynx_image_size)
|
||||
{
|
||||
sample_count += camplynx_output_byte(buffer, sample_count, bytes[i]);
|
||||
pgmname.append<int>(1, bytes[i]);
|
||||
pgmname.append(1, (char)bytes[i]);
|
||||
}
|
||||
else
|
||||
return sample_count;
|
||||
byte_count++;
|
||||
}
|
||||
|
||||
pgmname.append<int>(1, 0x22);
|
||||
pgmname.append(1, (char)0x22);
|
||||
sample_count += camplynx_output_byte(buffer, sample_count, bytes[byte_count++]); // should be 0x22
|
||||
|
||||
// if a machine-language program, say to use MLOAD
|
||||
if (bytes[byte_count] == 0x4D)
|
||||
pgmname[0] = 0x4D;
|
||||
pgmname[0] = (char)0x4D;
|
||||
|
||||
// Tell user how to load the tape
|
||||
popmessage("%s",pgmname.c_str());
|
||||
|
@ -29,6 +29,16 @@ const char *cgenie_format::extensions() const
|
||||
return "dsk";
|
||||
}
|
||||
|
||||
int cgenie_format::get_track_dam_fm(const format &f, int head, int track)
|
||||
{
|
||||
return (track == f.track_count/2) ? FM_DDAM : FM_DAM;
|
||||
}
|
||||
|
||||
int cgenie_format::get_track_dam_mfm(const format &f, int head, int track)
|
||||
{
|
||||
return (track == f.track_count/2) ? MFM_DDAM : MFM_DAM;
|
||||
}
|
||||
|
||||
const cgenie_format::format cgenie_format::formats[] =
|
||||
{
|
||||
{ // 102k 5 1/4 inch single density single sided (Type A)
|
||||
|
@ -24,6 +24,10 @@ public:
|
||||
virtual const char *description() const;
|
||||
virtual const char *extensions() const;
|
||||
|
||||
protected:
|
||||
virtual int get_track_dam_fm(const format &f, int head, int track);
|
||||
virtual int get_track_dam_mfm(const format &f, int head, int track);
|
||||
|
||||
private:
|
||||
static const format formats[];
|
||||
};
|
||||
|
@ -2563,8 +2563,9 @@ void floppy_image_format_t::extract_sectors_from_bitstream_fm_pc(const UINT8 *bi
|
||||
if(idblk_count < 100)
|
||||
idblk[idblk_count++] = i+1;
|
||||
}
|
||||
// fb
|
||||
if(shift_reg == 0xf56f) { // data mark
|
||||
// f8, f9, fa, fb
|
||||
if(shift_reg == 0xf56a || shift_reg == 0xf56b ||
|
||||
shift_reg == 0xf56e || shift_reg == 0xf56f) { // data mark
|
||||
if(dblk_count < 100)
|
||||
dblk[dblk_count++] = i+1;
|
||||
}
|
||||
|
44
src/lib/formats/pk8020_dsk.c
Normal file
44
src/lib/formats/pk8020_dsk.c
Normal file
@ -0,0 +1,44 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Dirk Best
|
||||
/***************************************************************************
|
||||
|
||||
PK-8020
|
||||
|
||||
Disk image format
|
||||
|
||||
TODO:
|
||||
- Verify gap sizes
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "pk8020_dsk.h"
|
||||
|
||||
pk8020_format::pk8020_format() : wd177x_format(formats)
|
||||
{
|
||||
}
|
||||
|
||||
const char *pk8020_format::name() const
|
||||
{
|
||||
return "pk8020";
|
||||
}
|
||||
|
||||
const char *pk8020_format::description() const
|
||||
{
|
||||
return "PK-8020 disk image";
|
||||
}
|
||||
|
||||
const char *pk8020_format::extensions() const
|
||||
{
|
||||
return "kdi";
|
||||
}
|
||||
|
||||
const pk8020_format::format pk8020_format::formats[] =
|
||||
{
|
||||
{
|
||||
floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
|
||||
2000, 5, 80, 2, 1024, {}, 1, {}, 60, 22, 24
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
const floppy_format_type FLOPPY_PK8020_FORMAT = &floppy_image_format_creator<pk8020_format>;
|
33
src/lib/formats/pk8020_dsk.h
Normal file
33
src/lib/formats/pk8020_dsk.h
Normal file
@ -0,0 +1,33 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Dirk Best
|
||||
/***************************************************************************
|
||||
|
||||
PK-8020
|
||||
|
||||
Disk image format
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __PK8020_DSK_H__
|
||||
#define __PK8020_DSK_H__
|
||||
|
||||
#include "wd177x_dsk.h"
|
||||
|
||||
class pk8020_format : public wd177x_format
|
||||
{
|
||||
public:
|
||||
pk8020_format();
|
||||
|
||||
virtual const char *name() const;
|
||||
virtual const char *description() const;
|
||||
virtual const char *extensions() const;
|
||||
|
||||
private:
|
||||
static const format formats[];
|
||||
};
|
||||
|
||||
extern const floppy_format_type FLOPPY_PK8020_FORMAT;
|
||||
|
||||
#endif // __PK8020_DSK_H__
|
@ -204,6 +204,12 @@ bool wd177x_format::load(io_generic *io, UINT32 form_factor, floppy_image *image
|
||||
|
||||
for(int track=0; track < f.track_count; track++)
|
||||
for(int head=0; head < f.head_count; head++) {
|
||||
|
||||
if (f.encoding == floppy_image::FM)
|
||||
desc[14].p1 = get_track_dam_fm(f, head, track);
|
||||
else
|
||||
desc[16].p1 = get_track_dam_mfm(f, head, track);
|
||||
|
||||
io_generic_read(io, sectdata, get_image_offset(f, head, track), track_size);
|
||||
generate_track(desc, track, head, sectors, f.sector_count, total_size, image);
|
||||
}
|
||||
@ -345,6 +351,18 @@ int wd177x_format::get_image_offset(const format &f, int head, int track)
|
||||
return (track * f.head_count + head) * compute_track_size(f);
|
||||
}
|
||||
|
||||
int wd177x_format::get_track_dam_fm(const format &f, int head, int track)
|
||||
{
|
||||
// everything marked as data by default
|
||||
return FM_DAM;
|
||||
}
|
||||
|
||||
int wd177x_format::get_track_dam_mfm(const format &f, int head, int track)
|
||||
{
|
||||
// everything marked as data by default
|
||||
return MFM_DAM;
|
||||
}
|
||||
|
||||
void wd177x_format::check_compatibility(floppy_image *image, std::vector<int> &candidates)
|
||||
{
|
||||
UINT8 bitstream[500000/8];
|
||||
|
@ -43,11 +43,16 @@ public:
|
||||
virtual bool supports_save() const;
|
||||
|
||||
protected:
|
||||
enum { FM_DAM = 0xf56f, FM_DDAM = 0xf56a, MFM_DAM = 0xfb, MFM_DDAM = 0xf8 };
|
||||
|
||||
const format *formats;
|
||||
|
||||
virtual floppy_image_format_t::desc_e* get_desc_fm(const format &f, int ¤t_size, int &end_gap_index);
|
||||
virtual floppy_image_format_t::desc_e* get_desc_mfm(const format &f, int ¤t_size, int &end_gap_index);
|
||||
virtual int find_size(io_generic *io, UINT32 form_factor);
|
||||
virtual int get_image_offset(const format &f, int head, int track);
|
||||
virtual int get_track_dam_fm(const format &f, int head, int track);
|
||||
virtual int get_track_dam_mfm(const format &f, int head, int track);
|
||||
|
||||
int compute_track_size(const format &f) const;
|
||||
void build_sector_description(const format &d, UINT8 *sectdata, desc_s *sectors) const;
|
||||
|
41
src/lib/formats/x1_dsk.c
Normal file
41
src/lib/formats/x1_dsk.c
Normal file
@ -0,0 +1,41 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Dirk Best
|
||||
/***************************************************************************
|
||||
|
||||
Sharp X1
|
||||
|
||||
Disk image format
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "x1_dsk.h"
|
||||
|
||||
x1_format::x1_format() : wd177x_format(formats)
|
||||
{
|
||||
}
|
||||
|
||||
const char *x1_format::name() const
|
||||
{
|
||||
return "x1";
|
||||
}
|
||||
|
||||
const char *x1_format::description() const
|
||||
{
|
||||
return "Sharp X1 disk image";
|
||||
}
|
||||
|
||||
const char *x1_format::extensions() const
|
||||
{
|
||||
return "2d";
|
||||
}
|
||||
|
||||
const x1_format::format x1_format::formats[] =
|
||||
{
|
||||
{
|
||||
floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
|
||||
2000, 16, 40, 2, 256, {}, 1, {}, 32, 22, 54
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
const floppy_format_type FLOPPY_X1_FORMAT = &floppy_image_format_creator<x1_format>;
|
33
src/lib/formats/x1_dsk.h
Normal file
33
src/lib/formats/x1_dsk.h
Normal file
@ -0,0 +1,33 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Dirk Best
|
||||
/***************************************************************************
|
||||
|
||||
Sharp X1
|
||||
|
||||
Disk image format
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __X1_DSK_H__
|
||||
#define __X1_DSK_H__
|
||||
|
||||
#include "wd177x_dsk.h"
|
||||
|
||||
class x1_format : public wd177x_format
|
||||
{
|
||||
public:
|
||||
x1_format();
|
||||
|
||||
virtual const char *name() const;
|
||||
virtual const char *description() const;
|
||||
virtual const char *extensions() const;
|
||||
|
||||
private:
|
||||
static const format formats[];
|
||||
};
|
||||
|
||||
extern const floppy_format_type FLOPPY_X1_FORMAT;
|
||||
|
||||
#endif // __X1_DSK_H__
|
@ -95,20 +95,29 @@
|
||||
#if defined(__GNUC__)
|
||||
/* does not work in versions over 4.7.x of 32bit MINGW */
|
||||
#if defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
|
||||
//#define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_INTERNAL
|
||||
#define MEMBER_ABI __thiscall
|
||||
#define HAS_DIFFERENT_ABI 1
|
||||
#elif defined(EMSCRIPTEN)
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
|
||||
#elif defined(__arm__) || defined(__ARMEL__)
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
|
||||
#else
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_INTERNAL
|
||||
#define MEMBER_ABI
|
||||
#define HAS_DIFFERENT_ABI 0
|
||||
#endif
|
||||
#else
|
||||
#define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
|
||||
#endif
|
||||
|
||||
#define USE_STATIC_DELEGATE 1
|
||||
|
||||
|
||||
#if (USE_DELEGATE_TYPE == DELEGATE_TYPE_COMPATIBLE)
|
||||
#define MEMBER_ABI
|
||||
#define HAS_DIFFERENT_ABI 0
|
||||
#endif
|
||||
//**************************************************************************
|
||||
// HELPER CLASSES
|
||||
//**************************************************************************
|
||||
@ -554,7 +563,7 @@ public:
|
||||
typedef typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, _P4Type, _P5Type, _P6Type, _P7Type, _P8Type, _P9Type, _P10Type, _P11Type, _P12Type>::static_ref_func_type static_ref_func_type;
|
||||
};
|
||||
typedef typename traits<delegate_generic_class>::static_func_type generic_static_func;
|
||||
|
||||
typedef MEMBER_ABI generic_static_func generic_member_func;
|
||||
// generic constructor
|
||||
delegate_base()
|
||||
: m_function(NULL),
|
||||
@ -646,20 +655,29 @@ public:
|
||||
return (m_raw_function == rhs.m_raw_function && object() == rhs.object() && m_raw_mfp == rhs.m_raw_mfp);
|
||||
}
|
||||
|
||||
#define DELEGATE_CALL(x) \
|
||||
if (is_mfp() && (HAS_DIFFERENT_ABI)) \
|
||||
return (*reinterpret_cast<generic_member_func>(m_function)) x; \
|
||||
else \
|
||||
return (*m_function) x; \
|
||||
|
||||
//return MEMBER_ABI (*reinpertret_cast<generic_member_func>(m_function)) x;
|
||||
|
||||
// call the function
|
||||
_ReturnType operator()() const { return (*m_function)(m_object); }
|
||||
_ReturnType operator()(_P1Type p1) const { return (*m_function)(m_object, p1); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2) const { return (*m_function)(m_object, p1, p2); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3) const { return (*m_function)(m_object, p1, p2, p3); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4) const { return (*m_function)(m_object, p1, p2, p3, p4); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5) const { return (*m_function)(m_object, p1, p2, p3, p4, p5); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7, p8); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10, _P11Type p11) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10, _P11Type p11, _P12Type p12) const { return (*m_function)(m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
|
||||
_ReturnType operator()() const { DELEGATE_CALL((m_object)); }
|
||||
//_ReturnType operator()() const { return (*m_function)(m_object); }
|
||||
_ReturnType operator()(_P1Type p1) const { DELEGATE_CALL((m_object, p1)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2) const { DELEGATE_CALL((m_object, p1, p2)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3) const { DELEGATE_CALL((m_object, p1, p2, p3)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4) const { DELEGATE_CALL((m_object, p1, p2, p3, p4)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7, p8)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10, _P11Type p11) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)); }
|
||||
_ReturnType operator()(_P1Type p1, _P2Type p2, _P3Type p3, _P4Type p4, _P5Type p5, _P6Type p6, _P7Type p7, _P8Type p8, _P9Type p9, _P10Type p10, _P11Type p11, _P12Type p12) const { DELEGATE_CALL((m_object, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)); }
|
||||
|
||||
// getters
|
||||
bool has_object() const { return (object() != NULL); }
|
||||
@ -732,8 +750,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -749,8 +769,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -766,8 +788,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -783,8 +807,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -800,8 +826,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -817,8 +845,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -834,8 +864,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -851,8 +883,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -868,8 +902,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -885,8 +921,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -902,8 +940,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -919,8 +959,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
@ -936,8 +978,10 @@ public:
|
||||
delegate(const basetype &src) : basetype(src) { }
|
||||
delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#ifdef USE_STATIC_DELEGATE
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
template<class _FunctionClass> delegate(typename basetype::template traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
|
||||
#endif
|
||||
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
|
||||
};
|
||||
|
||||
|
@ -4794,7 +4794,8 @@ pdrift // 1988.?? Power Drift (World)
|
||||
pdrifta // 1988.?? Power Drift (World)
|
||||
pdrifte // 1988.?? Power Drift (World)
|
||||
pdriftl
|
||||
gloc // 1990.04 G-LOC Air Battle (US)
|
||||
gloc // 1990.?? G-LOC Air Battle (World)
|
||||
glocu // 1990.04 G-LOC Air Battle (US)
|
||||
// 1990.05 G-LOC Air Battle (Japan)
|
||||
glocr360 // 1990.?? G-LOC (R360, World?)
|
||||
strkfgtr // 1991.06 Strike Fighter (World)
|
||||
@ -10908,6 +10909,7 @@ mosaicf2 // (c) 1999 F2 System
|
||||
royalpk2 //
|
||||
finalgdr // (c) 2001 Semicom
|
||||
mrkicker // (c) 2001 Semicom
|
||||
mrkickera // (c) 2001 Semicom
|
||||
wivernwg // (c) 2001 Semicom
|
||||
wyvernwg // (c) 2001 Semicom / Game Vision
|
||||
wyvernwga // (c) 2001 Semicom / Game Vision
|
||||
|
@ -1431,7 +1431,7 @@ MACHINE_CONFIG_END
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
// Galaxy Force, Sega Y-board
|
||||
// Sega Game ID: 831-6614 (two PCB board stack
|
||||
// Sega Game ID: 831-6614 (two PCB board stack)
|
||||
//
|
||||
// NOTE: An original PCB is very hard to locate intact. Most of these boards were upgraded to Galaxy Force 2 through a
|
||||
// chip swap upgrade.
|
||||
@ -1441,7 +1441,7 @@ MACHINE_CONFIG_END
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
// Galaxy Force 2, Sega Y-board
|
||||
// Galaxy Force 2 (World), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
//
|
||||
ROM_START( gforce2 )
|
||||
@ -1519,7 +1519,7 @@ ROM_START( gforce2 )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Galaxy Force 2, Sega Y-board
|
||||
// Galaxy Force 2 (Japan, Rev A), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
//
|
||||
ROM_START( gforce2ja )
|
||||
@ -1594,7 +1594,7 @@ ROM_START( gforce2ja )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Galaxy Force 2, Sega Y-board
|
||||
// Galaxy Force 2 (Japan), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
//
|
||||
ROM_START( gforce2j )
|
||||
@ -1672,12 +1672,88 @@ ROM_END
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
// G-Loc, Sega Y-board
|
||||
// G-Loc (World), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
// CPU BD 837-7403
|
||||
// VIDEO BD 837-7301-02
|
||||
// GAME BD 834-7300-07 G-LOC
|
||||
//
|
||||
ROM_START( gloc )
|
||||
ROM_REGION( 0x080000, "maincpu", 0 ) // M
|
||||
ROM_LOAD16_BYTE( "epr-13172.25", 0x000000, 0x20000, CRC(75e7174c) SHA1(ef052a6973cf49267463a0c14e8c392a083c62fb) )
|
||||
ROM_LOAD16_BYTE( "epr-13171.24", 0x000001, 0x20000, CRC(90733468) SHA1(1c540c447321e323473462e8c26c59163e0e3b6d) )
|
||||
ROM_LOAD16_BYTE( "epr-13028.27", 0x040000, 0x20000, CRC(b6aa2edf) SHA1(07259fc48cd0f63fbd0a8dadf2294575cd790c85) )
|
||||
ROM_LOAD16_BYTE( "epr-13027.26", 0x040001, 0x20000, CRC(6463c87a) SHA1(882d980a1568ca777364822295e173224509f842) )
|
||||
|
||||
ROM_REGION( 0x040000, "subx", 0 ) // X
|
||||
ROM_LOAD16_BYTE( "epr-13032.81", 0x000000, 0x20000, CRC(7da09c4e) SHA1(09ec269c07f07549aa9851585eac0a5195e25bf9) )
|
||||
ROM_LOAD16_BYTE( "epr-13031.80", 0x000001, 0x20000, CRC(f3c7e3f4) SHA1(927c0cf05e7a72d79fdf19bbe7b18bf167feccd6) )
|
||||
|
||||
ROM_REGION( 0x040000, "suby", 0 ) // Y
|
||||
ROM_LOAD16_BYTE( "epr-13030.54", 0x000000, 0x20000, CRC(81abcabf) SHA1(cb4e817d66a7f384aa9757758c51cd1bf7347dd0) )
|
||||
ROM_LOAD16_BYTE( "epr-13029.53", 0x000001, 0x20000, CRC(f3638efb) SHA1(f82a46fc8616cbe0235746161c587e54adecfe50) )
|
||||
|
||||
ROM_REGION16_BE( 0x200000, "bsprites", 0)
|
||||
ROM_LOAD16_BYTE( "epr-13039.16", 0x000000, 0x80000, CRC(d7e1266d) SHA1(b0fc4cc60a7e876ae2af343bba6da3fb926ea9c5) )
|
||||
ROM_LOAD16_BYTE( "epr-13037.14", 0x000001, 0x80000, CRC(b801a250) SHA1(7d1f6a1f2022a4f302f22d11fa79057cf8134ad2) )
|
||||
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
|
||||
ROM_LOAD16_BYTE( "epr-13038.15", 0x100001, 0x80000, CRC(0b2edb6d) SHA1(04944d6e6f020cd6d33641110847706516630227) )
|
||||
|
||||
ROM_REGION64_BE( 0x1000000, "ysprites", 0 )
|
||||
ROMX_LOAD( "epr-13048.67", 0x000000, 0x80000, CRC(fe1eb0dd) SHA1(5e292fc0b83505eb289e026d4be24c9038ef1418), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13056.75", 0x000001, 0x80000, CRC(5904f8e6) SHA1(fbb01dadc796624c360d44b7631e3f1f285abf2e), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13044.63", 0x000002, 0x80000, CRC(4d931f89) SHA1(ff603f4347e4728a2849d9f480893ad0af7abc5c), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13052.71", 0x000003, 0x80000, CRC(0291f040) SHA1(610dee2a31445f4a054111b7005278560a9c0702), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13064.86", 0x000004, 0x80000, CRC(5f8e651b) SHA1(f1a957e68dea40c23f6a5a208358ec6d6515fe60), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13072.114", 0x000005, 0x80000, CRC(6b85641a) SHA1(143a4684d5f303cd30880a2d5728dccbdd168da4), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13060.82", 0x000006, 0x80000, CRC(ee16ad97) SHA1(6af38cfaf694f686f8e4223fb0b13cd350a8b9e5), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13068.110", 0x000007, 0x80000, CRC(64d52bbb) SHA1(b6eab546edb2443e5da6c94ec811ec5084212e60), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD( "epr-13047.66", 0x400000, 0x80000, CRC(53340832) SHA1(8ece8a71ea8ed80458121622307a137fb13931f6), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13055.74", 0x400001, 0x80000, CRC(39b6b665) SHA1(d915db1d9bfe0c6ad3f7b447ce0cfdb42ec66ffe), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13043.62", 0x400002, 0x80000, CRC(208f16fd) SHA1(ce96708ea9886af4aba8730cbb98c0ca72b96f57), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13051.70", 0x400003, 0x80000, CRC(ad62cbd4) SHA1(09c008ce5cb97575a4312d2f22566bda72ecc4e2), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13063.85", 0x400004, 0x80000, CRC(c580bf6d) SHA1(cb72970377ad2acce499059aa8155711b8da8a11), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13071.113", 0x400005, 0x80000, CRC(df99ef99) SHA1(12648844c6e78dbd573b7bf0c981edb4d3012b58), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13059.81", 0x400006, 0x80000, CRC(4c982558) SHA1(e04902af2740ca098cd6bbf1f57cb25562754a76), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13067.109", 0x400007, 0x80000, CRC(f97f6119) SHA1(6f91fc28a1260ca4f1c695863717b27d1e45dc32), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD( "epr-13046.65", 0x800000, 0x80000, CRC(c75a86e9) SHA1(8a180e1e2dd06eb81e2aa4ef73b83879cf6afc1b), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13054.73", 0x800001, 0x80000, CRC(2934549a) SHA1(058b2966141d0db6bb8557d65c77b3458aca9358), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13042.61", 0x800002, 0x80000, CRC(53ed97af) SHA1(22dffa434eb98e5bca1e429b69553a3540dc54a7), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13050.69", 0x800003, 0x80000, CRC(04429068) SHA1(d7d8738809fd959ed428796b2bd1b589b74522c6), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13062.84", 0x800004, 0x80000, CRC(4fdb4ee3) SHA1(d76065b9abe5c3cf692567d3a8746a231748340d), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13070.112", 0x800005, 0x80000, CRC(52ea130e) SHA1(860cb3a1701066e595518c49b696b7b7a3994ada), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13058.80", 0x800006, 0x80000, CRC(19ff1626) SHA1(029e231c3322467b5e2e52eea11df4f645460468), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13066.108", 0x800007, 0x80000, CRC(bc70a250) SHA1(25189854cc01855b6e3589b85490f30dda029f86), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD( "epr-13045.64", 0xc00000, 0x80000, CRC(54d5bc6d) SHA1(18a301c9e6c4a352f300a438d85c6e6952bf0738), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13053.72", 0xc00001, 0x80000, CRC(9502af13) SHA1(1a8c0fcd10f4c86af69c0107f486ca2eb8863f93), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13041.60", 0xc00002, 0x80000, CRC(d0a7402c) SHA1(8932503c570ec49fdb4706f4015608bd060bafa0), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13049.68", 0xc00003, 0x80000, CRC(5b9c0b6c) SHA1(17f2460b7dc0bd34dca3f90f2b553df4a7149147), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13061.83", 0xc00004, 0x80000, CRC(7b95ec3b) SHA1(284aba4effd9d376a7a8f510a6f675fcb3393d09), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13069.111", 0xc00005, 0x80000, CRC(e1f538f0) SHA1(55dc85faed1d5a7f2d586bac7e524c3fef3c53b4), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13057.79", 0xc00006, 0x80000, CRC(73baefee) SHA1(6e86edc8229dd6112034a7df79f7341a4120dc6b), ROM_SKIP(7) )
|
||||
ROMX_LOAD( "epr-13065.107", 0xc00007, 0x80000, CRC(8937a655) SHA1(d38726a8a6fe68a002ac8d17f70ab83c2f814aa2), ROM_SKIP(7) )
|
||||
|
||||
ROM_REGION( 0x10000, "soundcpu", 0 ) // Z80 sound CPU
|
||||
ROM_LOAD( "epr-13033.102", 0x000000, 0x10000, CRC(6df5e827) SHA1(ec260886a27ba00690490500fcf4ebf07fb35205) )
|
||||
|
||||
ROM_REGION( 0x200000, "pcm", ROMREGION_ERASEFF ) // SegaPCM samples
|
||||
ROM_LOAD( "epr-13036.107", 0x000000, 0x80000, CRC(7890c26c) SHA1(97e0678bb571de5cf732804f8909e5cbd24980f1) )
|
||||
ROM_LOAD( "epr-13035.106", 0x080000, 0x80000, CRC(009fa13e) SHA1(c7b224b471696b12332fc7c403c127b19c297df7) )
|
||||
ROM_LOAD( "epr-13034.105", 0x100000, 0x80000, CRC(cd22d95d) SHA1(857aa320df0b3fb44fc8a5526ba5ee82cc74fe63) )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// G-Loc (US), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
// VIDEO BD 837-7301-01
|
||||
// GAME BD 834-7300-04 G-LOC
|
||||
//
|
||||
ROM_START( gloc )
|
||||
// No "For use in..." region notice, but displays the FBI "Winners Don't Use Drugs" splash screen during attract sequence
|
||||
//
|
||||
ROM_START( glocu )
|
||||
ROM_REGION( 0x080000, "maincpu", 0 ) // M
|
||||
ROM_LOAD16_BYTE( "epr-13170.25", 0x000000, 0x20000, CRC(45189229) SHA1(01d18f6e4887633475baf610f455fad4ed7981e4) )
|
||||
ROM_LOAD16_BYTE( "epr-13169.24", 0x000001, 0x20000, CRC(1b47cd6e) SHA1(694f489766f25e4c1f1fef6db79de347688ad80a) )
|
||||
@ -1749,7 +1825,7 @@ ROM_END
|
||||
ROM_START( glocr360 )
|
||||
ROM_REGION( 0x080000, "maincpu", 0 ) // M
|
||||
ROM_LOAD16_BYTE( "epr-13623.25", 0x000000, 0x20000, CRC(58ad10e7) SHA1(3760ede1d1c089f6c8b2ec88b2f25bce67add467) )
|
||||
ROM_LOAD16_BYTE( "epr-13622.24", 0x000001, 0x20000, CRC(c4e68dbf) SHA1(f85e6fdf159e19342e5a9278f004e95752af7d55) )
|
||||
ROM_LOAD16_BYTE( "epr-13622.24", 0x000001, 0x20000, CRC(c4e68dbf) SHA1(f85e6fdf159e19342e5a9278f004e95752af7d55) )
|
||||
ROM_LOAD16_BYTE( "epr-13323a.27", 0x040000, 0x20000, CRC(02e24a33) SHA1(4955b13e5e90945dfb9066597b16df63c2a09552) )
|
||||
ROM_LOAD16_BYTE( "epr-13322a.26", 0x040001, 0x20000, CRC(94f67740) SHA1(3d1be8dc9c370cd024fae19bb0b2663995d13d0e) )
|
||||
|
||||
@ -1817,7 +1893,7 @@ ROM_END
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
// Power Drift, Sega Y-board
|
||||
// Power Drift (World, Rev A), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
// CPU BD POWER DRIFT 837-6695-08 (or 837-6695-09)
|
||||
// VIDEO BD POWER DRIFT 837-6696-01 (or 837-6696-02)
|
||||
@ -1903,6 +1979,7 @@ ROM_START( pdrift )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Power Drift (World)
|
||||
//
|
||||
ROM_START( pdrifta )
|
||||
ROM_REGION( 0x080000, "maincpu", 0 ) // M
|
||||
@ -1985,6 +2062,7 @@ ROM_START( pdrifta )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Power Drift (World)
|
||||
// Earlier set based on eprom numbers & Sega Eprom/Mask Rom Locations sheet 421-7708
|
||||
//
|
||||
ROM_START( pdrifte )
|
||||
@ -2068,7 +2146,7 @@ ROM_START( pdrifte )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Power Drift, Sega Y-board
|
||||
// Power Drift (Japan), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
// CPU BD POWER DRIFT 837-6695-08 (or 837-6695-09)
|
||||
// VIDEO BD POWER DRIFT 837-6696-01 (or 837-6696-02)
|
||||
@ -2154,88 +2232,88 @@ ROM_START( pdriftj )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Power Drift, Sega Y-board Link version
|
||||
// Power Drift (Japan), Sega Y-board Link version
|
||||
// Sega Game ID: 833-6697
|
||||
//
|
||||
// This was just 6 loose program roms + 4 sprite roms + the link PCBs, other roms could be incorrect
|
||||
//
|
||||
ROM_START(pdriftl)
|
||||
ROM_REGION(0x080000, "maincpu", 0) // M
|
||||
ROM_LOAD16_BYTE("epr-12107a.25", 0x000000, 0x20000, CRC(0acaed3c) SHA1(0a3d86346b7a75a53b07311c095a879a22048590))
|
||||
ROM_LOAD16_BYTE("epr-12106a.24", 0x000001, 0x20000, CRC(d222f7a6) SHA1(ce73b9a155c0ebd4b1c0c71c80fd3dce6043dcf6))
|
||||
ROM_LOAD16_BYTE("epr-12107a.25", 0x000000, 0x20000, CRC(0acaed3c) SHA1(0a3d86346b7a75a53b07311c095a879a22048590) )
|
||||
ROM_LOAD16_BYTE("epr-12106a.24", 0x000001, 0x20000, CRC(d222f7a6) SHA1(ce73b9a155c0ebd4b1c0c71c80fd3dce6043dcf6) )
|
||||
// 26+27 not tested, probably not used
|
||||
|
||||
ROM_REGION(0x040000, "subx", 0) // X
|
||||
ROM_LOAD16_BYTE("epr-12111.81", 0x000000, 0x20000, CRC(41b0622c) SHA1(9751c88f4c0df2e0852cee071683c8e6156da8cb))
|
||||
ROM_LOAD16_BYTE("epr-12110.80", 0x000001, 0x20000, CRC(26db4865) SHA1(963c10156cddf44abc86dbe66349bc83656eda15))
|
||||
ROM_LOAD16_BYTE("epr-12111.81", 0x000000, 0x20000, CRC(41b0622c) SHA1(9751c88f4c0df2e0852cee071683c8e6156da8cb) )
|
||||
ROM_LOAD16_BYTE("epr-12110.80", 0x000001, 0x20000, CRC(26db4865) SHA1(963c10156cddf44abc86dbe66349bc83656eda15) )
|
||||
|
||||
ROM_REGION(0x040000, "suby", 0) // Y
|
||||
ROM_LOAD16_BYTE("epr-12109.54", 0x000000, 0x20000, CRC(256350b8) SHA1(72b05d3583d63766690fed4827ec586e832168d1))
|
||||
ROM_LOAD16_BYTE("epr-12108.53", 0x000001, 0x20000, CRC(a3a56771) SHA1(f41d466f31a1b833d21a7011314c48d5056409eb))
|
||||
ROM_LOAD16_BYTE("epr-12109.54", 0x000000, 0x20000, CRC(256350b8) SHA1(72b05d3583d63766690fed4827ec586e832168d1) )
|
||||
ROM_LOAD16_BYTE("epr-12108.53", 0x000001, 0x20000, CRC(a3a56771) SHA1(f41d466f31a1b833d21a7011314c48d5056409eb) )
|
||||
|
||||
ROM_REGION16_BE(0x080000, "bsprites", 0)
|
||||
ROM_LOAD16_BYTE("epr-12114.16", 0x000000, 0x20000, CRC(8b07e8eb) SHA1(22a4aff968d6de52372b7b2b5322d353f7b835ef))
|
||||
ROM_LOAD16_BYTE("epr-12115.14", 0x000001, 0x20000, CRC(045b2912) SHA1(697c8eff69bf1a23745d24171f0b50635cf8513e))
|
||||
ROM_LOAD16_BYTE("epr-12112.17", 0x040000, 0x20000, CRC(5dd13e81) SHA1(74ced668a36480a2ce9e3667e4915bfee2391534))
|
||||
ROM_LOAD16_BYTE("epr-12113.15", 0x040001, 0x20000, CRC(69b8bd5a) SHA1(e312b60fff672363326b6169be7aff6b943d27c9))
|
||||
ROM_LOAD16_BYTE("epr-12114.16", 0x000000, 0x20000, CRC(8b07e8eb) SHA1(22a4aff968d6de52372b7b2b5322d353f7b835ef) )
|
||||
ROM_LOAD16_BYTE("epr-12115.14", 0x000001, 0x20000, CRC(045b2912) SHA1(697c8eff69bf1a23745d24171f0b50635cf8513e) )
|
||||
ROM_LOAD16_BYTE("epr-12112.17", 0x040000, 0x20000, CRC(5dd13e81) SHA1(74ced668a36480a2ce9e3667e4915bfee2391534) )
|
||||
ROM_LOAD16_BYTE("epr-12113.15", 0x040001, 0x20000, CRC(69b8bd5a) SHA1(e312b60fff672363326b6169be7aff6b943d27c9) )
|
||||
|
||||
ROM_REGION64_BE(0x400000, "ysprites", 0)
|
||||
ROMX_LOAD("epr-11757.67", 0x000000, 0x20000, CRC(e46dc478) SHA1(baf79e230aef3d63fb50373b2b1626f7c56ee94f), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11758.75", 0x000001, 0x20000, CRC(5b435c87) SHA1(6b42b08e73957c36cd8faa896ca14461d00afd29), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11773.63", 0x000002, 0x20000, CRC(1b5d5758) SHA1(54f58a274740a0566e0553d145c0c284ffd1d36b), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11774.71", 0x000003, 0x20000, CRC(2ca0c170) SHA1(7de74c045bf084659ba70da9458d720125ff25ae), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11759.86", 0x000004, 0x20000, CRC(ac8111f6) SHA1(6412716dc97ae697b438d9c9cd554d1087416bc2), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11760.114", 0x000005, 0x20000, CRC(91282af9) SHA1(fddee7982949b7da724c7830e7bd139aeb84672d), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11775.82", 0x000006, 0x20000, CRC(48225793) SHA1(ee003c2ea24c14e0968da94bac139735660932fe), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11776.110", 0x000007, 0x20000, CRC(78c46198) SHA1(d299e631843da47cb7a46103d52a3dabfab71746), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11757.67", 0x000000, 0x20000, CRC(e46dc478) SHA1(baf79e230aef3d63fb50373b2b1626f7c56ee94f), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11758.75", 0x000001, 0x20000, CRC(5b435c87) SHA1(6b42b08e73957c36cd8faa896ca14461d00afd29), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11773.63", 0x000002, 0x20000, CRC(1b5d5758) SHA1(54f58a274740a0566e0553d145c0c284ffd1d36b), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11774.71", 0x000003, 0x20000, CRC(2ca0c170) SHA1(7de74c045bf084659ba70da9458d720125ff25ae), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11759.86", 0x000004, 0x20000, CRC(ac8111f6) SHA1(6412716dc97ae697b438d9c9cd554d1087416bc2), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11760.114", 0x000005, 0x20000, CRC(91282af9) SHA1(fddee7982949b7da724c7830e7bd139aeb84672d), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11775.82", 0x000006, 0x20000, CRC(48225793) SHA1(ee003c2ea24c14e0968da94bac139735660932fe), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11776.110", 0x000007, 0x20000, CRC(78c46198) SHA1(d299e631843da47cb7a46103d52a3dabfab71746), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD("epr-11761.66", 0x100000, 0x20000, CRC(baa5d065) SHA1(56dc71814e3f0f327781b0c1587038351c60f7b7), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11762.74", 0x100001, 0x20000, CRC(1d1af7a5) SHA1(86c02565b5aca201588c98678fb0c54faa8d4d6b), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11777.62", 0x100002, 0x20000, CRC(9662dd32) SHA1(454ec914b6c936f692bf90d2232c8169acec470a), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11778.70", 0x100003, 0x20000, CRC(2dfb7494) SHA1(4b9f1609e425c5e634e95dbc2d0ca820dd9212bc), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11763.85", 0x100004, 0x20000, CRC(1ee23407) SHA1(776c868e0e4e601fd6d0a83561b064b4be0560e2), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11764.113", 0x100005, 0x20000, CRC(e859305e) SHA1(aafcc3209a4fb6e0e8169ae6cce386b370b824f7), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11779.81", 0x100006, 0x20000, CRC(a49cd793) SHA1(efe77949be39a2ff88b50bfb2b4664b9267d9a09), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11780.109", 0x100007, 0x20000, CRC(d514ed81) SHA1(fbac3ad085363972a79e77aebb7fdae2200e7cda), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11761.66", 0x100000, 0x20000, CRC(baa5d065) SHA1(56dc71814e3f0f327781b0c1587038351c60f7b7), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11762.74", 0x100001, 0x20000, CRC(1d1af7a5) SHA1(86c02565b5aca201588c98678fb0c54faa8d4d6b), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11777.62", 0x100002, 0x20000, CRC(9662dd32) SHA1(454ec914b6c936f692bf90d2232c8169acec470a), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11778.70", 0x100003, 0x20000, CRC(2dfb7494) SHA1(4b9f1609e425c5e634e95dbc2d0ca820dd9212bc), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11763.85", 0x100004, 0x20000, CRC(1ee23407) SHA1(776c868e0e4e601fd6d0a83561b064b4be0560e2), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11764.113", 0x100005, 0x20000, CRC(e859305e) SHA1(aafcc3209a4fb6e0e8169ae6cce386b370b824f7), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11779.81", 0x100006, 0x20000, CRC(a49cd793) SHA1(efe77949be39a2ff88b50bfb2b4664b9267d9a09), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11780.109", 0x100007, 0x20000, CRC(d514ed81) SHA1(fbac3ad085363972a79e77aebb7fdae2200e7cda), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD("epr-11765.65", 0x200000, 0x20000, CRC(649e2dff) SHA1(a6c61b71d08b31a0ca175ab0404e2eaf1d09ccc2), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11766.73", 0x200001, 0x20000, CRC(d92fb7fc) SHA1(2f5c2d88ae0766351b9efe8ffcbebc88fc3a6c59), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11781.61", 0x200002, 0x20000, CRC(9692d4cd) SHA1(967351ba2c781ca865e3c1ee9eeef1aad2247c27), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11782.69", 0x200003, 0x20000, CRC(c913bb43) SHA1(9bc15a3180cf4c3134bb55e99e6092f0faf95c56), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11767.84", 0x200004, 0x20000, CRC(1f8ad054) SHA1(289f5795116ee29540f28e35c3b4f72adeca7891), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11768.112", 0x200005, 0x20000, CRC(db2c4053) SHA1(a5b6daa6deb7afb0019e289acb81c82d507ec93a), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11783.80", 0x200006, 0x20000, CRC(6d189007) SHA1(dd871ea3166fdcb59d49707d35dde8b6c7fdc76b), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11784.108", 0x200007, 0x20000, CRC(57f5fd64) SHA1(6aff54d3f3f76ce0f1a93485d1a35a3987d456d9), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11765.65", 0x200000, 0x20000, CRC(649e2dff) SHA1(a6c61b71d08b31a0ca175ab0404e2eaf1d09ccc2), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11766.73", 0x200001, 0x20000, CRC(d92fb7fc) SHA1(2f5c2d88ae0766351b9efe8ffcbebc88fc3a6c59), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11781.61", 0x200002, 0x20000, CRC(9692d4cd) SHA1(967351ba2c781ca865e3c1ee9eeef1aad2247c27), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11782.69", 0x200003, 0x20000, CRC(c913bb43) SHA1(9bc15a3180cf4c3134bb55e99e6092f0faf95c56), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11767.84", 0x200004, 0x20000, CRC(1f8ad054) SHA1(289f5795116ee29540f28e35c3b4f72adeca7891), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11768.112", 0x200005, 0x20000, CRC(db2c4053) SHA1(a5b6daa6deb7afb0019e289acb81c82d507ec93a), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11783.80", 0x200006, 0x20000, CRC(6d189007) SHA1(dd871ea3166fdcb59d49707d35dde8b6c7fdc76b), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11784.108", 0x200007, 0x20000, CRC(57f5fd64) SHA1(6aff54d3f3f76ce0f1a93485d1a35a3987d456d9), ROM_SKIP(7) )
|
||||
|
||||
ROMX_LOAD("epr-11769.64", 0x300000, 0x20000, CRC(28f0ab51) SHA1(d7cb7b83e5d85eb59d34cfd5c0d8e6c7ff81e24c), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11770.72", 0x300001, 0x20000, CRC(d7557ea9) SHA1(62430505d399ee2cc0f94e03144860056345573c), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11785.60", 0x300002, 0x20000, CRC(e6ef32c4) SHA1(869ba3816f5e3125f613f3b284fec74cd19db79e), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11786.68", 0x300003, 0x20000, CRC(2066b49d) SHA1(905ce70c921043d07591422a87fedd6e897ff38e), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11771.83", 0x300004, 0x20000, CRC(67635618) SHA1(f690ace026130ecb95532c92f2ad3741d0d167c1), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11772.111", 0x300005, 0x20000, CRC(0f798d3a) SHA1(71565ce28b93ae50d64af8c965fba6408a07f031), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11787.79", 0x300006, 0x20000, CRC(e631dc12) SHA1(3fd6db2eb297890b35dec566b6a90fc2d96bd085), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11788.107", 0x300007, 0x20000, CRC(8464c66e) SHA1(af93cbcc50acbd929d0298fb9a75da0369e13ff7), ROM_SKIP(7))
|
||||
ROMX_LOAD("epr-11769.64", 0x300000, 0x20000, CRC(28f0ab51) SHA1(d7cb7b83e5d85eb59d34cfd5c0d8e6c7ff81e24c), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11770.72", 0x300001, 0x20000, CRC(d7557ea9) SHA1(62430505d399ee2cc0f94e03144860056345573c), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11785.60", 0x300002, 0x20000, CRC(e6ef32c4) SHA1(869ba3816f5e3125f613f3b284fec74cd19db79e), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11786.68", 0x300003, 0x20000, CRC(2066b49d) SHA1(905ce70c921043d07591422a87fedd6e897ff38e), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11771.83", 0x300004, 0x20000, CRC(67635618) SHA1(f690ace026130ecb95532c92f2ad3741d0d167c1), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11772.111", 0x300005, 0x20000, CRC(0f798d3a) SHA1(71565ce28b93ae50d64af8c965fba6408a07f031), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11787.79", 0x300006, 0x20000, CRC(e631dc12) SHA1(3fd6db2eb297890b35dec566b6a90fc2d96bd085), ROM_SKIP(7) )
|
||||
ROMX_LOAD("epr-11788.107", 0x300007, 0x20000, CRC(8464c66e) SHA1(af93cbcc50acbd929d0298fb9a75da0369e13ff7), ROM_SKIP(7) )
|
||||
|
||||
ROM_REGION(0x10000, "soundcpu", 0) // Z80 sound CPU
|
||||
ROM_LOAD("epr-11899.102", 0x000000, 0x10000, CRC(ed9fa889) SHA1(25d1a069254b34c31d8ee82d301ada895e8dc391))
|
||||
ROM_LOAD("epr-11899.102", 0x000000, 0x10000, CRC(ed9fa889) SHA1(25d1a069254b34c31d8ee82d301ada895e8dc391) )
|
||||
|
||||
ROM_REGION(0x200000, "pcm", ROMREGION_ERASEFF) // SegaPCM samples
|
||||
ROM_LOAD("mpr-11754.107", 0x000000, 0x80000, CRC(ebeb8484) SHA1(269f33cb1a9be126bada858e25291385d48686a2))
|
||||
ROM_LOAD("epr-11756.105", 0x080000, 0x20000, CRC(12e43f8a) SHA1(0f9a11ba6b7c1a352daa1146a01ce147945e91e4))
|
||||
ROM_LOAD("mpr-11754.107", 0x000000, 0x80000, CRC(ebeb8484) SHA1(269f33cb1a9be126bada858e25291385d48686a2) )
|
||||
ROM_LOAD("epr-11756.105", 0x080000, 0x20000, CRC(12e43f8a) SHA1(0f9a11ba6b7c1a352daa1146a01ce147945e91e4) )
|
||||
ROM_RELOAD( 0x0a0000, 0x20000)
|
||||
ROM_RELOAD( 0x0c0000, 0x20000)
|
||||
ROM_RELOAD( 0x0e0000, 0x20000)
|
||||
ROM_LOAD("epr-11755.106", 0x100000, 0x20000, CRC(c2db1244) SHA1(c98fe17c9f04a639a862cc2a86fab17d1f5d025c))
|
||||
ROM_LOAD("epr-11755.106", 0x100000, 0x20000, CRC(c2db1244) SHA1(c98fe17c9f04a639a862cc2a86fab17d1f5d025c) )
|
||||
ROM_RELOAD( 0x120000, 0x20000)
|
||||
ROM_RELOAD( 0x140000, 0x20000)
|
||||
ROM_RELOAD( 0x160000, 0x20000)
|
||||
|
||||
ROM_REGION(0x100000, "user1", 0)
|
||||
// These are mpr-11754.107 split into 4 roms. They would be located on a Sega 839-0221 daughter card.
|
||||
ROM_LOAD("epr-11895.ic1", 0x000000, 0x20000, CRC(ee99a6fd) SHA1(4444826e751d9186e6d46b081e47cd99ee3cf853))
|
||||
ROM_LOAD("epr-11896.ic2", 0x000000, 0x20000, CRC(4bebc015) SHA1(307022ea1c1ee87c9ef3782526888c48c3c69fd2))
|
||||
ROM_LOAD("epr-11897.ic3", 0x000000, 0x20000, CRC(4463cb95) SHA1(e86fd4611cf83fe72d59950a60fc8c3a7381a1c7))
|
||||
ROM_LOAD("epr-11898.ic4", 0x000000, 0x20000, CRC(5d19d767) SHA1(d335cd3ef57c75e388df04b04fc3e2881a3902cf))
|
||||
ROM_LOAD("epr-11895.ic1", 0x000000, 0x20000, CRC(ee99a6fd) SHA1(4444826e751d9186e6d46b081e47cd99ee3cf853) )
|
||||
ROM_LOAD("epr-11896.ic2", 0x000000, 0x20000, CRC(4bebc015) SHA1(307022ea1c1ee87c9ef3782526888c48c3c69fd2) )
|
||||
ROM_LOAD("epr-11897.ic3", 0x000000, 0x20000, CRC(4463cb95) SHA1(e86fd4611cf83fe72d59950a60fc8c3a7381a1c7) )
|
||||
ROM_LOAD("epr-11898.ic4", 0x000000, 0x20000, CRC(5d19d767) SHA1(d335cd3ef57c75e388df04b04fc3e2881a3902cf) )
|
||||
|
||||
ROM_REGION(0x10000, "linkcpu", 0) // Z80 link board CPU
|
||||
ROM_LOAD("epr-12028", 0x000000, 0x08000, CRC(bb682a92) SHA1(0445bdbca0db9edecd826da37cd2d3afc57c5cf6) )
|
||||
@ -2245,7 +2323,7 @@ ROM_END
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
//*************************************************************************************************************************
|
||||
// Rail Chase World, Sega Y-board
|
||||
// Rail Chase (World), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
// CPU BD 837-8073-05
|
||||
// VIDEO BD 837-8074-01
|
||||
@ -2263,8 +2341,8 @@ ROM_START( rchase )
|
||||
ROM_LOAD16_BYTE( "epr-13991a.80", 0x000001, 0x20000, CRC(299e3c7c) SHA1(e4903816ec364e9352abd1180e8a609fed75e1a7) )
|
||||
|
||||
ROM_REGION( 0x040000, "suby", 0 ) // Y
|
||||
ROM_LOAD16_BYTE( "epr-14092.54", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) )
|
||||
ROM_LOAD16_BYTE( "epr-14091.53", 0x000001, 0x20000, CRC(72a56f71) SHA1(d45d3072ea92b5dde5c70138e56e7f0ca248880e) )
|
||||
ROM_LOAD16_BYTE( "epr-14092.54", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) ) // same as epr-13990.54 below
|
||||
ROM_LOAD16_BYTE( "epr-14091.53", 0x000001, 0x20000, CRC(72a56f71) SHA1(d45d3072ea92b5dde5c70138e56e7f0ca248880e) ) // 1 byte difference between regions
|
||||
|
||||
ROM_REGION16_BE( 0x080000, "bsprites", 0 )
|
||||
ROM_LOAD16_BYTE( "mpr-13999.16", 0x000000, 0x40000, CRC(9a1dd53c) SHA1(cb01f2c64554914ea693879dfcb498181a1e7a9a) )
|
||||
@ -2308,7 +2386,7 @@ ROM_START( rchase )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Rail Chase Japan, Sega Y-board
|
||||
// Rail Chase (Japan), Sega Y-board
|
||||
// CPU: 68000 (317-????)
|
||||
//
|
||||
ROM_START( rchasej )
|
||||
@ -2323,8 +2401,8 @@ ROM_START( rchasej )
|
||||
ROM_LOAD16_BYTE( "epr-13991a.80", 0x000001, 0x20000, CRC(299e3c7c) SHA1(e4903816ec364e9352abd1180e8a609fed75e1a7) )
|
||||
|
||||
ROM_REGION( 0x040000, "suby", 0 ) // Y
|
||||
ROM_LOAD16_BYTE( "epr-13990.54.verify", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) ) // Need to verify EPR #, same as epr-14092.54 above
|
||||
ROM_LOAD16_BYTE( "epr-13989.53.verify", 0x000001, 0x20000, CRC(8f4f824e) SHA1(d470f23ce2dca4e75b7b714175d47338c41bb721) ) // Need to verify EPR #
|
||||
ROM_LOAD16_BYTE( "epr-13990.54", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) )
|
||||
ROM_LOAD16_BYTE( "epr-13989.53", 0x000001, 0x20000, CRC(8f4f824e) SHA1(d470f23ce2dca4e75b7b714175d47338c41bb721) )
|
||||
|
||||
ROM_REGION16_BE( 0x080000, "bsprites", 0 )
|
||||
ROM_LOAD16_BYTE( "mpr-13999.16", 0x000000, 0x40000, CRC(9a1dd53c) SHA1(cb01f2c64554914ea693879dfcb498181a1e7a9a) )
|
||||
@ -2590,10 +2668,11 @@ DRIVER_INIT_MEMBER(segaybd_state,rchase)
|
||||
|
||||
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS, LAYOUT
|
||||
GAME( 1988, gforce2, 0, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, gforce2j, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, gforce2ja, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan, Rev A)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, gforce2j, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1990, gloc, 0, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (US)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, gloc, 0, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (World)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, glocu, gloc, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (US)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, glocr360, gloc, yboard, glocr360, segaybd_state, r360, ROT0, "Sega", "G-LOC R360", GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAMEL(1988, pdrift, 0, yboard, pdrift, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World, Rev A)", GAME_SUPPORTS_SAVE, layout_pdrift )
|
||||
|
@ -1654,11 +1654,11 @@ MACHINE_RESET_MEMBER(snowbros_state,finalttr)
|
||||
static MACHINE_CONFIG_START( snowbros, snowbros_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 Mhz - confirmed */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* 8 Mhz - confirmed */
|
||||
MCFG_CPU_PROGRAM_MAP(snowbros_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", snowbros_state, snowbros_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, 6000000) /* 6 MHz - confirmed */
|
||||
MCFG_CPU_ADD("soundcpu", Z80, XTAL_12MHz/2) /* 6 MHz - confirmed */
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
MCFG_CPU_IO_MAP(sound_io_map)
|
||||
|
||||
@ -1683,7 +1683,7 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, 3000000)
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3 MHz - confirmed */
|
||||
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
@ -1731,12 +1731,11 @@ static MACHINE_CONFIG_DERIVED( semicom, snowbros )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( semicom_mcu, semicom )
|
||||
|
||||
/* basic machine hardware */
|
||||
|
||||
MCFG_CPU_ADD("protection", I8052, 16000000) // AT89C52
|
||||
MCFG_CPU_ADD("protection", I8052, XTAL_16MHz) // AT89C52
|
||||
MCFG_CPU_PROGRAM_MAP(protection_map)
|
||||
MCFG_CPU_IO_MAP(protection_iomap)
|
||||
MACHINE_CONFIG_END
|
||||
@ -1746,34 +1745,15 @@ static MACHINE_CONFIG_DERIVED( semiprot, semicom )
|
||||
MCFG_MACHINE_RESET_OVERRIDE (snowbros_state, semiprot )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
|
||||
Honey Doll - Barko Corp 1995
|
||||
|
||||
Rom Board include a Cypress cy7C382-0JC chip
|
||||
|
||||
Main Board :
|
||||
|
||||
CPU : 1 X MC68000P12
|
||||
1 X Z80B
|
||||
|
||||
1 X Oki M6295
|
||||
2 X Cypress CY7C384A-XJC
|
||||
|
||||
2 x quartz - 12Mhz and 16Mhz
|
||||
|
||||
|
||||
See included pics
|
||||
*/
|
||||
|
||||
static MACHINE_CONFIG_START( honeydol, snowbros_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, 16000000)
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* MC68000P12 @ 12MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(honeydol_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", snowbros_state, snowbros_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, 4000000)
|
||||
MCFG_CPU_ADD("soundcpu", Z80, XTAL_16MHz/4) /* 4Mhz (16MHz/4) like SemiCom or 6MHz (12MHz/2) like snowbros??? */
|
||||
MCFG_CPU_PROGRAM_MAP(honeydol_sound_map)
|
||||
MCFG_CPU_IO_MAP(honeydol_sound_io_map)
|
||||
|
||||
@ -1795,23 +1775,23 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
|
||||
|
||||
/* sound hardware */
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, 3000000)
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3Mhz */
|
||||
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
|
||||
MCFG_OKIM6295_ADD("oki", 999900, OKIM6295_PIN7_HIGH) /* freq? */
|
||||
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( twinadv, snowbros_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, 16000000) // or 12
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* 12MHz like Honey Dolls ? */
|
||||
MCFG_CPU_PROGRAM_MAP(twinadv_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", snowbros_state, snowbros_irq, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, 4000000)
|
||||
MCFG_CPU_ADD("soundcpu", Z80, XTAL_16MHz/4) /* 4Mhz (16MHz/4) like SemiCom or 6MHz (12MHz/2) like snowbros??? */
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
MCFG_CPU_IO_MAP(twinadv_sound_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", snowbros_state, irq0_line_hold)
|
||||
@ -1833,7 +1813,7 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_OKIM6295_ADD("oki", 12000000/12, OKIM6295_PIN7_HIGH) /* freq? */
|
||||
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1859,15 +1839,15 @@ Intel P8752 (mcu)
|
||||
static MACHINE_CONFIG_DERIVED( finalttr, semicom )
|
||||
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_CLOCK(12000000)
|
||||
MCFG_CPU_CLOCK(XTAL_12MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(finalttr_map)
|
||||
|
||||
MCFG_CPU_MODIFY("soundcpu")
|
||||
MCFG_CPU_CLOCK(3578545)
|
||||
MCFG_CPU_CLOCK(XTAL_3_579545MHz)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE (snowbros_state, finalttr )
|
||||
|
||||
MCFG_SOUND_REPLACE("ymsnd", YM2151, 4000000)
|
||||
MCFG_SOUND_REPLACE("ymsnd", YM2151, XTAL_3_579545MHz) /* possible but less likely 4MHz (12MHz/3) */
|
||||
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.08)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.08)
|
||||
@ -1883,10 +1863,10 @@ static MACHINE_CONFIG_DERIVED( _4in1, semicom )
|
||||
MCFG_GFXDECODE_MODIFY("gfxdecode", snowbros)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( snowbro3, snowbros_state )
|
||||
static MACHINE_CONFIG_START( snowbro3, snowbros_state ) /* PCB has 16MHz & 12MHz OSCs */
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16mhz or 12mhz ? */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* MC68000P10 CPU @ 12mhz or 8MHz (16MHz/2) ? */
|
||||
MCFG_CPU_PROGRAM_MAP(snowbros3_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", snowbros_state, snowbros3_irq, "screen", 0, 1)
|
||||
|
||||
@ -1906,7 +1886,7 @@ static MACHINE_CONFIG_START( snowbro3, snowbros_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_OKIM6295_ADD("oki", 999900, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
|
||||
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -2064,6 +2044,24 @@ ROM_END
|
||||
|
||||
/* Barko */
|
||||
|
||||
/*
|
||||
|
||||
Honey Doll - Barko Corp 1995
|
||||
|
||||
Rom Board include a Cypress cy7C382-0JC chip
|
||||
|
||||
Main Board :
|
||||
|
||||
CPU : 1 X MC68000P12
|
||||
1 X Z80B
|
||||
|
||||
1 X Oki M6295
|
||||
2 X Cypress CY7C384A-XJC
|
||||
|
||||
2 x quartz - 12Mhz and 16Mhz
|
||||
|
||||
*/
|
||||
|
||||
ROM_START( honeydol )
|
||||
ROM_REGION( 0x40000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "d-16.uh12", 0x00001, 0x20000, CRC(cee1a2e3) SHA1(6d1ff5358ec704616b724eea2ab9b60b84709eb1) )
|
||||
|
@ -162,6 +162,7 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_oki_bank_w);
|
||||
DECLARE_WRITE32_MEMBER(aoh_oki_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(boonggab_oki_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(mrkickera_oki_bank_w);
|
||||
DECLARE_WRITE32_MEMBER(wyvernwg_snd_w);
|
||||
DECLARE_WRITE16_MEMBER(misncrft_snd_w);
|
||||
DECLARE_READ8_MEMBER(qs1000_p1_r);
|
||||
@ -187,6 +188,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(boonggab);
|
||||
DECLARE_DRIVER_INIT(wyvernwg);
|
||||
DECLARE_DRIVER_INIT(yorijori);
|
||||
DECLARE_DRIVER_INIT(mrkickera);
|
||||
|
||||
UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
@ -339,6 +341,12 @@ WRITE16_MEMBER(vamphalf_state::boonggab_oki_bank_w)
|
||||
m_oki->set_bank_base(0x40000 * (data & 0x7));
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::mrkickera_oki_bank_w)
|
||||
{
|
||||
m_oki->set_bank_base(0x40000 * (data & 0x3));
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::boonggab_prize_w)
|
||||
{
|
||||
if(offset)
|
||||
@ -450,6 +458,7 @@ static ADDRESS_MAP_START( misncrft_io, AS_IO, 16, vamphalf_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( coolmini_io, AS_IO, 16, vamphalf_state )
|
||||
// AM_RANGE(0x002, 0x003) AM_WRITE(mrkickera_oki_bank_w) // not coolmini?, installed on init
|
||||
AM_RANGE(0x200, 0x203) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0x300, 0x303) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x304, 0x307) AM_READ_PORT("P1_P2")
|
||||
@ -513,6 +522,8 @@ static ADDRESS_MAP_START( mrkicker_io, AS_IO, 32, vamphalf_state )
|
||||
AM_RANGE(0x7c00, 0x7c03) AM_READ_PORT("SYSTEM")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( jmpbreak_io, AS_IO, 16, vamphalf_state )
|
||||
AM_RANGE(0x0c0, 0x0c3) AM_NOP // ?
|
||||
AM_RANGE(0x100, 0x103) AM_WRITENOP // ?
|
||||
@ -1106,6 +1117,8 @@ static MACHINE_CONFIG_DERIVED( mrkicker, common )
|
||||
MCFG_FRAGMENT_ADD(sound_ym_oki)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( aoh, vamphalf_state )
|
||||
MCFG_CPU_ADD("maincpu", E132XN, XTAL_20MHz*4) /* 4x internal multiplier */
|
||||
MCFG_CPU_PROGRAM_MAP(aoh_map)
|
||||
@ -2237,6 +2250,36 @@ ROM_START( mrkicker )
|
||||
ROM_LOAD( "eeprom-mrkicker.bin", 0x0000, 0x0080, CRC(87afb8f7) SHA1(444203b793c1d7929fc5916f18b510198719cd38) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( mrkickera )
|
||||
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
|
||||
/* rom0 empty */
|
||||
ROM_LOAD( "3.rom2", 0x080000, 0x080000, CRC(3f7fa08b) SHA1(dbffd44d8387e6ed1a4b5ec85ccf64d69a108d88) )
|
||||
|
||||
ROM_REGION( 0x800000, "gfx1", 0 ) /* gfx data */
|
||||
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(c677aac3) SHA1(356073a29260e8e6c29dd12b2113b30140c6108c) )
|
||||
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(b6337d4a) SHA1(2f46e2933af7fd0f71083900d5e6e4f602ab4c66) )
|
||||
/* roml01 empty */
|
||||
/* romh01 empty */
|
||||
|
||||
ROM_REGION( 0x080000, "user2", 0 ) /* Oki Samples */
|
||||
ROM_LOAD( "at27c040.u7", 0x000000, 0x080000, CRC(e8141fcd) SHA1(256fd1987030e0a1df0a66a228c1fea996cda686) ) /* Mask ROM */
|
||||
|
||||
/* $00000-$20000 stays the same in all sound banks, */
|
||||
/* the second half of the bank is what gets switched */
|
||||
ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
|
||||
ROM_COPY( "user2", 0x000000, 0x000000, 0x020000)
|
||||
ROM_COPY( "user2", 0x000000, 0x020000, 0x020000)
|
||||
ROM_COPY( "user2", 0x000000, 0x040000, 0x020000)
|
||||
ROM_COPY( "user2", 0x020000, 0x060000, 0x020000)
|
||||
ROM_COPY( "user2", 0x000000, 0x080000, 0x020000)
|
||||
ROM_COPY( "user2", 0x040000, 0x0a0000, 0x020000)
|
||||
ROM_COPY( "user2", 0x000000, 0x0c0000, 0x020000)
|
||||
ROM_COPY( "user2", 0x060000, 0x0e0000, 0x020000)
|
||||
|
||||
ROM_REGION16_BE( 0x80, "eeprom", 0 ) /* Default EEPROM (it doesn't boot without and the game code crashes) */
|
||||
ROM_LOAD( "eeprom-mrkicker.bin", 0x0000, 0x0080, CRC(87afb8f7) SHA1(444203b793c1d7929fc5916f18b510198719cd38) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
Age Of Heroes - Silkroad 2
|
||||
Unico, 2001
|
||||
@ -2704,6 +2747,15 @@ DRIVER_INIT_MEMBER(vamphalf_state,coolmini)
|
||||
m_flip_bit = 1;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(vamphalf_state,mrkickera)
|
||||
{
|
||||
// m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d2e80, 0x000d2e83, read16_delegate(FUNC(vamphalf_state::mrkickera_speedup_r), this));
|
||||
m_maincpu->space(AS_IO).install_write_handler(0x002, 0x003, write16_delegate(FUNC(vamphalf_state::mrkickera_oki_bank_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
m_flip_bit = 1;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(vamphalf_state,suplup)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0011605c, 0x0011605f, read16_delegate(FUNC(vamphalf_state::suplup_speedup_r), this));
|
||||
@ -2895,6 +2947,7 @@ GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, R
|
||||
GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, mrkicker, 0, mrkicker, finalgdr, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker", GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, mrkickera, mrkicker, coolmini, common, vamphalf_state, mrkickera,ROT0, "SemiCom", "Mr. Kicker (F-E1-16-010 PCB)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
32
src/mame/nl.lst
Normal file
32
src/mame/nl.lst
Normal file
@ -0,0 +1,32 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Aaron Giles
|
||||
/******************************************************************************
|
||||
|
||||
nl.lst
|
||||
|
||||
List of all drivers using netlist code. This file is parsed by then
|
||||
genie build system.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
1942 // 12/1984 (c) 1984
|
||||
1942a // 12/1984 (c) 1984
|
||||
1942abl // bootleg
|
||||
1942b // 12/1984 (c) 1984
|
||||
1942w // 12/1984 (c) 1984 + Williams Electronics license (c) 1985
|
||||
1942p // prototype
|
||||
1942h // hack (Two Bit Score?)
|
||||
popeye // (c) 1982
|
||||
popeyeu // (c) 1982
|
||||
popeyef // (c) 1982
|
||||
popeyebl // bootleg
|
||||
|
||||
// mario
|
||||
|
||||
|
||||
// Atari 100% TTL
|
||||
pong // (c) 1972 Atari
|
||||
pongd // (c) 1975 Atari
|
||||
pongf // (c) 1972 Atari
|
||||
breakout // (c) 1976 Atari
|
||||
|
@ -45,7 +45,8 @@ documentation still exists.
|
||||
#include "machine/6821pia.h"
|
||||
#include "includes/dgn_beta.h"
|
||||
#include "machine/mos6551.h"
|
||||
#include "formats/coco_dsk.h"
|
||||
#include "formats/vdk_dsk.h"
|
||||
#include "formats/dmk_dsk.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "machine/ram.h"
|
||||
#include "video/mc6845.h"
|
||||
@ -288,13 +289,6 @@ PALETTE_INIT_MEMBER(dgn_beta_state, dgn)
|
||||
}
|
||||
}
|
||||
|
||||
static const floppy_interface dgnbeta_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSHD,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(coco),
|
||||
NULL
|
||||
};
|
||||
|
||||
/* F4 Character Displayer */
|
||||
static const gfx_layout dgnbeta_charlayout =
|
||||
{
|
||||
@ -313,6 +307,14 @@ static GFXDECODE_START( dgnbeta )
|
||||
GFXDECODE_ENTRY( "gfx1", 0x0000, dgnbeta_charlayout, 0, 8 )
|
||||
GFXDECODE_END
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( dgn_beta_state::floppy_formats )
|
||||
FLOPPY_VDK_FORMAT,
|
||||
FLOPPY_DMK_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
static SLOT_INTERFACE_START( dgn_beta_floppies )
|
||||
SLOT_INTERFACE("qd", FLOPPY_525_QD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state )
|
||||
/* basic machine hardware */
|
||||
@ -366,12 +368,14 @@ static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state )
|
||||
MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state,d_pia2_irq_a))
|
||||
MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state,d_pia2_irq_b))
|
||||
|
||||
MCFG_DEVICE_ADD(FDC_TAG, WD2797, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(dgn_beta_state,dgnbeta_fdc_intrq_w))
|
||||
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(dgn_beta_state,dgnbeta_fdc_drq_w))
|
||||
MCFG_WD2797x_ADD(FDC_TAG, XTAL_1MHz)
|
||||
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(dgn_beta_state, dgnbeta_fdc_intrq_w))
|
||||
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dgn_beta_state, dgnbeta_fdc_drq_w))
|
||||
|
||||
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(dgnbeta_floppy_interface)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":2", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats)
|
||||
|
||||
MCFG_MC6845_ADD("crtc", HD6845, "screen", XTAL_12_288MHz / 16) //XTAL is guessed
|
||||
MCFG_MC6845_SHOW_BORDER_AREA(false)
|
||||
|
@ -28,8 +28,6 @@ ToDo:
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#define NEWFDC 1
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
@ -46,14 +44,8 @@ ToDo:
|
||||
#include "machine/z80dma.h"
|
||||
#include "machine/rescap.h"
|
||||
#include "machine/74123.h"
|
||||
#if NEWFDC
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "formats/excali64_dsk.h"
|
||||
#else
|
||||
#include "machine/wd17xx.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "formats/basicdsk.h"
|
||||
#endif
|
||||
|
||||
class excali64_state : public driver_device
|
||||
{
|
||||
@ -69,10 +61,8 @@ public:
|
||||
, m_u12(*this, "u12")
|
||||
, m_centronics(*this, "centronics")
|
||||
, m_fdc(*this, "fdc")
|
||||
#if NEWFDC
|
||||
, m_floppy0(*this, "fdc:0")
|
||||
, m_floppy1(*this, "fdc:1")
|
||||
#endif
|
||||
{ }
|
||||
|
||||
DECLARE_PALETTE_INIT(excali64);
|
||||
@ -85,9 +75,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(porte4_w);
|
||||
DECLARE_READ8_MEMBER(porte8_r);
|
||||
DECLARE_WRITE8_MEMBER(portec_w);
|
||||
#if NEWFDC
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
#endif
|
||||
DECLARE_WRITE_LINE_MEMBER(cent_busy_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(busreq_w);
|
||||
DECLARE_READ8_MEMBER(memory_read_byte);
|
||||
@ -118,13 +106,9 @@ private:
|
||||
required_device<z80dma_device> m_dma;
|
||||
required_device<ttl74123_device> m_u12;
|
||||
required_device<centronics_device> m_centronics;
|
||||
#if NEWFDC
|
||||
required_device<wd2793_t> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
#else
|
||||
required_device<wd2793_device> m_fdc;
|
||||
#endif
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START(excali64_mem, AS_PROGRAM, 8, excali64_state)
|
||||
@ -150,11 +134,7 @@ static ADDRESS_MAP_START(excali64_io, AS_IO, 8, excali64_state)
|
||||
AM_RANGE(0xe4, 0xe7) AM_WRITE(porte4_w)
|
||||
AM_RANGE(0xe8, 0xeb) AM_READ(porte8_r)
|
||||
AM_RANGE(0xec, 0xef) AM_WRITE(portec_w)
|
||||
#if NEWFDC
|
||||
AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_t, read, write)
|
||||
#else
|
||||
AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
|
||||
#endif
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -245,7 +225,6 @@ WRITE_LINE_MEMBER( excali64_state::cent_busy_w )
|
||||
m_centronics_busy = state;
|
||||
}
|
||||
|
||||
#if NEWFDC
|
||||
FLOPPY_FORMATS_MEMBER( excali64_state::floppy_formats )
|
||||
FLOPPY_EXCALI64_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
@ -254,37 +233,13 @@ static SLOT_INTERFACE_START( excali64_floppies )
|
||||
SLOT_INTERFACE( "drive0", FLOPPY_525_QD )
|
||||
SLOT_INTERFACE( "drive1", FLOPPY_525_QD )
|
||||
SLOT_INTERFACE_END
|
||||
#else
|
||||
static LEGACY_FLOPPY_OPTIONS_START(excali64)
|
||||
LEGACY_FLOPPY_OPTION(excali64_ds, "raw", "Excalibur 64 DS disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
|
||||
HEADS([2])
|
||||
TRACKS([80])
|
||||
SECTORS([5])
|
||||
SECTOR_LENGTH([1024])
|
||||
FIRST_SECTOR_ID([1]))
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
|
||||
static const floppy_interface excali64_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSDD,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(excali64),
|
||||
NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
// pulses from port E4 bit 5 restart the 74123. After 3.6 secs without a pulse, the motor gets turned off.
|
||||
WRITE8_MEMBER( excali64_state::motor_w )
|
||||
{
|
||||
m_motor = BIT(data, 0);
|
||||
#if NEWFDC
|
||||
m_floppy1->get_device()->mon_w(!m_motor);
|
||||
m_floppy0->get_device()->mon_w(!m_motor);
|
||||
#else
|
||||
legacy_floppy_image_device *flop = subdevice<legacy_floppy_image_device>(FLOPPY_0);
|
||||
flop->floppy_mon_w(!m_motor); // motor on
|
||||
flop = subdevice<legacy_floppy_image_device>(FLOPPY_1);
|
||||
flop->floppy_mon_w(!m_motor); // motor on
|
||||
#endif
|
||||
}
|
||||
|
||||
READ8_MEMBER( excali64_state::porte8_r )
|
||||
@ -294,7 +249,6 @@ READ8_MEMBER( excali64_state::porte8_r )
|
||||
|
||||
WRITE8_MEMBER( excali64_state::porte4_w )
|
||||
{
|
||||
#if NEWFDC
|
||||
floppy_image_device *floppy = NULL;
|
||||
if (BIT(data, 0))
|
||||
floppy = m_floppy0->get_device();
|
||||
@ -306,16 +260,6 @@ WRITE8_MEMBER( excali64_state::porte4_w )
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 4));
|
||||
|
||||
#else
|
||||
if BIT(data, 0)
|
||||
m_fdc->set_drive(0);
|
||||
|
||||
if BIT(data, 1)
|
||||
m_fdc->set_drive(1);
|
||||
|
||||
m_fdc->set_side(BIT(data, 4));
|
||||
#endif
|
||||
|
||||
m_u12->b_w(space,offset, BIT(data, 5)); // motor pulse
|
||||
}
|
||||
|
||||
@ -326,11 +270,7 @@ d2 = density select (0 = double)
|
||||
*/
|
||||
WRITE8_MEMBER( excali64_state::portec_w )
|
||||
{
|
||||
#if NEWFDC
|
||||
m_fdc->dden_w(BIT(data, 2));
|
||||
#else
|
||||
m_fdc->dden_w(!BIT(data, 2));
|
||||
#endif
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( excali64_state::busreq_w )
|
||||
@ -651,17 +591,12 @@ static MACHINE_CONFIG_START( excali64, excali64_state )
|
||||
|
||||
/* Devices */
|
||||
MCFG_CASSETTE_ADD( "cassette" )
|
||||
#if NEWFDC
|
||||
|
||||
MCFG_WD2793x_ADD("fdc", XTAL_16MHz / 16)
|
||||
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", excali64_floppies, "drive0", excali64_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", excali64_floppies, "drive1", excali64_state::floppy_formats)
|
||||
#else
|
||||
MCFG_DEVICE_ADD("fdc", WD2793, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE2_TAGS
|
||||
MCFG_WD17XX_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
|
||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(excali64_floppy_interface)
|
||||
#endif
|
||||
|
||||
MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_16MHz/4)
|
||||
MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(excali64_state, busreq_w))
|
||||
MCFG_Z80DMA_IN_MREQ_CB(READ8(excali64_state, memory_read_byte))
|
||||
|
@ -41,8 +41,7 @@
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "video/mc6845.h"
|
||||
//#include "machine/wd_fdc.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
|
||||
|
||||
class mbc200_state : public driver_device
|
||||
@ -56,14 +55,13 @@ public:
|
||||
, m_vram(*this, "vram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_fdc(*this, "fdc")
|
||||
//, m_floppy0(*this, "fdc:0")
|
||||
//, m_floppy1(*this, "fdc:1")
|
||||
, m_floppy0(*this, FLOPPY_0)
|
||||
, m_floppy1(*this, FLOPPY_1)
|
||||
, m_floppy0(*this, "fdc:0")
|
||||
, m_floppy1(*this, "fdc:1")
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(p2_porta_r);
|
||||
DECLARE_WRITE8_MEMBER(pm_porta_w);
|
||||
DECLARE_WRITE8_MEMBER(pm_portb_w);
|
||||
MC6845_UPDATE_ROW(update_row);
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
@ -75,12 +73,9 @@ private:
|
||||
required_device<i8255_device> m_ppi_m;
|
||||
required_shared_ptr<UINT8> m_vram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
//required_device<mb8876_t> m_fdc;
|
||||
//required_device<floppy_connector> m_floppy0;
|
||||
//required_device<floppy_connector> m_floppy1;
|
||||
required_device<mb8876_device> m_fdc;
|
||||
required_device<legacy_floppy_image_device> m_floppy0;
|
||||
required_device<legacy_floppy_image_device> m_floppy1;
|
||||
required_device<mb8876_t> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
};
|
||||
|
||||
|
||||
@ -97,13 +92,32 @@ WRITE8_MEMBER( mbc200_state::pm_porta_w )
|
||||
m_comm_latch = data; // to slave CPU
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( mbc200_state::pm_portb_w )
|
||||
{
|
||||
floppy_image_device *floppy = NULL;
|
||||
|
||||
// to be verified
|
||||
switch (data & 0x01)
|
||||
{
|
||||
case 0: floppy = m_floppy0->get_device(); break;
|
||||
case 1: floppy = m_floppy1->get_device(); break;
|
||||
}
|
||||
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
if (floppy)
|
||||
{
|
||||
floppy->mon_w(0);
|
||||
floppy->ss_w(BIT(data, 7));
|
||||
}
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( mbc200_io , AS_IO, 8, mbc200_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("i8251_1", i8251_device, data_r, data_w)
|
||||
AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("i8251_1", i8251_device, status_r, control_w)
|
||||
//AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_t, read, write)
|
||||
AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_device, read, write)
|
||||
AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_t, read, write)
|
||||
AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi_m", i8255_device, read, write)
|
||||
AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("i8251_2", i8251_device, data_r, data_w)
|
||||
AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("i8251_2", i8251_device, status_r, control_w)
|
||||
@ -142,18 +156,6 @@ INPUT_PORTS_END
|
||||
|
||||
void mbc200_state::machine_start()
|
||||
{
|
||||
// floppy_image_device *floppy = NULL;
|
||||
// floppy = m_floppy0->get_device();
|
||||
// floppy1 not supported currently
|
||||
// m_fdc->set_floppy(floppy);
|
||||
|
||||
// if (floppy)
|
||||
// floppy->mon_w(0);
|
||||
|
||||
m_floppy0->floppy_mon_w(0);
|
||||
m_floppy1->floppy_mon_w(0);
|
||||
m_floppy0->floppy_drive_set_ready_state(1, 1);
|
||||
m_floppy1->floppy_drive_set_ready_state(1, 1);
|
||||
}
|
||||
|
||||
void mbc200_state::machine_reset()
|
||||
@ -163,16 +165,9 @@ void mbc200_state::machine_reset()
|
||||
memcpy(main, roms, 0x1000);
|
||||
}
|
||||
|
||||
static const floppy_interface mbc200_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_SSDD_40,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(default),
|
||||
"floppy_5_25"
|
||||
};
|
||||
|
||||
//static SLOT_INTERFACE_START( mbc200_floppies )
|
||||
// SLOT_INTERFACE( "525dd", FLOPPY_525_SSDD )
|
||||
//SLOT_INTERFACE_END
|
||||
static SLOT_INTERFACE_START( mbc200_floppies )
|
||||
SLOT_INTERFACE("qd", FLOPPY_525_QD )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
MC6845_UPDATE_ROW( mbc200_state::update_row )
|
||||
{
|
||||
@ -244,16 +239,14 @@ static MACHINE_CONFIG_START( mbc200, mbc200_state )
|
||||
|
||||
MCFG_DEVICE_ADD("ppi_m", I8255, 0)
|
||||
MCFG_I8255_OUT_PORTA_CB(WRITE8(mbc200_state, pm_porta_w))
|
||||
MCFG_I8255_OUT_PORTB_CB(WRITE8(mbc200_state, pm_portb_w))
|
||||
|
||||
MCFG_DEVICE_ADD("i8251_1", I8251, 0) // INS8251N
|
||||
MCFG_DEVICE_ADD("i8251_2", I8251, 0) // INS8251A
|
||||
|
||||
//MCFG_MB8876x_ADD("fdc", 1000000) // guess
|
||||
//MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbc200_floppies, "525dd", floppy_image_device::default_floppy_formats)
|
||||
//MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbc200_floppies, "525dd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_DEVICE_ADD("fdc", MB8876, 0) // MB8876A
|
||||
MCFG_WD17XX_DEFAULT_DRIVE2_TAGS
|
||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(mbc200_floppy_interface)
|
||||
MCFG_MB8876x_ADD("fdc", XTAL_8MHz / 8) // guess
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbc200_floppies, "qd", floppy_image_device::default_floppy_formats)
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "mbc200")
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "cpu/i8085/i8085.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "formats/basicdsk.h"
|
||||
#include "formats/pk8020_dsk.h"
|
||||
#include "includes/pk8020.h"
|
||||
#include "machine/ram.h"
|
||||
|
||||
@ -141,21 +141,6 @@ static INPUT_PORTS_START( pk8020 )
|
||||
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static LEGACY_FLOPPY_OPTIONS_START(pk8020)
|
||||
LEGACY_FLOPPY_OPTION(pk8020, "kdi", "PK8020 disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
|
||||
HEADS([2])
|
||||
TRACKS([80])
|
||||
SECTORS([5])
|
||||
SECTOR_LENGTH([1024])
|
||||
FIRST_SECTOR_ID([1]))
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
|
||||
static const floppy_interface pk8020_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSHD,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(pk8020),
|
||||
"floppy_5_25"
|
||||
};
|
||||
|
||||
/* F4 Character Displayer */
|
||||
static const gfx_layout pk8020_charlayout =
|
||||
@ -176,6 +161,15 @@ static GFXDECODE_START( pk8020 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( pk8020_state::floppy_formats )
|
||||
FLOPPY_PK8020_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
static SLOT_INTERFACE_START( pk8020_floppies )
|
||||
SLOT_INTERFACE("qd", FLOPPY_525_QD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
||||
/* Machine driver */
|
||||
static MACHINE_CONFIG_START( pk8020, pk8020_state )
|
||||
/* basic machine hardware */
|
||||
@ -221,9 +215,14 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state )
|
||||
MCFG_DEVICE_ADD("rs232", I8251, 0)
|
||||
MCFG_DEVICE_ADD("lan", I8251, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("wd1793", FD1793, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_WD17XX_DDEN_CALLBACK(VCC)
|
||||
MCFG_FD1793x_ADD("wd1793", XTAL_20MHz / 20)
|
||||
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd1793:0", pk8020_floppies, "qd", pk8020_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd1793:1", pk8020_floppies, "qd", pk8020_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd1793:2", pk8020_floppies, "qd", pk8020_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd1793:3", pk8020_floppies, "qd", pk8020_state::floppy_formats)
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "korvet_flop")
|
||||
|
||||
/* audio hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
@ -235,9 +234,6 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state )
|
||||
MCFG_CASSETTE_ADD( "cassette" )
|
||||
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
|
||||
|
||||
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(pk8020_floppy_interface)
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","korvet_flop")
|
||||
|
||||
/* internal ram */
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("258K") //64 + 4*48 + 2
|
||||
|
@ -206,6 +206,7 @@
|
||||
************************************************************************************************/
|
||||
|
||||
#include "includes/x1.h"
|
||||
#include "formats/x1_dsk.h"
|
||||
|
||||
#define MAIN_CLOCK XTAL_16MHz
|
||||
#define VDP_CLOCK XTAL_42_9545MHz
|
||||
@ -1021,10 +1022,12 @@ READ8_MEMBER( x1_state::x1_fdc_r )
|
||||
|
||||
WRITE8_MEMBER( x1_state::x1_fdc_w )
|
||||
{
|
||||
floppy_image_device *floppy = NULL;
|
||||
|
||||
switch(offset+0xff8)
|
||||
{
|
||||
case 0x0ff8:
|
||||
m_fdc->command_w(space, offset,data);
|
||||
m_fdc->cmd_w(space, offset,data);
|
||||
break;
|
||||
case 0x0ff9:
|
||||
m_fdc->track_w(space, offset,data);
|
||||
@ -1035,12 +1038,25 @@ WRITE8_MEMBER( x1_state::x1_fdc_w )
|
||||
case 0x0ffb:
|
||||
m_fdc->data_w(space, offset,data);
|
||||
break;
|
||||
|
||||
case 0x0ffc:
|
||||
m_fdc->set_drive(data & 3);
|
||||
floppy_get_device(machine(), data & 3)->floppy_mon_w(!BIT(data, 7));
|
||||
floppy_get_device(machine(), data & 3)->floppy_drive_set_ready_state(data & 0x80,0);
|
||||
m_fdc->set_side(BIT(data, 4));
|
||||
switch (data & 0x03)
|
||||
{
|
||||
case 0: floppy = m_floppy0->get_device(); break;
|
||||
case 1: floppy = m_floppy1->get_device(); break;
|
||||
case 2: floppy = m_floppy2->get_device(); break;
|
||||
case 3: floppy = m_floppy3->get_device(); break;
|
||||
}
|
||||
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
if (floppy)
|
||||
{
|
||||
floppy->ss_w(BIT(data, 4));
|
||||
floppy->mon_w(!BIT(data, 7));
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0ffd:
|
||||
case 0x0ffe:
|
||||
case 0x0fff:
|
||||
@ -2414,21 +2430,13 @@ PALETTE_INIT_MEMBER(x1_state,x1)
|
||||
palette.set_pen_color(i,rgb_t(0x00,0x00,0x00));
|
||||
}
|
||||
|
||||
static LEGACY_FLOPPY_OPTIONS_START( x1 )
|
||||
LEGACY_FLOPPY_OPTION( img2d, "2d", "2D disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
|
||||
HEADS([2])
|
||||
TRACKS([40])
|
||||
SECTORS([16])
|
||||
SECTOR_LENGTH([256])
|
||||
FIRST_SECTOR_ID([1]))
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
FLOPPY_FORMATS_MEMBER( x1_state::floppy_formats )
|
||||
FLOPPY_X1_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
static const floppy_interface x1_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSDD_40,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(x1),
|
||||
"floppy_5_25"
|
||||
};
|
||||
static SLOT_INTERFACE_START( x1_floppies )
|
||||
SLOT_INTERFACE("dd", FLOPPY_525_DD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static MACHINE_CONFIG_START( x1, x1_state )
|
||||
/* basic machine hardware */
|
||||
@ -2475,8 +2483,14 @@ static MACHINE_CONFIG_START( x1, x1_state )
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(x1_state,x1)
|
||||
|
||||
MCFG_DEVICE_ADD("fdc", MB8877, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_MB8877x_ADD("fdc", MAIN_CLOCK / 16)
|
||||
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:2", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:3", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
|
||||
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "x1_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom")
|
||||
@ -2502,9 +2516,6 @@ static MACHINE_CONFIG_START( x1, x1_state )
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
|
||||
|
||||
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(x1_floppy_interface)
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", x1_state, x1_keyboard_callback, attotime::from_hz(250))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("cmt_wind_timer", x1_state, x1_cmt_wind_timer, attotime::from_hz(16))
|
||||
MACHINE_CONFIG_END
|
||||
@ -2527,10 +2538,8 @@ static MACHINE_CONFIG_DERIVED( x1turbo, x1 )
|
||||
MCFG_Z80DMA_IN_IORQ_CB(READ8(x1_state, io_read_byte))
|
||||
MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(x1_state, io_write_byte))
|
||||
|
||||
MCFG_DEVICE_REMOVE("fdc")
|
||||
MCFG_DEVICE_ADD("fdc", MB8877, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(x1_state,fdc_drq_w))
|
||||
MCFG_DEVICE_MODIFY("fdc")
|
||||
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(x1_state, fdc_drq_w))
|
||||
|
||||
MCFG_YM2151_ADD("ym", MAIN_CLOCK/8) //option board
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
|
||||
|
@ -15,6 +15,7 @@
|
||||
************************************************************************************************/
|
||||
|
||||
#include "includes/x1.h"
|
||||
#include "formats/x1_dsk.h"
|
||||
|
||||
#include "includes/pce.h"
|
||||
//#include "cpu/h6280/h6280.h"
|
||||
@ -394,23 +395,9 @@ static const z80_daisy_config x1_daisy[] =
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static LEGACY_FLOPPY_OPTIONS_START( x1 )
|
||||
LEGACY_FLOPPY_OPTION( img2d, "2d", "2D disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
|
||||
HEADS([2])
|
||||
TRACKS([40])
|
||||
SECTORS([16])
|
||||
SECTOR_LENGTH([256])
|
||||
FIRST_SECTOR_ID([1]))
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
|
||||
static const floppy_interface x1_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSDD_40,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(x1),
|
||||
"floppy_5_25"
|
||||
};
|
||||
|
||||
|
||||
static SLOT_INTERFACE_START( x1_floppies )
|
||||
SLOT_INTERFACE("dd", FLOPPY_525_DD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static MACHINE_CONFIG_START( x1twin, x1twin_state )
|
||||
/* basic machine hardware */
|
||||
@ -471,8 +458,14 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state )
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(x1twin_state,x1)
|
||||
|
||||
MCFG_DEVICE_ADD("fdc", MB8877, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_MB8877x_ADD("fdc", MAIN_CLOCK / 16)
|
||||
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:2", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:3", x1_floppies, "dd", x1_state::floppy_formats)
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
|
||||
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "x1_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,rom")
|
||||
@ -503,9 +496,6 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state )
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cass_list","x1_cass")
|
||||
|
||||
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(x1_floppy_interface)
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","x1_flop")
|
||||
|
||||
#if 0
|
||||
MCFG_SOUND_ADD("c6280", C6280, PCE_MAIN_CLOCK/6)
|
||||
MCFG_C6280_CPU("pce_cpu")
|
||||
|
@ -10,7 +10,7 @@
|
||||
#define DGN_BETA_H_
|
||||
|
||||
#include "video/mc6845.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/ram.h"
|
||||
|
||||
@ -58,12 +58,6 @@
|
||||
#define KOutDat KInClk /* Also used for data into output shifter */
|
||||
#define KInDat 0x20 /* Keyboard data in from keyboard (serial stream) */
|
||||
|
||||
/***** WD2797 pins *****/
|
||||
|
||||
#define DSMask 0x03 /* PA0 & PA1 are binary encoded drive */
|
||||
#define ENPCtrl 0x20 /* PA5 on PIA */
|
||||
#define DDenCtrl 0x40 /* PA6 on PIA */
|
||||
|
||||
/***** Video Modes *****/
|
||||
|
||||
enum BETA_VID_MODES
|
||||
@ -93,8 +87,15 @@ public:
|
||||
m_videoram(*this, "videoram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_fdc(*this, FDC_TAG),
|
||||
m_floppy0(*this, FDC_TAG ":0"),
|
||||
m_floppy1(*this, FDC_TAG ":1"),
|
||||
m_floppy2(*this, FDC_TAG ":2"),
|
||||
m_floppy3(*this, FDC_TAG ":3"),
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
required_device<mc6845_device> m_mc6845;
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
|
||||
@ -214,6 +215,11 @@ public:
|
||||
void dgn_beta_frame_interrupt (int data);
|
||||
void dgn_beta_line_interrupt (int data);
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<wd2797_t> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
required_device<floppy_connector> m_floppy3;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "machine/pit8253.h"
|
||||
#include "machine/pic8259.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "sound/speaker.h"
|
||||
#include "sound/wave.h"
|
||||
@ -33,6 +33,10 @@ public:
|
||||
m_lan(*this, "lan"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_wd1793(*this, "wd1793"),
|
||||
m_floppy0(*this, "wd1793:0"),
|
||||
m_floppy1(*this, "wd1793:1"),
|
||||
m_floppy2(*this, "wd1793:2"),
|
||||
m_floppy3(*this, "wd1793:3"),
|
||||
m_pit8253(*this, "pit8253"),
|
||||
m_pic8259(*this, "pic8259"),
|
||||
m_speaker(*this, "speaker"),
|
||||
@ -40,6 +44,8 @@ public:
|
||||
m_region_gfx1(*this, "gfx1"),
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
UINT8 m_color;
|
||||
UINT8 m_video_page;
|
||||
UINT8 m_wide;
|
||||
@ -84,7 +90,11 @@ protected:
|
||||
required_device<i8251_device> m_rs232;
|
||||
required_device<i8251_device> m_lan;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<fd1793_device> m_wd1793;
|
||||
required_device<fd1793_t> m_wd1793;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
required_device<floppy_connector> m_floppy3;
|
||||
required_device<pit8253_device> m_pit8253;
|
||||
required_device<pic8259_device> m_pic8259;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "machine/z80ctc.h"
|
||||
#include "machine/z80dart.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/z80dma.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "sound/2151intf.h"
|
||||
@ -81,6 +81,10 @@ public:
|
||||
m_cassette(*this, "cassette"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_fdc(*this, "fdc"),
|
||||
m_floppy0(*this, "fdc:0"),
|
||||
m_floppy1(*this, "fdc:1"),
|
||||
m_floppy2(*this, "fdc:2"),
|
||||
m_floppy3(*this, "fdc:3"),
|
||||
m_crtc(*this, "crtc"),
|
||||
m_ctc(*this, "ctc"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
@ -88,10 +92,16 @@ public:
|
||||
m_dma(*this, "dma")
|
||||
{ }
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
required_device<mb8877_device> m_fdc;
|
||||
required_device<mb8877_t> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
required_device<floppy_connector> m_floppy3;
|
||||
required_device<mc6845_device> m_crtc;
|
||||
required_device<z80ctc_device> m_ctc;
|
||||
|
||||
|
@ -182,7 +182,7 @@ static SLOT_INTERFACE_START( beta_disk_floppies )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( beta_disk )
|
||||
MCFG_WD2793x_ADD("wd179x", XTAL_8MHz / 8) // KR1818VG93 clone of WD1793
|
||||
MCFG_KR1818VG93x_ADD("wd179x", XTAL_8MHz / 8)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd179x:0", beta_disk_floppies, "drive0", beta_disk_device::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd179x:1", beta_disk_floppies, "drive1", beta_disk_device::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd179x:2", beta_disk_floppies, "drive2", beta_disk_device::floppy_formats)
|
||||
|
@ -50,7 +50,7 @@ protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
|
||||
private:
|
||||
required_device<wd2793_t> m_wd179x;
|
||||
required_device<kr1818vg93_t> m_wd179x;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
|
@ -64,7 +64,6 @@
|
||||
#include "machine/6821pia.h"
|
||||
#include "includes/dgn_beta.h"
|
||||
#include "machine/mos6551.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
|
||||
#include "debug/debugcpu.h"
|
||||
@ -567,7 +566,6 @@ READ8_MEMBER(dgn_beta_state::d_pia1_pa_r)
|
||||
WRITE8_MEMBER(dgn_beta_state::d_pia1_pa_w)
|
||||
{
|
||||
int HALT_DMA;
|
||||
wd2797_device *fdc = machine().device<wd2797_device>(FDC_TAG);
|
||||
|
||||
/* Only play with halt line if halt bit changed since last write */
|
||||
if((data & 0x80) != m_d_pia1_pa_last)
|
||||
@ -589,10 +587,20 @@ WRITE8_MEMBER(dgn_beta_state::d_pia1_pa_w)
|
||||
}
|
||||
|
||||
/* Drive selects are binary encoded on PA0 & PA1 */
|
||||
fdc->set_drive(~data & DSMask);
|
||||
floppy_image_device *floppy = NULL;
|
||||
|
||||
/* Set density of WD2797 */
|
||||
fdc->dden_w(BIT(data, 6));
|
||||
switch (~data & 0x03)
|
||||
{
|
||||
case 0: floppy = m_floppy0->get_device(); break;
|
||||
case 1: floppy = m_floppy1->get_device(); break;
|
||||
case 2: floppy = m_floppy2->get_device(); break;
|
||||
case 3: floppy = m_floppy3->get_device(); break;
|
||||
}
|
||||
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
// not connected: bit 5 = ENP
|
||||
m_fdc->dden_w(BIT(data, 6));
|
||||
LOG_DISK(("Set density %s\n", BIT(data, 6) ? "low" : "high"));
|
||||
}
|
||||
|
||||
@ -787,7 +795,7 @@ void dgn_beta_state::cpu1_recalc_firq(int state)
|
||||
/********************************************************************************************/
|
||||
|
||||
/* The INTRQ line goes through pia2 ca1, in exactly the same way as DRQ from DragonDos does */
|
||||
WRITE_LINE_MEMBER(dgn_beta_state::dgnbeta_fdc_intrq_w)
|
||||
WRITE_LINE_MEMBER( dgn_beta_state::dgnbeta_fdc_intrq_w )
|
||||
{
|
||||
device_t *device = machine().device(PIA_2_TAG);
|
||||
LOG_DISK(("dgnbeta_fdc_intrq_w(%d)\n", state));
|
||||
@ -796,64 +804,21 @@ WRITE_LINE_MEMBER(dgn_beta_state::dgnbeta_fdc_intrq_w)
|
||||
}
|
||||
|
||||
/* DRQ is routed through various logic to the FIRQ inturrupt line on *BOTH* CPUs */
|
||||
WRITE_LINE_MEMBER(dgn_beta_state::dgnbeta_fdc_drq_w)
|
||||
WRITE_LINE_MEMBER( dgn_beta_state::dgnbeta_fdc_drq_w )
|
||||
{
|
||||
LOG_DISK(("dgnbeta_fdc_drq_w(%d)\n", state));
|
||||
cpu1_recalc_firq(state);
|
||||
}
|
||||
|
||||
READ8_MEMBER(dgn_beta_state::dgnbeta_wd2797_r)
|
||||
READ8_MEMBER( dgn_beta_state::dgnbeta_wd2797_r )
|
||||
{
|
||||
int result = 0;
|
||||
wd2797_device *fdc = machine().device<wd2797_device>(FDC_TAG);
|
||||
|
||||
switch(offset & 0x03)
|
||||
{
|
||||
case 0:
|
||||
result = fdc->status_r(space, 0);
|
||||
LOG_DISK(("Disk status=%2.2X\n",result));
|
||||
break;
|
||||
case 1:
|
||||
result = fdc->track_r(space, 0);
|
||||
break;
|
||||
case 2:
|
||||
result = fdc->sector_r(space, 0);
|
||||
break;
|
||||
case 3:
|
||||
result = fdc->data_r(space, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
return m_fdc->read(space, offset & 0x03);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(dgn_beta_state::dgnbeta_wd2797_w)
|
||||
WRITE8_MEMBER( dgn_beta_state::dgnbeta_wd2797_w )
|
||||
{
|
||||
wd2797_device *fdc = machine().device<wd2797_device>(FDC_TAG);
|
||||
|
||||
m_wd2797_written=1;
|
||||
|
||||
switch(offset & 0x3)
|
||||
{
|
||||
case 0:
|
||||
/* disk head is encoded in the command byte */
|
||||
/* But only for Type 3/4 commands */
|
||||
if(data & 0x80)
|
||||
fdc->set_side((data & 0x02) ? 1 : 0);
|
||||
fdc->command_w(space, 0, data);
|
||||
break;
|
||||
case 1:
|
||||
fdc->track_w(space, 0, data);
|
||||
break;
|
||||
case 2:
|
||||
fdc->sector_w(space, 0, data);
|
||||
break;
|
||||
case 3:
|
||||
fdc->data_w(space, 0, data);
|
||||
break;
|
||||
};
|
||||
m_wd2797_written = 1;
|
||||
m_fdc->write(space, offset & 0x03, data);
|
||||
}
|
||||
|
||||
/* Scan physical keyboard into Keyboard array */
|
||||
@ -924,7 +889,6 @@ void dgn_beta_state::dgn_beta_line_interrupt (int data)
|
||||
/********************************* Machine/Driver Initialization ****************************************/
|
||||
void dgn_beta_state::machine_reset()
|
||||
{
|
||||
wd2797_device *fdc = machine().device<wd2797_device>(FDC_TAG);
|
||||
pia6821_device *pia_0 = machine().device<pia6821_device>( PIA_0_TAG );
|
||||
pia6821_device *pia_1 = machine().device<pia6821_device>( PIA_1_TAG );
|
||||
pia6821_device *pia_2 = machine().device<pia6821_device>( PIA_2_TAG );
|
||||
@ -963,12 +927,8 @@ void dgn_beta_state::machine_reset()
|
||||
m_DMA_NMI_LAST = 0x80; /* start with DMA NMI inactive, as pulled up */
|
||||
// DMA_NMI = CLEAR_LINE; /* start with DMA NMI inactive */
|
||||
|
||||
fdc->dden_w(CLEAR_LINE);
|
||||
fdc->set_drive(0);
|
||||
|
||||
m_videoram.set_target(m_ram->pointer(),m_videoram.bytes()); /* Point video ram at the start of physical ram */
|
||||
|
||||
fdc->reset();
|
||||
m_wd2797_written=0;
|
||||
|
||||
m_maincpu->reset();
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include "emu.h"
|
||||
#include "includes/pk8020.h"
|
||||
#include "cpu/i8085/i8085.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
|
||||
|
||||
@ -157,13 +156,7 @@ READ8_MEMBER(pk8020_state::devices_r)
|
||||
case 1 : return m_rs232->status_r(space,0);
|
||||
}
|
||||
break;
|
||||
case 0x18: switch(offset & 3) {
|
||||
case 0 : return m_wd1793->status_r(space, 0);
|
||||
case 1 : return m_wd1793->track_r(space, 0);
|
||||
case 2 : return m_wd1793->sector_r(space, 0);
|
||||
case 3 : return m_wd1793->data_r(space, 0);
|
||||
}
|
||||
break;
|
||||
case 0x18: return m_wd1793->read(space, offset & 0x03);
|
||||
case 0x20: switch(offset & 1) {
|
||||
case 0 : return m_lan->data_r(space,0);
|
||||
case 1 : return m_lan->status_r(space,0);
|
||||
@ -187,13 +180,9 @@ WRITE8_MEMBER(pk8020_state::devices_w)
|
||||
case 1 : m_rs232->control_w(space,0,data); break;
|
||||
}
|
||||
break;
|
||||
case 0x18: switch(offset & 3) {
|
||||
case 0 : m_wd1793->command_w(space, 0,data);break;
|
||||
case 1 : m_wd1793->track_w(space, 0,data);break;
|
||||
case 2 : m_wd1793->sector_w(space, 0,data);break;
|
||||
case 3 : m_wd1793->data_w(space, 0,data);break;
|
||||
}
|
||||
break;
|
||||
case 0x18:
|
||||
m_wd1793->write(space, offset & 0x03, data);
|
||||
break;
|
||||
case 0x20: switch(offset & 1) {
|
||||
case 0 : m_lan->data_w(space,0,data); break;
|
||||
case 1 : m_lan->control_w(space,0,data); break;
|
||||
@ -841,29 +830,28 @@ WRITE8_MEMBER(pk8020_state::pk8020_portc_w)
|
||||
|
||||
WRITE8_MEMBER(pk8020_state::pk8020_portb_w)
|
||||
{
|
||||
floppy_image_device *floppy = NULL;
|
||||
|
||||
// Turn all motors off
|
||||
floppy_get_device(machine(), 0)->floppy_mon_w(1);
|
||||
floppy_get_device(machine(), 1)->floppy_mon_w(1);
|
||||
floppy_get_device(machine(), 2)->floppy_mon_w(1);
|
||||
floppy_get_device(machine(), 3)->floppy_mon_w(1);
|
||||
m_wd1793->set_side(BIT(data,4));
|
||||
if (BIT(data,0)) {
|
||||
m_wd1793->set_drive(0);
|
||||
floppy_get_device(machine(), 0)->floppy_mon_w(0);
|
||||
floppy_get_device(machine(), 0)->floppy_drive_set_ready_state(1, 1);
|
||||
} else if (BIT(data,1)) {
|
||||
m_wd1793->set_drive(1);
|
||||
floppy_get_device(machine(), 1)->floppy_mon_w(0);
|
||||
floppy_get_device(machine(), 1)->floppy_drive_set_ready_state(1, 1);
|
||||
} else if (BIT(data,2)) {
|
||||
m_wd1793->set_drive(2);
|
||||
floppy_get_device(machine(), 2)->floppy_mon_w(0);
|
||||
floppy_get_device(machine(), 2)->floppy_drive_set_ready_state(1, 1);
|
||||
} else if (BIT(data,3)) {
|
||||
m_wd1793->set_drive(3);
|
||||
floppy_get_device(machine(), 3)->floppy_mon_w(0);
|
||||
floppy_get_device(machine(), 3)->floppy_drive_set_ready_state(1, 1);
|
||||
if (m_floppy0->get_device()) m_floppy0->get_device()->mon_w(1);
|
||||
if (m_floppy1->get_device()) m_floppy1->get_device()->mon_w(1);
|
||||
if (m_floppy2->get_device()) m_floppy2->get_device()->mon_w(1);
|
||||
if (m_floppy3->get_device()) m_floppy3->get_device()->mon_w(1);
|
||||
|
||||
if (BIT(data, 0)) floppy = m_floppy0->get_device();
|
||||
if (BIT(data, 1)) floppy = m_floppy1->get_device();
|
||||
if (BIT(data, 2)) floppy = m_floppy2->get_device();
|
||||
if (BIT(data, 3)) floppy = m_floppy3->get_device();
|
||||
|
||||
m_wd1793->set_floppy(floppy);
|
||||
|
||||
if (floppy)
|
||||
{
|
||||
floppy->mon_w(0);
|
||||
floppy->ss_w(BIT(data, 4));
|
||||
}
|
||||
|
||||
// todo: at least bit 5 and bit 7 is connected to something too...
|
||||
}
|
||||
|
||||
READ8_MEMBER(pk8020_state::pk8020_portc_r)
|
||||
|
@ -201,7 +201,7 @@ void gime_base_device::device_start(void)
|
||||
// get_composite_color
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE gime_base_device::pixel_t gime_base_device::get_composite_color(int color)
|
||||
inline gime_base_device::pixel_t gime_base_device::get_composite_color(int color)
|
||||
{
|
||||
/* CMP colors
|
||||
*
|
||||
@ -313,7 +313,7 @@ ATTR_FORCE_INLINE gime_base_device::pixel_t gime_base_device::get_composite_colo
|
||||
// get_rgb_color
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE gime_base_device::pixel_t gime_base_device::get_rgb_color(int color)
|
||||
inline gime_base_device::pixel_t gime_base_device::get_rgb_color(int color)
|
||||
{
|
||||
return (((color >> 4) & 2) | ((color >> 2) & 1)) * 0x550000
|
||||
| (((color >> 3) & 2) | ((color >> 1) & 1)) * 0x005500
|
||||
@ -543,7 +543,7 @@ void gime_base_device::reset_timer(void)
|
||||
// update_memory
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void gime_base_device::update_memory(void)
|
||||
inline void gime_base_device::update_memory(void)
|
||||
{
|
||||
for (int bank = 0; bank <= 8; bank++)
|
||||
{
|
||||
@ -701,7 +701,7 @@ UINT8 gime_base_device::read(offs_t offset)
|
||||
// read_gime_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 gime_base_device::read_gime_register(offs_t offset)
|
||||
inline UINT8 gime_base_device::read_gime_register(offs_t offset)
|
||||
{
|
||||
offset &= 0x0F;
|
||||
|
||||
@ -746,7 +746,7 @@ ATTR_FORCE_INLINE UINT8 gime_base_device::read_gime_register(offs_t offset)
|
||||
// read_mmu_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 gime_base_device::read_mmu_register(offs_t offset)
|
||||
inline UINT8 gime_base_device::read_mmu_register(offs_t offset)
|
||||
{
|
||||
return (m_mmu[offset & 0x0F] & 0x3F) | (read_floating_bus() & 0xC0);
|
||||
}
|
||||
@ -757,7 +757,7 @@ ATTR_FORCE_INLINE UINT8 gime_base_device::read_mmu_register(offs_t offset)
|
||||
// read_palette_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 gime_base_device::read_palette_register(offs_t offset)
|
||||
inline UINT8 gime_base_device::read_palette_register(offs_t offset)
|
||||
{
|
||||
// Bits 7/6 are floating, and behave oddly. On a real CoCo 3
|
||||
//
|
||||
@ -775,7 +775,7 @@ ATTR_FORCE_INLINE UINT8 gime_base_device::read_palette_register(offs_t offset)
|
||||
// read_floating_bus
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT8 gime_base_device::read_floating_bus(void)
|
||||
inline UINT8 gime_base_device::read_floating_bus(void)
|
||||
{
|
||||
return m_read_floating_bus(0);
|
||||
}
|
||||
@ -815,7 +815,7 @@ void gime_base_device::write(offs_t offset, UINT8 data)
|
||||
// write_gime_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void gime_base_device::write_gime_register(offs_t offset, UINT8 data)
|
||||
inline void gime_base_device::write_gime_register(offs_t offset, UINT8 data)
|
||||
{
|
||||
// this is needed for writes to FF95
|
||||
bool timer_was_off = (m_gime_registers[0x04] == 0x00) && (m_gime_registers[0x05] == 0x00);
|
||||
@ -1018,7 +1018,7 @@ ATTR_FORCE_INLINE void gime_base_device::write_gime_register(offs_t offset, UINT
|
||||
// write_mmu_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void gime_base_device::write_mmu_register(offs_t offset, UINT8 data)
|
||||
inline void gime_base_device::write_mmu_register(offs_t offset, UINT8 data)
|
||||
{
|
||||
offset &= 0x0F;
|
||||
|
||||
@ -1038,7 +1038,7 @@ ATTR_FORCE_INLINE void gime_base_device::write_mmu_register(offs_t offset, UINT8
|
||||
// write_palette_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void gime_base_device::write_palette_register(offs_t offset, UINT8 data)
|
||||
inline void gime_base_device::write_palette_register(offs_t offset, UINT8 data)
|
||||
{
|
||||
offset &= 0x0F;
|
||||
|
||||
@ -1071,7 +1071,7 @@ ATTR_FORCE_INLINE void gime_base_device::write_palette_register(offs_t offset, U
|
||||
// write_sam_register
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE void gime_base_device::write_sam_register(offs_t offset)
|
||||
inline void gime_base_device::write_sam_register(offs_t offset)
|
||||
{
|
||||
/* change the SAM state */
|
||||
UINT16 xorval = alter_sam_state(offset);
|
||||
@ -1145,7 +1145,7 @@ void gime_base_device::recalculate_firq(void)
|
||||
// John Kowalski confirms this behavior
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE offs_t gime_base_device::get_video_base(void)
|
||||
inline offs_t gime_base_device::get_video_base(void)
|
||||
{
|
||||
offs_t result;
|
||||
UINT8 ff9d_mask, ff9e_mask;
|
||||
@ -1282,7 +1282,7 @@ void gime_base_device::record_border_scanline(UINT16 physical_scanline)
|
||||
// get_lines_per_row
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT16 gime_base_device::get_lines_per_row(void)
|
||||
inline UINT16 gime_base_device::get_lines_per_row(void)
|
||||
{
|
||||
UINT16 lines_per_row;
|
||||
if (m_legacy_video)
|
||||
@ -1361,7 +1361,7 @@ ATTR_FORCE_INLINE UINT16 gime_base_device::get_lines_per_row(void)
|
||||
//-------------------------------------------------
|
||||
|
||||
template<UINT8 xres, gime_base_device::get_data_func get_data, bool record_mode>
|
||||
ATTR_FORCE_INLINE UINT32 gime_base_device::record_scanline_res(int scanline)
|
||||
inline UINT32 gime_base_device::record_scanline_res(int scanline)
|
||||
{
|
||||
int column;
|
||||
UINT32 base_offset = m_legacy_video ? 0 : (m_gime_registers[0x0F] & 0x7F) * 2;
|
||||
@ -1639,7 +1639,7 @@ UINT32 gime_base_device::emit_dummy_samples(const scanline_record *scanline, int
|
||||
// emit_mc6847_samples
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE UINT32 gime_base_device::emit_mc6847_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
inline UINT32 gime_base_device::emit_mc6847_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
{
|
||||
return super::emit_mc6847_samples<2>(
|
||||
scanline->m_mode[sample_start],
|
||||
@ -1659,7 +1659,7 @@ ATTR_FORCE_INLINE UINT32 gime_base_device::emit_mc6847_samples(const scanline_re
|
||||
//-------------------------------------------------
|
||||
|
||||
template<int xscale, int bits_per_pixel>
|
||||
ATTR_FORCE_INLINE UINT32 gime_base_device::emit_gime_graphics_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
inline UINT32 gime_base_device::emit_gime_graphics_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
{
|
||||
const UINT8 *data = &scanline->m_data[sample_start];
|
||||
mc6847_friend_device::emit_graphics<bits_per_pixel, xscale>(data, sample_count, pixels, 0, palette);
|
||||
@ -1673,7 +1673,7 @@ ATTR_FORCE_INLINE UINT32 gime_base_device::emit_gime_graphics_samples(const scan
|
||||
//-------------------------------------------------
|
||||
|
||||
template<int xscale>
|
||||
ATTR_FORCE_INLINE UINT32 gime_base_device::emit_gime_text_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
inline UINT32 gime_base_device::emit_gime_text_samples(const scanline_record *scanline, int sample_start, int sample_count, pixel_t *pixels, const pixel_t *palette)
|
||||
{
|
||||
UINT8 attribute = scanline->m_mode[sample_start];
|
||||
const UINT8 *data = &scanline->m_data[sample_start];
|
||||
@ -1733,7 +1733,7 @@ ATTR_FORCE_INLINE UINT32 gime_base_device::emit_gime_text_samples(const scanline
|
||||
//-------------------------------------------------
|
||||
|
||||
template<int sample_count, gime_base_device::emit_samples_proc emit_samples>
|
||||
ATTR_FORCE_INLINE void gime_base_device::render_scanline(const scanline_record *scanline, pixel_t *pixels, int min_x, int max_x, palette_resolver *resolver)
|
||||
inline void gime_base_device::render_scanline(const scanline_record *scanline, pixel_t *pixels, int min_x, int max_x, palette_resolver *resolver)
|
||||
{
|
||||
int left_border, right_border;
|
||||
int x, x2, pixel_position;
|
||||
@ -1934,7 +1934,7 @@ bool gime_base_device::update_rgb(bitmap_rgb32 &bitmap, const rectangle &cliprec
|
||||
// palette_resolver::palette_resolver
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE gime_base_device::palette_resolver::palette_resolver(gime_base_device *gime, const pixel_t *palette)
|
||||
inline gime_base_device::palette_resolver::palette_resolver(gime_base_device *gime, const pixel_t *palette)
|
||||
{
|
||||
m_gime = gime;
|
||||
m_palette = palette;
|
||||
@ -1948,7 +1948,7 @@ ATTR_FORCE_INLINE gime_base_device::palette_resolver::palette_resolver(gime_base
|
||||
// palette_resolver::get_palette
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE const gime_base_device::pixel_t *gime_base_device::palette_resolver::get_palette(UINT16 palette_rotation)
|
||||
inline const gime_base_device::pixel_t *gime_base_device::palette_resolver::get_palette(UINT16 palette_rotation)
|
||||
{
|
||||
if (UNEXPECTED(m_current_resolved_palette != palette_rotation))
|
||||
{
|
||||
@ -1965,7 +1965,7 @@ ATTR_FORCE_INLINE const gime_base_device::pixel_t *gime_base_device::palette_res
|
||||
// palette_resolver::lookup
|
||||
//-------------------------------------------------
|
||||
|
||||
ATTR_FORCE_INLINE gime_base_device::pixel_t gime_base_device::palette_resolver::lookup(UINT8 color)
|
||||
inline gime_base_device::pixel_t gime_base_device::palette_resolver::lookup(UINT8 color)
|
||||
{
|
||||
assert(color <= 63);
|
||||
return m_palette[color];
|
||||
|
Loading…
Reference in New Issue
Block a user