Previous 199869 Revisions Next

r37066 Sunday 5th April, 2015 at 17:50:24 UTC by Zoƫ Blade
Merge branch 'master' of https://github.com/mamedev/mame
[/trunk]makefile
[3rdparty/bgfx/src]glcontext_nsgl.mm
[3rdparty/genie/src/actions/make]make_cpp.lua
[3rdparty/genie/src/actions/vstudio]vs2010_vcxproj.lua vs2010_vcxproj_filters.lua
[3rdparty/genie/src/actions/xcode]xcode_common.lua
[3rdparty/genie/src/base]api.lua
[3rdparty/genie/src/host]scripts.c
[3rdparty/sqlite3]sqlite3.c
[hash]famicom_flop.xml gamegear.xml nes.xml snes.xml
[scripts]genie.lua toolchain.lua
[scripts/src]3rdparty.lua bus.lua cpu.lua emu.lua lib.lua main.lua sound.lua tools.lua
[scripts/src/osd]modules.lua sdl.lua sdl_cfg.lua windows.lua windows_cfg.lua
[scripts/target/ldplayer]ldplayer.lua
[scripts/target/mame]mame.lua tiny.lua
[scripts/target/mess]mess.lua tiny.lua
[src/emu]attotime.h machine.c
[src/emu/bus/nes]nes_pcb.inc
[src/emu/cpu/m68000]m68kops.c* m68kops.h* makefile*
[src/emu/machine]pci.c vrc4373.c vrc4373.h
[src/emu/sound]es1373.c es1373.h fm.h l7a1045_l6028_dsp_a.c l7a1045_l6028_dsp_a.h segapcm.c
[src/emu/video]rgbvmx.h
[src/lib/util]delegate.h
[src/mame]mame.lst
[src/mame/audio]hng64.c
[src/mame/drivers]berzerk.c bigstrkb.c cps1.c cv1k.c goldstar.c hng64.c iteagle.c peplus.c vicdual.c warpsped.c wiz.c
[src/mame/includes]bigstrkb.h vicdual.h
[src/mame/video]bigstrkb.c
[src/mess/drivers]elecbowl.c hh_hmcs40.c hh_pic16.c hh_tms1k.c hh_ucom4.c mbdtower.c pc88va.c ticalc1x.c tispeak.c
[src/mess/includes]hh_tms1k.h
[src/mess/layout]elecbowl.lay
[src/osd]osdepend.h osdnet.c osdnet.h
[src/osd/modules/font]font_osx.c
[src/osd/modules/lib]osdobj_common.c
[src/osd/modules/netdev]pcap.c
[src/osd/modules/render]drawogl.c
[src/osd/modules/sound]coreaudio_sound.c* direct_sound.c sdl_sound.c
[src/osd/modules/sync]osdsync.h
[src/osd/sdl]main.c sdlmain.c video.h window.c
[src/osd/windows]main.c
[src/ume]tiny.lst ume.lst

trunk/3rdparty/bgfx/src/glcontext_nsgl.mm
r245577r245578
77
88#if BX_PLATFORM_OSX && (BGFX_CONFIG_RENDERER_OPENGLES || BGFX_CONFIG_RENDERER_OPENGL)
99#   include "renderer_gl.h"
10#   include <AvailabilityMacros.h>
1011#   include <Cocoa/Cocoa.h>
1112#   include <bx/os.h>
1213
r245577r245578
3637      }
3738   };
3839
40   class AutoreleasePoolHolder
41   {
42   public:
43      AutoreleasePoolHolder() : pool([[NSAutoreleasePool alloc] init])
44      {
45      }
46
47      ~AutoreleasePoolHolder()
48      {
49         [pool release];
50      }
51
52   private:
53      NSAutoreleasePool* pool;
54   };
55
3956   static void* s_opengl = NULL;
4057
4158   void GlContext::create(uint32_t _width, uint32_t _height)
r245577r245578
4562      s_opengl = bx::dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL");
4663      BX_CHECK(NULL != s_opengl, "OpenGL dynamic library is not found!");
4764
65      const AutoreleasePoolHolder pool;
4866      NSWindow* nsWindow = (NSWindow*)g_bgfxNSWindow;
4967      m_context = g_bgfxNSGL;
5068
5169      if (NULL == g_bgfxNSGL)
5270      {
71#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
5372         NSOpenGLPixelFormatAttribute profile =
5473#if BGFX_CONFIG_RENDERER_OPENGL >= 31
5574            NSOpenGLProfileVersion3_2Core
r245577r245578
5776            NSOpenGLProfileVersionLegacy
5877#endif // BGFX_CONFIG_RENDERER_OPENGL >= 31
5978            ;
79#endif // defined(MAC_OS_X_VERSION_MAX_ALLOWED) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
6080
6181         NSOpenGLPixelFormatAttribute pixelFormatAttributes[] = {
82#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
6283            NSOpenGLPFAOpenGLProfile, profile,
84#endif // defined(MAC_OS_X_VERSION_MAX_ALLOWED) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070)
6385            NSOpenGLPFAColorSize,     24,
6486            NSOpenGLPFAAlphaSize,     8,
6587            NSOpenGLPFADepthSize,     24,
trunk/3rdparty/genie/src/actions/make/make_cpp.lua
r245577r245578
33-- Generate a C/C++ project makefile.
44-- Copyright (c) 2002-2013 Jason Perkins and the Premake project
55--
6
6   premake.make.linkoptions_after = false
77   premake.make.cpp = { }
88   premake.make.override = { }
99   local cpp = premake.make.cpp
r245577r245578
2828
2929      -- list object directories
3030      local objdirs = {}
31      local additionalobjdirs = {}
3132      for _, file in ipairs(prj.files) do
3233         if path.iscppfile(file) then
3334            objdirs[_MAKE.esc(path.getdirectory(path.trimdots(file)))] = 1
3435         end
3536      end
37
38      for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
39         for _, buildtask in ipairs(custombuildtask or {}) do
40            additionalobjdirs[_MAKE.esc(path.getdirectory(path.getrelative(prj.location,buildtask[2])))] = 1
41         end
42      end
43
3644      _p('OBJDIRS := \\')
3745      _p('\t$(OBJDIR) \\')
3846      for dir, _ in pairs(objdirs) do
3947         _p('\t$(OBJDIR)/%s \\', dir)
4048      end
49      for dir, _ in pairs(additionalobjdirs) do
50         _p('\t%s \\', dir)
51      end
4152      _p('')
4253
4354      _p('RESOURCES := \\')
r245577r245578
152163      -- per-file build rules
153164      cpp.fileRules(prj)
154165
166      -- per-dependency build rules
167      cpp.dependencyRules(prj)
168
169      for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
170         for _, buildtask in ipairs(custombuildtask or {}) do
171            local deps =  string.format("%s ",path.getrelative(prj.location,buildtask[1]))
172            for _, depdata in ipairs(buildtask[3] or {}) do
173               deps = deps .. string.format("%s ",path.getrelative(prj.location,depdata))
174            end
175            _p('%s: %s'
176               ,path.getrelative(prj.location,buildtask[2])
177               , deps
178               )
179            for _, cmdline in ipairs(buildtask[4] or {}) do
180               local cmd = cmdline
181               local num = 1
182               for _, depdata in ipairs(buildtask[3] or {}) do
183                  cmd = string.gsub(cmd,"%$%(" .. num .."%)", string.format("%s ",path.getrelative(prj.location,depdata)))
184                  num = num + 1
185               end
186               cmd = string.gsub(cmd, "%$%(<%)", "$<")
187               cmd = string.gsub(cmd, "%$%(@%)", "$@")
188
189               _p('\t$(SILENT) %s',cmd)
190
191            end
192            _p('')
193         end
194      end
195
155196      -- include the dependencies, built by GCC (with the -MMD flag)
156197      _p('-include $(OBJECTS:%%.o=%%.d)')
157198      _p('ifneq (,$(PCH))')
r245577r245578
370411         -- $(LIBS) moved to end (http://sourceforge.net/p/premake/bugs/279/)
371412
372413         local tool = iif(cfg.language == "C", "CC", "CXX")
373         _p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)', tool)
414         if (premake.make.linkoptions_after) then
415            _p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(LIBS) $(ALL_LDFLAGS)', tool)
416         else
417            _p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)', tool)
418         end
374419
375420      end
376421   end
r245577r245578
454499            else
455500               cpp.buildcommand(path.iscfile(file) and not prj.options.ForceCPP, "o")
456501            end
502            for _, task in ipairs(prj.postcompiletasks or {}) do
503               _p('\t$(SILENT) %s', task)
504               _p('')
505            end
506
457507            _p('')
458508         elseif (path.getextension(file) == ".rc") then
459509            _p('$(OBJDIR)/%s.res: %s', _MAKE.esc(path.getbasename(file)), _MAKE.esc(file))
r245577r245578
468518      end
469519   end
470520
521   function cpp.dependencyRules(prj)
522      for _, dependency in ipairs(prj.dependency or {}) do
523         for _, dep in ipairs(dependency or {}) do
524            if (dep[3]==nil or dep[3]==false) then
525               _p('$(OBJDIR)/%s.o: %s'
526                  , _MAKE.esc(path.trimdots(path.removeext(path.getrelative(prj.location, dep[1]))))
527                  , _MAKE.esc(path.getrelative(prj.location, dep[2]))
528                  )
529            else
530               _p('%s: %s'
531                  , _MAKE.esc(dep[1])
532                  , _MAKE.esc(path.getrelative(prj.location, dep[2]))
533                  )
534            end
535            _p('')
536         end
537      end
538   end
539
540
471541   function cpp.buildcommand(iscfile, objext)
472542      local flags = iif(iscfile, '$(CC) $(ALL_CFLAGS)', '$(CXX) $(ALL_CXXFLAGS)')
473543      _p('\t$(SILENT) %s $(FORCE_INCLUDE) -o "$@" -MF $(@:%%.%s=%%.d) -c "$<"', flags, objext)
trunk/3rdparty/genie/src/actions/vstudio/vs2010_vcxproj.lua
r245577r245578
544544      vc2010.simplefilesgroup(prj, "ClInclude")
545545      vc2010.compilerfilesgroup(prj)
546546      vc2010.simplefilesgroup(prj, "None")
547      vc2010.customtaskgroup(prj)
547548      vc2010.simplefilesgroup(prj, "ResourceCompile")
548549      vc2010.simplefilesgroup(prj, "AppxManifest")
549550   end
550551
551
552   function vc2010.customtaskgroup(prj)
553      local files = { }
554      for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
555         for _, buildtask in ipairs(custombuildtask or {}) do
556            local fcfg = { }
557            fcfg.name = path.getrelative(prj.location,buildtask[1])
558            fcfg.vpath = path.trimdots(fcfg.name)
559            table.insert(files, fcfg)
560         end
561      end     
562      if #files > 0  then
563         _p(1,'<ItemGroup>')
564         local groupedBuildTasks = {}
565         for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
566            for _, buildtask in ipairs(custombuildtask or {}) do
567               if (groupedBuildTasks[buildtask[1]] == nil) then
568                  groupedBuildTasks[buildtask[1]] = {}
569               end
570               table.insert(groupedBuildTasks[buildtask[1]], buildtask)
571            end
572         end
573         
574         for name, custombuildtask in pairs(groupedBuildTasks or {}) do
575            _p(2,'<CustomBuild Include=\"%s\">', path.translate(path.getrelative(prj.location,name), "\\"))
576            _p(3,'<FileType>Text</FileType>')
577            local cmd = ""
578            local outputs = ""
579            for _, buildtask in ipairs(custombuildtask or {}) do
580               for _, cmdline in ipairs(buildtask[4] or {}) do
581                  cmd = cmd .. cmdline
582                  local num = 1
583                  for _, depdata in ipairs(buildtask[3] or {}) do
584                     cmd = string.gsub(cmd,"%$%(" .. num .."%)", string.format("%s ",path.getrelative(prj.location,depdata)))
585                     num = num + 1
586                  end
587                  cmd = string.gsub(cmd, "%$%(<%)", string.format("%s ",path.getrelative(prj.location,buildtask[1])))
588                  cmd = string.gsub(cmd, "%$%(@%)", string.format("%s ",path.getrelative(prj.location,buildtask[2])))
589                  cmd = cmd .. "\r\n"
590               end   
591               outputs = outputs .. path.getrelative(prj.location,buildtask[2]) .. ";"
592            end
593            _p(3,'<Command>%s</Command>',cmd)
594            _p(3,'<Outputs>%s%%(Outputs)</Outputs>',outputs)
595            _p(3,'<SubType>Designer</SubType>')
596            _p(3,'<Message></Message>')
597            _p(2,'</CustomBuild>')
598         end
599         _p(1,'</ItemGroup>')
600      end
601   end
602   
552603   function vc2010.simplefilesgroup(prj, section, subtype)
553604      local files = vc2010.getfilegroup(prj, section)
554605      if #files > 0  then
trunk/3rdparty/genie/src/actions/vstudio/vs2010_vcxproj_filters.lua
r245577r245578
4444         end
4545      end
4646     
47      for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
48         for _, buildtask in ipairs(custombuildtask or {}) do
49            local folders = string.explode(path.trimdots(path.getrelative(prj.location,buildtask[1])), "/", true)
50            local path = ""
51            for i = 1, #folders - 1 do
52               -- element is only written if there *are* filters
53               if not filterfound then
54                  filterfound = true
55                  _p(1,'<ItemGroup>')
56               end
57               
58               path = path .. folders[i]
59
60               -- have I seen this path before?
61               if not filters[path] then
62                  filters[path] = true
63                  _p(2, '<Filter Include="%s">', path)
64                  _p(3, '<UniqueIdentifier>{%s}</UniqueIdentifier>', os.uuid())
65                  _p(2, '</Filter>')
66               end
67
68               -- prepare for the next subfolder
69               path = path .. "\\"
70            end   
71         end
72      end
4773      if filterfound then
4874         _p(1,'</ItemGroup>')
4975      end
r245577r245578
5783--
5884
5985   function vc2010.filefiltergroup(prj, section)
60      local files = vc2010.getfilegroup(prj, section)
86      local files = vc2010.getfilegroup(prj, section) or {}
87      if (section == "CustomBuild") then
88         for _, custombuildtask in ipairs(prj.custombuildtask or {}) do
89            for _, buildtask in ipairs(custombuildtask or {}) do
90               local fcfg = { }
91               fcfg.name = path.getrelative(prj.location,buildtask[1])
92               fcfg.vpath = path.trimdots(fcfg.name)
93               table.insert(files, fcfg)
94            end
95         end
96      end
6197      if #files > 0 then
6298         _p(1,'<ItemGroup>')
6399         for _, file in ipairs(files) do
r245577r245578
93129         vc2010.filefiltergroup(prj, "ClInclude")
94130         vc2010.filefiltergroup(prj, "ClCompile")
95131         vc2010.filefiltergroup(prj, "ResourceCompile")
132         vc2010.filefiltergroup(prj, "CustomBuild")
96133      _p('</Project>')
97134   end
trunk/3rdparty/genie/src/actions/xcode/xcode_common.lua
r245577r245578
114114         [".h"]         = "sourcecode.cpp.h",
115115         [".html"]      = "text.html",
116116         [".lua"]       = "sourcecode.lua",
117         [".m"]         = "sourcecode.c.objc",
117         [".m"]         = "sourcecode.cpp.objc",
118118         [".mm"]        = "sourcecode.cpp.objc",
119119         [".nib"]       = "wrapper.nib",
120120         [".pch"]       = "sourcecode.cpp.h",
trunk/3rdparty/genie/src/base/api.lua
r245577r245578
6666         scope = "solution",
6767      },
6868
69      custombuildtask =
70      {
71         kind  = "table",
72         scope = "config",
73      },
74
6975      debugargs =
7076      {
7177         kind = "list",
r245577r245578
97103         usagecopy = true,
98104      },
99105
106      dependency =
107      {
108         kind  = "table",
109         scope = "config",
110      },
111     
100112      excludes =
101113      {
102114         kind  = "filelist",
r245577r245578
427439         scope = "config",
428440      },
429441
442      postcompiletasks =
443      {
444         kind  = "list",
445         scope = "config",
446      },
447     
430448      prelinkcommands =
431449      {
432450         kind  = "list",
r245577r245578
653671
654672
655673--
674-- Adds table value to array of tables
675--
676   function premake.settable(obj, fieldname, value, allowed)
677      obj[fieldname] = obj[fieldname] or {}
678      table.insert(obj[fieldname], value)
679      return obj[fieldname]
680   end
681--
656682-- Adds values to an array-of-directories field of a solution/project/configuration.
657683-- `ctype` specifies the container type (see premake.getobject) for the field. All
658684-- values are converted to absolute paths before being stored.
r245577r245578
789815         return premake.setstring(scope, name, value)
790816      elseif kind == "list" then
791817         return premake.setarray(container, name, value, allowed)
818      elseif kind == "table" then
819         return premake.settable(container, name, value, allowed)
792820      elseif kind == "dirlist" then
793821         return premake.setdirarray(container, name, value)
794822      elseif kind == "filelist" or kind == "absolutefilelist" then
trunk/3rdparty/genie/src/host/scripts.c
r245577r245578
8080   "iles = cfg.removefiles\nif _ACTION == 'gmake' then\nremovefiles = table.join(removefiles, cfg.excludes)\nend\nlocal files = {}\nfor _, fname in ipairs(cfg.files) do\nif not table.icontains(removefiles, fname) then\ntable.insert(files, fname)\nend\nend\ncfg.files = files\nfor name, field in pairs(premake.fields) do\nif field.isflags then\nlocal values = cfg[name]\nfor _, flag in ipairs(values) do values[flag] = true end\nend\nend\ncfg.__fileconfigs = { }\nfor _, fname in ipairs(cfg.files) do\nlocal fcfg = { }\nfcfg.name = fname\ncfg.__fileconfigs[fname] = fcfg\ntable.insert(cfg.__fileconfigs, fcfg)\nend\nend\n",
8181
8282   /* base/api.lua */
83   "premake.fields =\n{\narchivesplit_size =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nbasedir =\n{\nkind  = \"path\",\nscope = \"container\",\n},\nbuildaction =\n{\nkind  = \"string\",\nscope = \"config\",\nallowed = {\n\"Compile\",\n\"Copy\",\n\"Embed\",\n\"None\"\n}\n},\nbuildoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_c =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_cpp =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_objc =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nconfigurations =\n{\nkind  = \"list\",\nscope = \"solution\",\n},\ndebugargs =\n{\nkind = \"list\",\nscope = \"config\",\n},\ndebugdir =\n{\nkind = \"path\",\nscope = \"config\",\n},\ndebugenvs  =\n{\nkind = \"list\",\nscope = \"config\",\n},\ndefines =\n{\nkind  = \"list\",\nscope = \"config\",\n},\ndeploymentoptions =\n{\nkind  = \"list\",\nscope = \"config\",\nusagecopy = true,\n},\nexcludes =\n{\nkind  = \"filelist\",\nscope = \"config\",\n},\nfiles =\n{\nkind  = \"filelist"
84   "\",\nscope = \"config\",\n},\nremovefiles =\n{\nkind  = \"filelist\",\nscope = \"config\",\n},\nflags =\n{\nkind  = \"list\",\nscope = \"config\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_flags = {\nATL = 1,\nDebugEnvsDontMerge = 1,\nDebugEnvsInherit = 1,\nEnableMinimalRebuild = 1,\nEnableSSE = 1,\nEnableSSE2 = 1,\nExtraWarnings = 1,\nFatalWarnings = 1,\nFloatFast = 1,\nFloatStrict = 1,\nManaged = 1,\nMFC = 1,\nNativeWChar = 1,\nNo64BitChecks = 1,\nNoEditAndContinue = 1,\nNoExceptions = 1,\nNoFramePointer = 1,\nNoImportLib = 1,\nNoIncrementalLink = 1,\nNoManifest = 1,\nNoMultiProcessorCompilation = 1,\nNoNativeWChar = 1,\nNoPCH = 1,\nNoRTTI = 1,\nSingleOutputDir = 1,\nOptimize = 1,\nOptimizeSize = 1,\nOptimizeSpeed = 1,\nSEH = 1,\nStaticATL = 1,\nStaticRuntime = 1,\nSymbols = 1,\nUnicode = 1,\nUnsafe = 1,\nUnsignedChar = 1,\nWinMain = 1,\n}\nlocal englishToAmericanSpelling =\n{\noptimise = 'optimize',\noptimisesize = 'optimizesize',\noptimisespeed = 'optimizespeed',\n}\nloc"
85   "al lowervalue = value:lower()\nlowervalue = englishToAmericanSpelling[lowervalue] or lowervalue\nfor v, _ in pairs(allowed_flags) do\nif v:lower() == lowervalue then\nreturn v\nend\nend\nreturn nil, \"invalid flag\"\nend,\n},\nframework =\n{\nkind = \"string\",\nscope = \"container\",\nallowed = {\n\"1.0\",\n\"1.1\",\n\"2.0\",\n\"3.0\",\n\"3.5\",\n\"4.0\",\n\"4.5\",\n}\n},\nforcedincludes =\n{\nkind  = \"absolutefilelist\",\nscope = \"config\",\n},\nimagepath =\n{\nkind = \"path\",\nscope = \"config\",\n},\nimageoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nimplibdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\nimplibextension =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibname =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibprefix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibsuffix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nincludedirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\nusagecopy = true,\n},\nkind =\n{\nkind  = \"string\",\nscope = \"co"
86   "nfig\",\nallowed = {\n\"ConsoleApp\",\n\"WindowedApp\",\n\"StaticLib\",\n\"SharedLib\"\n}\n},\nlanguage =\n{\nkind  = \"string\",\nscope = \"container\",\nallowed = {\n\"C\",\n\"C++\",\n\"C#\"\n}\n},\nlibdirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\nlinkagecopy = true,\n},\nlinkoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nlinks =\n{\nkind  = \"list\",\nscope = \"config\",\nallowed = function(value)\nif value:find('/', nil, true) then\nvalue = path.getabsolute(value)\nend\nreturn value\nend,\nlinkagecopy = true,\n},\nlocation =\n{\nkind  = \"path\",\nscope = \"container\",\n},\nmakesettings =\n{\nkind = \"list\",\nscope = \"config\",\n},\nmessageskip =\n{\nkind  = \"list\",\nscope = \"solution\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_messages = {\nSkipCreatingMessage = 1,\nSkipBuildingMessage = 1,\nSkipCleaningMessage = 1,\n}\nlocal lowervalue = value:lower()\nfor v, _ in pairs(allowed_messages) do\nif v:lower() == lowervalue then\nreturn v\nend\nend"
87   "\nreturn nil, \"invalid message to skip\"\nend,\n},\nmsgarchiving =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgcompile =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgcompile_objc =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgresource =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsglinking =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nobjdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\noptions =\n{\nkind  = \"list\",\nscope = \"container\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_options = {\nForceCPP = 1,\nArchiveSplit = 1\n}\nlocal lowervalue = value:lower()\nfor v, _ in pairs(allowed_options) do\nif v:lower() == lowervalue then\nreturn v\nend\nend\nreturn nil, \"invalid option\"\nend,\n},\npchheader =\n{\nkind  = \"string\",\nscope = \"config\",\n},\npchsource =\n{\nkind  = \"path\",\nscope = \"config\",\n},\nplatforms =\n{\nkind  = \"list\",\nscope = \"solution\",\nallowed = table.keys(premake.platforms),\n},\npostbuildcomman"
88   "ds =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nprebuildcommands =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nprelinkcommands =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nresdefines =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nresincludedirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\n},\nresoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nstartproject =\n{\nkind  = \"string\",\nscope = \"solution\",\n},\ntargetdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\ntargetsubdir =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetextension =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetname =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetprefix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetsuffix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntrimpaths =\n{\nkind = \"dirlist\",\nscope = \"config\",\n},\nuuid =\n{\nkind  = \"string\",\nscope = \"container\",\nallowed = function(value)\nlocal ok = true\nif (#value ~= 36) then ok = false "
89   "end\nfor i=1,36 do\nlocal ch = value:sub(i,i)\nif (not ch:find(\"[ABCDEFabcdef0123456789-]\")) then ok = false end\nend\nif (value:sub(9,9) ~= \"-\")   then ok = false end\nif (value:sub(14,14) ~= \"-\") then ok = false end\nif (value:sub(19,19) ~= \"-\") then ok = false end\nif (value:sub(24,24) ~= \"-\") then ok = false end\nif (not ok) then\nreturn nil, \"invalid UUID\"\nend\nreturn value:upper()\nend\n},\nuses =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nvpaths =\n{\nkind = \"keypath\",\nscope = \"container\",\n},\n}\npremake.check_paths = false\nfunction premake.checkvalue(value, allowed)\nif (allowed) then\nif (type(allowed) == \"function\") then\nreturn allowed(value)\nelse\nfor _,v in ipairs(allowed) do\nif (value:lower() == v:lower()) then\nreturn v\nend\nend\nreturn nil, \"invalid value '\" .. value .. \"'\"\nend\nelse\nreturn value\nend\nend\nfunction premake.getobject(t)\nlocal container\nif (t == \"container\" or t == \"solution\") then\ncontainer = premake.CurrentContainer\nelse\ncontainer ="
90   " premake.CurrentConfiguration\nend\nif t == \"solution\" then\nif type(container) == \"project\" then\ncontainer = container.solution\nend\nif type(container) ~= \"solution\" then\ncontainer = nil\nend\nend\nlocal msg\nif (not container) then\nif (t == \"container\") then\nmsg = \"no active solution or project\"\nelseif (t == \"solution\") then\nmsg = \"no active solution\"\nelse\nmsg = \"no active solution, project, or configuration\"\nend\nend\nreturn container, msg\nend\nfunction premake.setarray(obj, fieldname, value, allowed)\nobj[fieldname] = obj[fieldname] or {}\nlocal function add(value, depth)\nif type(value) == \"table\" then\nfor _,v in ipairs(value) do\nadd(v, depth + 1)\nend\nelse\nvalue, err = premake.checkvalue(value, allowed)\nif not value then\nerror(err, depth)\nend\ntable.insert(obj[fieldname], value)\nend\nend\nif value then\nadd(value, 5)\nend\nreturn obj[fieldname]\nend\nlocal function domatchedarray(ctype, fieldname, value, matchfunc)\nlocal result = { }\nfunction makeabsolute(value, dep"
91   "th)\nif (type(value) == \"table\") then\nfor _, item in ipairs(value) do\nmakeabsolute(item, depth + 1)\nend\nelseif type(value) == \"string\" then\nif value:find(\"*\") then\nlocal arr = matchfunc(value);\nif (premake.check_paths) and (#arr == 0) then\nerror(\"Can't find matching files for pattern :\" .. value)\nend\nmakeabsolute(arr, depth + 1)\nelse\ntable.insert(result, path.getabsolute(value))\nend\nelse\nerror(\"Invalid value in list: expected string, got \" .. type(value), depth)\nend\nend\nmakeabsolute(value, 3)\nreturn premake.setarray(ctype, fieldname, result)\nend\nfunction premake.setdirarray(ctype, fieldname, value)\nreturn domatchedarray(ctype, fieldname, value, os.matchdirs)\nend\nfunction premake.setfilearray(ctype, fieldname, value)\nreturn domatchedarray(ctype, fieldname, value, os.matchfiles)\nend\nfunction premake.setkeyvalue(ctype, fieldname, values)\nlocal container, err = premake.getobject(ctype)\nif not container then\nerror(err, 4)\nend\nif not container[fieldname] then\ncontainer[fiel"
92   "dname] = {}\nend\nif type(values) ~= \"table\" then\nerror(\"invalid value; table expected\", 4)\nend\nlocal field = container[fieldname]\nfor key,value in pairs(values) do\nif not field[key] then\nfield[key] = {}\nend\ntable.insertflat(field[key], value)\nend\nreturn field\nend\nfunction premake.setstring(ctype, fieldname, value, allowed)\nlocal container, err = premake.getobject(ctype)\nif (not container) then\nerror(err, 4)\nend\nif (value) then\nvalue, err = premake.checkvalue(value, allowed)\nif (not value) then\nerror(err, 4)\nend\ncontainer[fieldname] = value\nend\nreturn container[fieldname]\nend\nfunction premake.remove(fieldname, value)\nlocal cfg = premake.CurrentConfiguration\ncfg.removes = cfg.removes or {}\ncfg.removes[fieldname] = premake.setarray(cfg.removes, fieldname, value)\nend\nlocal function accessor(name, value)\nlocal kind    = premake.fields[name].kind\nlocal scope   = premake.fields[name].scope\nlocal allowed = premake.fields[name].allowed\nif (kind == \"string\" or kind == \"path\") "
93   "and value then\nif type(value) ~= \"string\" then\nerror(\"string value expected\", 3)\nend\nend\nlocal container, err = premake.getobject(scope)\nif (not container) then\nerror(err, 3)\nend\nif kind == \"string\" then\nreturn premake.setstring(scope, name, value, allowed)\nelseif kind == \"path\" then\nif value then value = path.getabsolute(value) end\nreturn premake.setstring(scope, name, value)\nelseif kind == \"list\" then\nreturn premake.setarray(container, name, value, allowed)\nelseif kind == \"dirlist\" then\nreturn premake.setdirarray(container, name, value)\nelseif kind == \"filelist\" or kind == \"absolutefilelist\" then\nreturn premake.setfilearray(container, name, value)\nelseif kind == \"keyvalue\" or kind == \"keypath\" then\nreturn premake.setkeyvalue(scope, name, value)\nend\nend\nfor name, info in pairs(premake.fields) do\n_G[name] = function(value)\nreturn accessor(name, value)\nend\nif info.kind == \"list\"\nor info.kind == \"dirlist\"\nor info.kind == \"filelist\"\nor info.kind == \"absolu"
94   "tefilelist\"\nthen\nif  name ~= \"removefiles\"\nand name ~= \"files\" then\n_G[\"remove\"..name] = function(value)\npremake.remove(name, value)\nend\nend\nend\nend\nfunction configuration(terms)\nif not terms then\nreturn premake.CurrentConfiguration\nend\nlocal container, err = premake.getobject(\"container\")\nif (not container) then\nerror(err, 2)\nend\nlocal cfg = { }\ncfg.terms = table.flatten({terms})\ntable.insert(container.blocks, cfg)\npremake.CurrentConfiguration = cfg\ncfg.keywords = { }\nfor _, word in ipairs(cfg.terms) do\ntable.insert(cfg.keywords, path.wildcards(word):lower())\nend\nfor name, field in pairs(premake.fields) do\nif (field.kind ~= \"string\" and field.kind ~= \"path\") then\ncfg[name] = { }\nend\nend\nreturn cfg\nend\nlocal function creategroup(name, sln, parent, inpath)\nlocal group = {}\nsetmetatable(group, {\n__type = \"group\"\n})\ntable.insert(sln.groups, group)\nsln.groups[inpath] = group\ngroup.solution = sln\ngroup.name = name\ngroup.uuid = os.uuid(group.name)\ngroup.paren"
95   "t = parent\nreturn group\nend\nlocal function creategroupsfrompath(inpath, sln)\nif inpath == nil then return nil end\ninpath = path.translate(inpath, \"/\")\nlocal groups = string.explode(inpath, \"/\")\nlocal curpath = \"\"\nlocal lastgroup = nil\nfor i, v in ipairs(groups) do\ncurpath = curpath .. \"/\" .. v:lower()\nlocal group = sln.groups[curpath]\nif group == nil then\ngroup = creategroup(v, sln, lastgroup, curpath)\nend\nlastgroup = group\nend\nreturn lastgroup\nend\nlocal function createproject(name, sln, isUsage)\nlocal prj = {}\nsetmetatable(prj, {\n__type = \"project\",\n})\ntable.insert(sln.projects, prj)\nif(isUsage) then\nif(sln.projects[name]) then\nsln.projects[name].usageProj = prj;\nelse\nsln.projects[name] = prj\nend\nelse\nif(sln.projects[name]) then\nprj.usageProj = sln.projects[name];\nend\nsln.projects[name] = prj\nend\nlocal group = creategroupsfrompath(premake.CurrentGroup, sln)\nprj.solution       = sln\nprj.name           = name\nprj.basedir        = os.getcwd()\nprj.uuid           "
96   "= os.uuid(prj.name)\nprj.blocks         = { }\nprj.usage          = isUsage\nprj.group          = group\nreturn prj;\nend\nfunction usage(name)\nif (not name) then\nif(type(premake.CurrentContainer) ~= \"project\") then return nil end\nif(not premake.CurrentContainer.usage) then return nil end\nreturn premake.CurrentContainer\nend\nlocal sln\nif (type(premake.CurrentContainer) == \"project\") then\nsln = premake.CurrentContainer.solution\nelse\nsln = premake.CurrentContainer\nend\nif (type(sln) ~= \"solution\") then\nerror(\"no active solution\", 2)\nend\nif((not sln.projects[name]) or\n((not sln.projects[name].usage) and (not sln.projects[name].usageProj))) then\npremake.CurrentContainer = createproject(name, sln, true)\nelse\npremake.CurrentContainer = iff(sln.projects[name].usage,\nsln.projects[name], sln.projects[name].usageProj)\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction project(name)\nif (not name) then\nif(type(premake.CurrentContainer) ~= \"project\") then return nil end\ni"
97   "f(premake.CurrentContainer.usage) then return nil end\nreturn premake.CurrentContainer\nend\nlocal sln\nif (type(premake.CurrentContainer) == \"project\") then\nsln = premake.CurrentContainer.solution\nelse\nsln = premake.CurrentContainer\nend\nif (type(sln) ~= \"solution\") then\nerror(\"no active solution\", 2)\nend\nif((not sln.projects[name]) or sln.projects[name].usage) then\npremake.CurrentContainer = createproject(name, sln)\nelse\npremake.CurrentContainer = sln.projects[name];\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction solution(name)\nif not name then\nif type(premake.CurrentContainer) == \"project\" then\nreturn premake.CurrentContainer.solution\nelse\nreturn premake.CurrentContainer\nend\nend\npremake.CurrentContainer = premake.solution.get(name)\nif (not premake.CurrentContainer) then\npremake.CurrentContainer = premake.solution.new(name)\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction group(name)\nif not name then\nreturn premake.CurrentGroup\nen"
98   "d\npremake.CurrentGroup = name\nreturn premake.CurrentGroup\nend\nfunction newaction(a)\npremake.action.add(a)\nend\nfunction newoption(opt)\npremake.option.add(opt)\nend\n",
83   "premake.fields =\n{\narchivesplit_size =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nbasedir =\n{\nkind  = \"path\",\nscope = \"container\",\n},\nbuildaction =\n{\nkind  = \"string\",\nscope = \"config\",\nallowed = {\n\"Compile\",\n\"Copy\",\n\"Embed\",\n\"None\"\n}\n},\nbuildoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_c =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_cpp =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nbuildoptions_objc =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nconfigurations =\n{\nkind  = \"list\",\nscope = \"solution\",\n},\ncustombuildtask =\n{\nkind  = \"table\",\nscope = \"config\",\n},\ndebugargs =\n{\nkind = \"list\",\nscope = \"config\",\n},\ndebugdir =\n{\nkind = \"path\",\nscope = \"config\",\n},\ndebugenvs  =\n{\nkind = \"list\",\nscope = \"config\",\n},\ndefines =\n{\nkind  = \"list\",\nscope = \"config\",\n},\ndeploymentoptions =\n{\nkind  = \"list\",\nscope = \"config\",\nusagecopy = true,\n},\ndependency =\n{\nkind  = \""
84   "table\",\nscope = \"config\",\n},\nexcludes =\n{\nkind  = \"filelist\",\nscope = \"config\",\n},\nfiles =\n{\nkind  = \"filelist\",\nscope = \"config\",\n},\nremovefiles =\n{\nkind  = \"filelist\",\nscope = \"config\",\n},\nflags =\n{\nkind  = \"list\",\nscope = \"config\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_flags = {\nATL = 1,\nDebugEnvsDontMerge = 1,\nDebugEnvsInherit = 1,\nEnableMinimalRebuild = 1,\nEnableSSE = 1,\nEnableSSE2 = 1,\nExtraWarnings = 1,\nFatalWarnings = 1,\nFloatFast = 1,\nFloatStrict = 1,\nManaged = 1,\nMFC = 1,\nNativeWChar = 1,\nNo64BitChecks = 1,\nNoEditAndContinue = 1,\nNoExceptions = 1,\nNoFramePointer = 1,\nNoImportLib = 1,\nNoIncrementalLink = 1,\nNoManifest = 1,\nNoMultiProcessorCompilation = 1,\nNoNativeWChar = 1,\nNoPCH = 1,\nNoRTTI = 1,\nSingleOutputDir = 1,\nOptimize = 1,\nOptimizeSize = 1,\nOptimizeSpeed = 1,\nSEH = 1,\nStaticATL = 1,\nStaticRuntime = 1,\nSymbols = 1,\nUnicode = 1,\nUnsafe = 1,\nUnsignedChar = 1,\nWinMain = 1,\n}\nlocal "
85   "englishToAmericanSpelling =\n{\noptimise = 'optimize',\noptimisesize = 'optimizesize',\noptimisespeed = 'optimizespeed',\n}\nlocal lowervalue = value:lower()\nlowervalue = englishToAmericanSpelling[lowervalue] or lowervalue\nfor v, _ in pairs(allowed_flags) do\nif v:lower() == lowervalue then\nreturn v\nend\nend\nreturn nil, \"invalid flag\"\nend,\n},\nframework =\n{\nkind = \"string\",\nscope = \"container\",\nallowed = {\n\"1.0\",\n\"1.1\",\n\"2.0\",\n\"3.0\",\n\"3.5\",\n\"4.0\",\n\"4.5\",\n}\n},\nforcedincludes =\n{\nkind  = \"absolutefilelist\",\nscope = \"config\",\n},\nimagepath =\n{\nkind = \"path\",\nscope = \"config\",\n},\nimageoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nimplibdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\nimplibextension =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibname =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibprefix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nimplibsuffix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\n"
86   "includedirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\nusagecopy = true,\n},\nkind =\n{\nkind  = \"string\",\nscope = \"config\",\nallowed = {\n\"ConsoleApp\",\n\"WindowedApp\",\n\"StaticLib\",\n\"SharedLib\"\n}\n},\nlanguage =\n{\nkind  = \"string\",\nscope = \"container\",\nallowed = {\n\"C\",\n\"C++\",\n\"C#\"\n}\n},\nlibdirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\nlinkagecopy = true,\n},\nlinkoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nlinks =\n{\nkind  = \"list\",\nscope = \"config\",\nallowed = function(value)\nif value:find('/', nil, true) then\nvalue = path.getabsolute(value)\nend\nreturn value\nend,\nlinkagecopy = true,\n},\nlocation =\n{\nkind  = \"path\",\nscope = \"container\",\n},\nmakesettings =\n{\nkind = \"list\",\nscope = \"config\",\n},\nmessageskip =\n{\nkind  = \"list\",\nscope = \"solution\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_messages = {\nSkipCreatingMessage = 1,\nSkipBuildingMessage = 1,\nSkipCleaningMessage = 1,\n}"
87   "\nlocal lowervalue = value:lower()\nfor v, _ in pairs(allowed_messages) do\nif v:lower() == lowervalue then\nreturn v\nend\nend\nreturn nil, \"invalid message to skip\"\nend,\n},\nmsgarchiving =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgcompile =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgcompile_objc =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsgresource =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nmsglinking =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nobjdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\noptions =\n{\nkind  = \"list\",\nscope = \"container\",\nisflags = true,\nusagecopy = true,\nallowed = function(value)\nlocal allowed_options = {\nForceCPP = 1,\nArchiveSplit = 1\n}\nlocal lowervalue = value:lower()\nfor v, _ in pairs(allowed_options) do\nif v:lower() == lowervalue then\nreturn v\nend\nend\nreturn nil, \"invalid option\"\nend,\n},\npchheader =\n{\nkind  = \"string\",\nscope = \"config\",\n},\npchsource =\n{\nkind  = \"path\",\nscope = \"config"
88   "\",\n},\nplatforms =\n{\nkind  = \"list\",\nscope = \"solution\",\nallowed = table.keys(premake.platforms),\n},\npostbuildcommands =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nprebuildcommands =\n{\nkind  = \"list\",\nscope = \"config\",\n},\npostcompiletasks =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nprelinkcommands =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nresdefines =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nresincludedirs =\n{\nkind  = \"dirlist\",\nscope = \"config\",\n},\nresoptions =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nstartproject =\n{\nkind  = \"string\",\nscope = \"solution\",\n},\ntargetdir =\n{\nkind  = \"path\",\nscope = \"config\",\n},\ntargetsubdir =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetextension =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetname =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetprefix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\ntargetsuffix =\n{\nkind  = \"string\",\nscope = \"config\",\n},\nt"
89   "rimpaths =\n{\nkind = \"dirlist\",\nscope = \"config\",\n},\nuuid =\n{\nkind  = \"string\",\nscope = \"container\",\nallowed = function(value)\nlocal ok = true\nif (#value ~= 36) then ok = false end\nfor i=1,36 do\nlocal ch = value:sub(i,i)\nif (not ch:find(\"[ABCDEFabcdef0123456789-]\")) then ok = false end\nend\nif (value:sub(9,9) ~= \"-\")   then ok = false end\nif (value:sub(14,14) ~= \"-\") then ok = false end\nif (value:sub(19,19) ~= \"-\") then ok = false end\nif (value:sub(24,24) ~= \"-\") then ok = false end\nif (not ok) then\nreturn nil, \"invalid UUID\"\nend\nreturn value:upper()\nend\n},\nuses =\n{\nkind  = \"list\",\nscope = \"config\",\n},\nvpaths =\n{\nkind = \"keypath\",\nscope = \"container\",\n},\n}\npremake.check_paths = false\nfunction premake.checkvalue(value, allowed)\nif (allowed) then\nif (type(allowed) == \"function\") then\nreturn allowed(value)\nelse\nfor _,v in ipairs(allowed) do\nif (value:lower() == v:lower()) then\nreturn v\nend\nend\nreturn nil, \"invalid value '\" .. value .. "
90   "\"'\"\nend\nelse\nreturn value\nend\nend\nfunction premake.getobject(t)\nlocal container\nif (t == \"container\" or t == \"solution\") then\ncontainer = premake.CurrentContainer\nelse\ncontainer = premake.CurrentConfiguration\nend\nif t == \"solution\" then\nif type(container) == \"project\" then\ncontainer = container.solution\nend\nif type(container) ~= \"solution\" then\ncontainer = nil\nend\nend\nlocal msg\nif (not container) then\nif (t == \"container\") then\nmsg = \"no active solution or project\"\nelseif (t == \"solution\") then\nmsg = \"no active solution\"\nelse\nmsg = \"no active solution, project, or configuration\"\nend\nend\nreturn container, msg\nend\nfunction premake.setarray(obj, fieldname, value, allowed)\nobj[fieldname] = obj[fieldname] or {}\nlocal function add(value, depth)\nif type(value) == \"table\" then\nfor _,v in ipairs(value) do\nadd(v, depth + 1)\nend\nelse\nvalue, err = premake.checkvalue(value, allowed)\nif not value then\nerror(err, depth)\nend\ntable.insert(obj[fieldname], valu"
91   "e)\nend\nend\nif value then\nadd(value, 5)\nend\nreturn obj[fieldname]\nend\nfunction premake.settable(obj, fieldname, value, allowed)\nobj[fieldname] = obj[fieldname] or {}\ntable.insert(obj[fieldname], value)\nreturn obj[fieldname]\nend\nlocal function domatchedarray(ctype, fieldname, value, matchfunc)\nlocal result = { }\nfunction makeabsolute(value, depth)\nif (type(value) == \"table\") then\nfor _, item in ipairs(value) do\nmakeabsolute(item, depth + 1)\nend\nelseif type(value) == \"string\" then\nif value:find(\"*\") then\nlocal arr = matchfunc(value);\nif (premake.check_paths) and (#arr == 0) then\nerror(\"Can't find matching files for pattern :\" .. value)\nend\nmakeabsolute(arr, depth + 1)\nelse\ntable.insert(result, path.getabsolute(value))\nend\nelse\nerror(\"Invalid value in list: expected string, got \" .. type(value), depth)\nend\nend\nmakeabsolute(value, 3)\nreturn premake.setarray(ctype, fieldname, result)\nend\nfunction premake.setdirarray(ctype, fieldname, value)\nreturn domatchedarray(ctype,"
92   " fieldname, value, os.matchdirs)\nend\nfunction premake.setfilearray(ctype, fieldname, value)\nreturn domatchedarray(ctype, fieldname, value, os.matchfiles)\nend\nfunction premake.setkeyvalue(ctype, fieldname, values)\nlocal container, err = premake.getobject(ctype)\nif not container then\nerror(err, 4)\nend\nif not container[fieldname] then\ncontainer[fieldname] = {}\nend\nif type(values) ~= \"table\" then\nerror(\"invalid value; table expected\", 4)\nend\nlocal field = container[fieldname]\nfor key,value in pairs(values) do\nif not field[key] then\nfield[key] = {}\nend\ntable.insertflat(field[key], value)\nend\nreturn field\nend\nfunction premake.setstring(ctype, fieldname, value, allowed)\nlocal container, err = premake.getobject(ctype)\nif (not container) then\nerror(err, 4)\nend\nif (value) then\nvalue, err = premake.checkvalue(value, allowed)\nif (not value) then\nerror(err, 4)\nend\ncontainer[fieldname] = value\nend\nreturn container[fieldname]\nend\nfunction premake.remove(fieldname, value)\nlocal cfg "
93   "= premake.CurrentConfiguration\ncfg.removes = cfg.removes or {}\ncfg.removes[fieldname] = premake.setarray(cfg.removes, fieldname, value)\nend\nlocal function accessor(name, value)\nlocal kind    = premake.fields[name].kind\nlocal scope   = premake.fields[name].scope\nlocal allowed = premake.fields[name].allowed\nif (kind == \"string\" or kind == \"path\") and value then\nif type(value) ~= \"string\" then\nerror(\"string value expected\", 3)\nend\nend\nlocal container, err = premake.getobject(scope)\nif (not container) then\nerror(err, 3)\nend\nif kind == \"string\" then\nreturn premake.setstring(scope, name, value, allowed)\nelseif kind == \"path\" then\nif value then value = path.getabsolute(value) end\nreturn premake.setstring(scope, name, value)\nelseif kind == \"list\" then\nreturn premake.setarray(container, name, value, allowed)\nelseif kind == \"table\" then\nreturn premake.settable(container, name, value, allowed)\nelseif kind == \"dirlist\" then\nreturn premake.setdirarray(container, name, value)\nel"
94   "seif kind == \"filelist\" or kind == \"absolutefilelist\" then\nreturn premake.setfilearray(container, name, value)\nelseif kind == \"keyvalue\" or kind == \"keypath\" then\nreturn premake.setkeyvalue(scope, name, value)\nend\nend\nfor name, info in pairs(premake.fields) do\n_G[name] = function(value)\nreturn accessor(name, value)\nend\nif info.kind == \"list\"\nor info.kind == \"dirlist\"\nor info.kind == \"filelist\"\nor info.kind == \"absolutefilelist\"\nthen\nif  name ~= \"removefiles\"\nand name ~= \"files\" then\n_G[\"remove\"..name] = function(value)\npremake.remove(name, value)\nend\nend\nend\nend\nfunction configuration(terms)\nif not terms then\nreturn premake.CurrentConfiguration\nend\nlocal container, err = premake.getobject(\"container\")\nif (not container) then\nerror(err, 2)\nend\nlocal cfg = { }\ncfg.terms = table.flatten({terms})\ntable.insert(container.blocks, cfg)\npremake.CurrentConfiguration = cfg\ncfg.keywords = { }\nfor _, word in ipairs(cfg.terms) do\ntable.insert(cfg.keywords, path.wi"
95   "ldcards(word):lower())\nend\nfor name, field in pairs(premake.fields) do\nif (field.kind ~= \"string\" and field.kind ~= \"path\") then\ncfg[name] = { }\nend\nend\nreturn cfg\nend\nlocal function creategroup(name, sln, parent, inpath)\nlocal group = {}\nsetmetatable(group, {\n__type = \"group\"\n})\ntable.insert(sln.groups, group)\nsln.groups[inpath] = group\ngroup.solution = sln\ngroup.name = name\ngroup.uuid = os.uuid(group.name)\ngroup.parent = parent\nreturn group\nend\nlocal function creategroupsfrompath(inpath, sln)\nif inpath == nil then return nil end\ninpath = path.translate(inpath, \"/\")\nlocal groups = string.explode(inpath, \"/\")\nlocal curpath = \"\"\nlocal lastgroup = nil\nfor i, v in ipairs(groups) do\ncurpath = curpath .. \"/\" .. v:lower()\nlocal group = sln.groups[curpath]\nif group == nil then\ngroup = creategroup(v, sln, lastgroup, curpath)\nend\nlastgroup = group\nend\nreturn lastgroup\nend\nlocal function createproject(name, sln, isUsage)\nlocal prj = {}\nsetmetatable(prj, {\n__type = "
96   "\"project\",\n})\ntable.insert(sln.projects, prj)\nif(isUsage) then\nif(sln.projects[name]) then\nsln.projects[name].usageProj = prj;\nelse\nsln.projects[name] = prj\nend\nelse\nif(sln.projects[name]) then\nprj.usageProj = sln.projects[name];\nend\nsln.projects[name] = prj\nend\nlocal group = creategroupsfrompath(premake.CurrentGroup, sln)\nprj.solution       = sln\nprj.name           = name\nprj.basedir        = os.getcwd()\nprj.uuid           = os.uuid(prj.name)\nprj.blocks         = { }\nprj.usage          = isUsage\nprj.group          = group\nreturn prj;\nend\nfunction usage(name)\nif (not name) then\nif(type(premake.CurrentContainer) ~= \"project\") then return nil end\nif(not premake.CurrentContainer.usage) then return nil end\nreturn premake.CurrentContainer\nend\nlocal sln\nif (type(premake.CurrentContainer) == \"project\") then\nsln = premake.CurrentContainer.solution\nelse\nsln = premake.CurrentContainer\nend\nif (type(sln) ~= \"solution\") then\nerror(\"no active solution\", 2)\nend\nif((not sln.pr"
97   "ojects[name]) or\n((not sln.projects[name].usage) and (not sln.projects[name].usageProj))) then\npremake.CurrentContainer = createproject(name, sln, true)\nelse\npremake.CurrentContainer = iff(sln.projects[name].usage,\nsln.projects[name], sln.projects[name].usageProj)\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction project(name)\nif (not name) then\nif(type(premake.CurrentContainer) ~= \"project\") then return nil end\nif(premake.CurrentContainer.usage) then return nil end\nreturn premake.CurrentContainer\nend\nlocal sln\nif (type(premake.CurrentContainer) == \"project\") then\nsln = premake.CurrentContainer.solution\nelse\nsln = premake.CurrentContainer\nend\nif (type(sln) ~= \"solution\") then\nerror(\"no active solution\", 2)\nend\nif((not sln.projects[name]) or sln.projects[name].usage) then\npremake.CurrentContainer = createproject(name, sln)\nelse\npremake.CurrentContainer = sln.projects[name];\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction solution(name)"
98   "\nif not name then\nif type(premake.CurrentContainer) == \"project\" then\nreturn premake.CurrentContainer.solution\nelse\nreturn premake.CurrentContainer\nend\nend\npremake.CurrentContainer = premake.solution.get(name)\nif (not premake.CurrentContainer) then\npremake.CurrentContainer = premake.solution.new(name)\nend\nconfiguration { }\nreturn premake.CurrentContainer\nend\nfunction group(name)\nif not name then\nreturn premake.CurrentGroup\nend\npremake.CurrentGroup = name\nreturn premake.CurrentGroup\nend\nfunction newaction(a)\npremake.action.add(a)\nend\nfunction newoption(opt)\npremake.option.add(opt)\nend\n",
9999
100100   /* base/cmdline.lua */
101101   "newoption \n{\ntrigger     = \"cc\",\nvalue       = \"VALUE\",\ndescription = \"Choose a C/C++ compiler set\",\nallowed = {\n{ \"gcc\", \"GNU GCC (gcc/g++)\" },\n{ \"ow\",  \"OpenWatcom\"        },\n}\n}\nnewoption\n{\ntrigger     = \"dotnet\",\nvalue       = \"VALUE\",\ndescription = \"Choose a .NET compiler set\",\nallowed = {\n{ \"msnet\",   \"Microsoft .NET (csc)\" },\n{ \"mono\",    \"Novell Mono (mcs)\"    },\n{ \"pnet\",    \"Portable.NET (cscc)\"  },\n}\n}\nnewoption\n{\ntrigger     = \"file\",\nvalue       = \"FILE\",\ndescription = \"Read FILE as a Premake script; default is 'premake4.lua'\"\n}\nnewoption\n{\ntrigger     = \"help\",\ndescription = \"Display this information\"\n}\nnewoption\n{\ntrigger     = \"os\",\nvalue       = \"VALUE\",\ndescription = \"Generate files for a different operating system\",\nallowed = {\n{ \"bsd\",      \"OpenBSD, NetBSD, or FreeBSD\" },\n{ \"linux\",    \"Linux\" },\n{ \"macosx\",   \"Apple Mac OS X\" },\n{ \"windows\",  \"Microsoft Windows\" },\n}\n}\nnewoption\n{"
r245577r245578
179179   "ative(sln.location, prj.location)), _MAKE.esc(_MAKE.getmakefilename(prj, true)))\n_p('')\nend\n_p('clean:')\nfor _ ,prj in ipairs(sln.projects) do\n_p('\\t@${MAKE} --no-print-directory -C %s -f %s clean', _MAKE.esc(path.getrelative(sln.location, prj.location)), _MAKE.esc(_MAKE.getmakefilename(prj, true)))\nend\n_p('')\n_p('help:')\n_p(1,'@echo \"Usage: make [config=name] [target]\"')\n_p(1,'@echo \"\"')\n_p(1,'@echo \"CONFIGURATIONS:\"')\nlocal cfgpairs = { }\nfor _, platform in ipairs(platforms) do\nfor _, cfgname in ipairs(sln.configurations) do\n_p(1,'@echo \"   %s\"', premake.getconfigname(cfgname, platform, true))\nend\nend\n_p(1,'@echo \"\"')\n_p(1,'@echo \"TARGETS:\"')\n_p(1,'@echo \"   all (default)\"')\n_p(1,'@echo \"   clean\"')\nfor _, prj in ipairs(sln.projects) do\n_p(1,'@echo \"   %s\"', prj.name)\nend\n_p(1,'@echo \"\"')\n_p(1,'@echo \"For more information, see http://industriousone.com/premake/quick-start\"')\nend\n",
180180
181181   /* actions/make/make_cpp.lua */
182   "premake.make.cpp = { }\npremake.make.override = { }\nlocal cpp = premake.make.cpp\nlocal make = premake.make\nfunction premake.make_cpp(prj)\nlocal cc = premake.gettool(prj)\nlocal platforms = premake.filterplatforms(prj.solution, cc.platforms, \"Native\")\npremake.gmake_cpp_header(prj, cc, platforms)\nfor _, platform in ipairs(platforms) do\nfor cfg in premake.eachconfig(prj, platform) do\npremake.gmake_cpp_config(prj, cfg, cc)\nend\nend\nlocal objdirs = {}\nfor _, file in ipairs(prj.files) do\nif path.iscppfile(file) then\nobjdirs[_MAKE.esc(path.getdirectory(path.trimdots(file)))] = 1\nend\nend\n_p('OBJDIRS := \\\\')\n_p('\\t$(OBJDIR) \\\\')\nfor dir, _ in pairs(objdirs) do\n_p('\\t$(OBJDIR)/%s \\\\', dir)\nend\n_p('')\n_p('RESOURCES := \\\\')\nfor _, file in ipairs(prj.files) do\nif path.isresourcefile(file) then\n_p('\\t$(OBJDIR)/%s.res \\\\', _MAKE.esc(path.getbasename(file)))\nend\nend\n_p('')\n_p('.PHONY: clean prebuild prelink')\n_p('')\nif os.is(\"MacOSX\") and prj.kind == \"WindowedApp\" then\n_p('al"
183   "l: $(TARGETDIR) $(OBJDIRS) prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist')\nelse\n_p('all: $(TARGETDIR) $(OBJDIRS) prebuild prelink $(TARGET)')\nend\n_p('\\t@:')\n_p('')\nif (prj.kind == \"StaticLib\" and prj.options.ArchiveSplit) then\n_p('define max_args')\n_p('\\t$(eval _args:=)')\n_p('\\t$(foreach obj,$3,$(eval _args+=$(obj))$(if $(word $2,$(_args)),$1$(_args)$(EOL)$(eval _args:=)))')\n_p('\\t$(if $(_args),$1$(_args))')\n_p('endef')\n_p('')\n_p('define EOL')\n_p('')\n_p('')\n_p('endef')\n_p('')\nend\n_p('$(TARGET): $(GCH) $(OBJECTS) $(LDDEPS) $(RESOURCES)')\nif prj.kind == \"StaticLib\" then\nif prj.msgarchiving then\n_p('\\t@echo ' .. prj.msgarchiving)\nelse\n_p('\\t@echo Archiving %s', prj.name)\nend\nif (not prj.archivesplit_size) then\nprj.archivesplit_size=200\nend\nif (not prj.options.ArchiveSplit) then\n_p('\\t$(SILENT) $(LINKCMD) $(OBJECTS)')\nelse\n_p('\\t$(call RM,$(TARGET))')\n_p('\\t@$(call max_args,$(LINKCMD),'.. prj.archivesplit_size ..',$(OBJECTS))')\n_p"
184   "('\\t$(SILENT) $(LINKCMD_NDX)')\nend\nelse\nif prj.msglinking then\n_p('\\t@echo ' .. prj.msglinking)\nelse\n_p('\\t@echo Linking %s', prj.name)\nend\n_p('\\t$(SILENT) $(LINKCMD)')\nend\n_p('\\t$(POSTBUILDCMDS)')\n_p('')\n_p('$(TARGETDIR):')\npremake.make_mkdirrule(\"$(TARGETDIR)\")\n_p('$(OBJDIRS):')\nif (not prj.solution.messageskip) or (not table.contains(prj.solution.messageskip, \"SkipCreatingMessage\")) then\n_p('\\t@echo Creating $(@)')\nend\n_p('\\t-$(call MKDIR,$@)')\n_p('')\nif os.is(\"MacOSX\") and prj.kind == \"WindowedApp\" then\n_p('$(dir $(TARGETDIR))PkgInfo:')\n_p('$(dir $(TARGETDIR))Info.plist:')\n_p('')\nend\n_p('clean:')\nif (not prj.solution.messageskip) or (not table.contains(prj.solution.messageskip, \"SkipCleaningMessage\")) then\n_p('\\t@echo Cleaning %s', prj.name)\nend\n_p('ifeq (posix,$(SHELLTYPE))')\n_p('\\t$(SILENT) rm -f  $(TARGET)')\n_p('\\t$(SILENT) rm -rf $(OBJDIR)')\n_p('else')\n_p('\\t$(SILENT) if exist $(subst /,\\\\\\\\,$(TARGET)) del $(subst /,\\\\\\\\,$(TARGET))')\n_p('"
185   "\\t$(SILENT) if exist $(subst /,\\\\\\\\,$(OBJDIR)) rmdir /s /q $(subst /,\\\\\\\\,$(OBJDIR))')\n_p('endif')\n_p('')\n_p('prebuild:')\n_p('\\t$(PREBUILDCMDS)')\n_p('')\n_p('prelink:')\n_p('\\t$(PRELINKCMDS)')\n_p('')\ncpp.pchrules(prj)\ncpp.fileRules(prj)\n_p('-include $(OBJECTS:%%.o=%%.d)')\n_p('ifneq (,$(PCH))')\n_p('  -include $(OBJDIR)/$(notdir $(PCH)).d')\n_p('endif')\nend\nfunction premake.gmake_cpp_header(prj, cc, platforms)\n_p('# %s project makefile autogenerated by GENie', premake.action.current().shortname)\n_p('ifndef config')\n_p('  config=%s', _MAKE.esc(premake.getconfigname(prj.solution.configurations[1], platforms[1], true)))\n_p('endif')\n_p('')\n_p('ifndef verbose')\n_p('  SILENT = @')\n_p('endif')\n_p('')\n_p('SHELLTYPE := msdos')\n_p('ifeq (,$(ComSpec)$(COMSPEC))')\n_p('  SHELLTYPE := posix')\n_p('endif')\n_p('ifeq (/bin,$(findstring /bin,$(SHELL)))')\n_p('  SHELLTYPE := posix')\n_p('endif')\n_p('')\n_p('ifeq (posix,$(SHELLTYPE))')\n_p('  MKDIR = $(SILENT) mkdir -p \"$(1)\"')\n_p('  COPY  ="
186   " $(SILENT) cp -fR \"$(1)\" \"$(2)\"')\n_p('  RM= $(SILENT) rm -f \"$(1)\"')\n_p('else')\n_p('  MKDIR = $(SILENT) mkdir \"$(subst /,\\\\\\\\,$(1))\" 2> nul || exit 0')\n_p('  COPY  = $(SILENT) copy /Y \"$(subst /,\\\\\\\\,$(1))\" \"$(subst /,\\\\\\\\,$(2))\"')\n_p('  RM    = $(SILENT) del /F \"$(subst /,\\\\\\\\,$(1))\" 2> nul || exit 0')\n_p('endif')\n_p('')\n_p('CC  = %s', cc.cc)\n_p('CXX = %s', cc.cxx)\n_p('AR  = %s', cc.ar)\n_p('')\n_p('ifndef RESCOMP')\n_p('  ifdef WINDRES')\n_p('    RESCOMP = $(WINDRES)')\n_p('  else')\n_p('    RESCOMP = windres')\n_p('  endif')\n_p('endif')\n_p('')\nend\nfunction premake.gmake_cpp_config(prj, cfg, cc)\n_p('ifeq ($(config),%s)', _MAKE.esc(cfg.shortname))\ncpp.platformtools(cfg, cc)\n_p('  ' .. (table.contains(premake.make.override,\"OBJDIR\") and \"override \" or \"\") ..    'OBJDIR     = %s', _MAKE.esc(cfg.objectsdir))\n_p('  ' .. (table.contains(premake.make.override,\"TARGETDIR\") and \"override \" or \"\") .. 'TARGETDIR  = %s', _MAKE.esc(cfg.buildtarget.directory))\n_"
187   "p('  ' .. (table.contains(premake.make.override,\"TARGET\") and \"override \" or \"\") ..    'TARGET     = $(TARGETDIR)/%s', _MAKE.esc(cfg.buildtarget.name))\n_p('  DEFINES   +=%s', make.list(cc.getdefines(cfg.defines)))\n_p('  INCLUDES  +=%s', make.list(cc.getincludedirs(cfg.includedirs)))\ncpp.pchconfig(cfg)\ncpp.flags(cfg, cc)\ncpp.linker(prj, cfg, cc)\n_p('  OBJECTS := \\\\')\nfor _, file in ipairs(prj.files) do\nif path.iscppfile(file) then\nif not table.icontains(cfg.excludes, file) then\n_p('\\t$(OBJDIR)/%s.o \\\\'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n)\nend\nend\nend\n_p('')\n_p('  define PREBUILDCMDS')\nif #cfg.prebuildcommands > 0 then\n_p('\\t@echo Running pre-build commands')\n_p('\\t%s', table.implode(cfg.prebuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\n_p('  define PRELINKCMDS')\nif #cfg.prelinkcommands > 0 then\n_p('\\t@echo Running pre-link commands')\n_p('\\t%s', table.implode(cfg.prelinkcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\n_p('  define POSTBUILD"
188   "CMDS')\nif #cfg.postbuildcommands > 0 then\n_p('\\t@echo Running post-build commands')\n_p('\\t%s', table.implode(cfg.postbuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\nmake.settings(cfg, cc)\n_p('endif')\n_p('')\nend\nfunction cpp.platformtools(cfg, cc)\nlocal platform = cc.platforms[cfg.platform]\nif platform.cc then\n_p('  CC         = %s', platform.cc)\nend\nif platform.cxx then\n_p('  CXX        = %s', platform.cxx)\nend\nif platform.ar then\n_p('  AR         = %s', platform.ar)\nend\nend\nfunction cpp.flags(cfg, cc)\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p('  FORCE_INCLUDE += -include $(OBJDIR)/$(notdir $(PCH))')\nend\nif #cfg.forcedincludes > 0 then\n_p('  FORCE_INCLUDE += -include %s'\n,premake.esc(table.concat(cfg.forcedincludes, \";\")))\nend\n_p('  ALL_CPPFLAGS  += $(CPPFLAGS) %s $(DEFINES) $(INCLUDES)', table.concat(cc.getcppflags(cfg), \" \"))\n_p('  ALL_CFLAGS    += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cfg.buildoptions, cfg.buildopt"
189   "ions_c)))\n_p('  ALL_CXXFLAGS  += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_cpp)))\n_p('  ALL_OBJCFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_objc)))\n_p('  ALL_RESFLAGS  += $(RESFLAGS) $(DEFINES) $(INCLUDES)%s',\n        make.list(table.join(cc.getdefines(cfg.resdefines),\n                                cc.getincludedirs(cfg.resincludedirs), cfg.resoptions)))\nend\nfunction cpp.linker(prj, cfg, cc)\n_p('  ALL_LDFLAGS   += $(LDFLAGS)%s', make.list(table.join(cc.getlibdirflags(cfg), cc.getldflags(cfg), cfg.linkoptions)))\n_p('  LDDEPS    +=%s', make.list(_MAKE.esc(premake.getlinks(cfg, \"siblings\", \"fullpath\"))))\n_p('  LIBS      += $(LDDEPS)%s', make.list(cc.getlinkflags(cfg)))\nif cfg.kind == \"StaticLib\" then\nif cfg.platform:startswith(\"Universal\") then\n_p('  LINKCMD    = libtool -o $(TAR"
190   "GET)')\nelse\nif (not prj.options.ArchiveSplit) then\nif cc.llvm then\n_p('  LINKCMD    = $(AR) rcs $(TARGET)')\nelse\n_p('  LINKCMD    = $(AR) -rcs $(TARGET)')\nend\nelse\nif cc.llvm then\n_p('  LINKCMD    = $(AR) qc $(TARGET)')\n_p('  LINKCMD_NDX= $(AR) cs $(TARGET)')\nelse\n_p('  LINKCMD    = $(AR) -qc $(TARGET)')\n_p('  LINKCMD_NDX= $(AR) -cs $(TARGET)')\nend\nend\nend\nelse\nlocal tool = iif(cfg.language == \"C\", \"CC\", \"CXX\")\n_p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)', tool)\nend\nend\nfunction cpp.pchconfig(cfg)\nif not cfg.pchheader or cfg.flags.NoPCH then\nreturn\nend\nlocal pch = cfg.pchheader\nfor _, incdir in ipairs(cfg.includedirs) do\nlocal abspath = path.getabsolute(path.join(cfg.project.location, incdir))\nlocal testname = path.join(abspath, pch)\nif os.isfile(testname) then\npch = path.getrelative(cfg.location, testname)\nbreak\nend\nend\n_p('  PCH        = %s', _MAKE.esc(pch))\n_p('  GCH        = $(OBJDIR)/$(notdir $(PCH)).gch')\nend\nfu"
191   "nction cpp.pchrules(prj)\n_p('ifneq (,$(PCH))')\n_p('$(GCH): $(PCH)')\n_p('\\t@echo $(notdir $<)')\nlocal cmd = iif(prj.language == \"C\", \"$(CC) -x c-header $(ALL_CFLAGS)\", \"$(CXX) -x c++-header $(ALL_CXXFLAGS)\")\n_p('\\t$(SILENT) %s -MMD -MP $(DEFINES) $(INCLUDES) -o \"$@\" -MF \"$(@:%%.gch=%%.d)\" -c \"$<\"', cmd)\n_p('endif')\n_p('')\nend\nfunction cpp.fileRules(prj)\nfor _, file in ipairs(prj.files or {}) do\nif path.iscppfile(file) then\n_p('$(OBJDIR)/%s.o: %s'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n, _MAKE.esc(file)\n)\nif (path.isobjcfile(file) and prj.msgcompile_objc) then\n_p('\\t@echo ' .. prj.msgcompile_objc)\nelseif prj.msgcompile then\n_p('\\t@echo ' .. prj.msgcompile)\nelse\n_p('\\t@echo $(notdir $<)')\nend\nif (path.isobjcfile(file)) then\n_p('\\t$(SILENT) $(CXX) $(ALL_OBJCFLAGS) $(FORCE_INCLUDE) -o \"$@\" -MF $(@:%%.o=%%.d) -c \"$<\"')\nelse\ncpp.buildcommand(path.iscfile(file) and not prj.options.ForceCPP, \"o\")\nend\n_p('')\nelseif (path.getextension(file) == \".rc\") then\n"
192   "_p('$(OBJDIR)/%s.res: %s', _MAKE.esc(path.getbasename(file)), _MAKE.esc(file))\nif prj.msgresource then\n_p('\\t@echo ' .. prj.msgresource)\nelse\n_p('\\t@echo $(notdir $<)')\nend\n_p('\\t$(SILENT) $(RESCOMP) $< -O coff -o \"$@\" $(ALL_RESFLAGS)')\n_p('')\nend\nend\nend\nfunction cpp.buildcommand(iscfile, objext)\nlocal flags = iif(iscfile, '$(CC) $(ALL_CFLAGS)', '$(CXX) $(ALL_CXXFLAGS)')\n_p('\\t$(SILENT) %s $(FORCE_INCLUDE) -o \"$@\" -MF $(@:%%.%s=%%.d) -c \"$<\"', flags, objext)\nend\n",
182   "premake.make.linkoptions_after = false\npremake.make.cpp = { }\npremake.make.override = { }\nlocal cpp = premake.make.cpp\nlocal make = premake.make\nfunction premake.make_cpp(prj)\nlocal cc = premake.gettool(prj)\nlocal platforms = premake.filterplatforms(prj.solution, cc.platforms, \"Native\")\npremake.gmake_cpp_header(prj, cc, platforms)\nfor _, platform in ipairs(platforms) do\nfor cfg in premake.eachconfig(prj, platform) do\npremake.gmake_cpp_config(prj, cfg, cc)\nend\nend\nlocal objdirs = {}\nlocal additionalobjdirs = {}\nfor _, file in ipairs(prj.files) do\nif path.iscppfile(file) then\nobjdirs[_MAKE.esc(path.getdirectory(path.trimdots(file)))] = 1\nend\nend\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nadditionalobjdirs[_MAKE.esc(path.getdirectory(path.getrelative(prj.location,buildtask[2])))] = 1\nend\nend\n_p('OBJDIRS := \\\\')\n_p('\\t$(OBJDIR) \\\\')\nfor dir, _ in pairs(objdirs) do\n_p('\\t$(OBJDIR)/%s \\\\', dir)\nend\nfor d"
183   "ir, _ in pairs(additionalobjdirs) do\n_p('\\t%s \\\\', dir)\nend\n_p('')\n_p('RESOURCES := \\\\')\nfor _, file in ipairs(prj.files) do\nif path.isresourcefile(file) then\n_p('\\t$(OBJDIR)/%s.res \\\\', _MAKE.esc(path.getbasename(file)))\nend\nend\n_p('')\n_p('.PHONY: clean prebuild prelink')\n_p('')\nif os.is(\"MacOSX\") and prj.kind == \"WindowedApp\" then\n_p('all: $(TARGETDIR) $(OBJDIRS) prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist')\nelse\n_p('all: $(TARGETDIR) $(OBJDIRS) prebuild prelink $(TARGET)')\nend\n_p('\\t@:')\n_p('')\nif (prj.kind == \"StaticLib\" and prj.options.ArchiveSplit) then\n_p('define max_args')\n_p('\\t$(eval _args:=)')\n_p('\\t$(foreach obj,$3,$(eval _args+=$(obj))$(if $(word $2,$(_args)),$1$(_args)$(EOL)$(eval _args:=)))')\n_p('\\t$(if $(_args),$1$(_args))')\n_p('endef')\n_p('')\n_p('define EOL')\n_p('')\n_p('')\n_p('endef')\n_p('')\nend\n_p('$(TARGET): $(GCH) $(OBJECTS) $(LDDEPS) $(RESOURCES)')\nif prj.kind == \"StaticLib\" then\nif prj.msgarchiv"
184   "ing then\n_p('\\t@echo ' .. prj.msgarchiving)\nelse\n_p('\\t@echo Archiving %s', prj.name)\nend\nif (not prj.archivesplit_size) then\nprj.archivesplit_size=200\nend\nif (not prj.options.ArchiveSplit) then\n_p('\\t$(SILENT) $(LINKCMD) $(OBJECTS)')\nelse\n_p('\\t$(call RM,$(TARGET))')\n_p('\\t@$(call max_args,$(LINKCMD),'.. prj.archivesplit_size ..',$(OBJECTS))')\n_p('\\t$(SILENT) $(LINKCMD_NDX)')\nend\nelse\nif prj.msglinking then\n_p('\\t@echo ' .. prj.msglinking)\nelse\n_p('\\t@echo Linking %s', prj.name)\nend\n_p('\\t$(SILENT) $(LINKCMD)')\nend\n_p('\\t$(POSTBUILDCMDS)')\n_p('')\n_p('$(TARGETDIR):')\npremake.make_mkdirrule(\"$(TARGETDIR)\")\n_p('$(OBJDIRS):')\nif (not prj.solution.messageskip) or (not table.contains(prj.solution.messageskip, \"SkipCreatingMessage\")) then\n_p('\\t@echo Creating $(@)')\nend\n_p('\\t-$(call MKDIR,$@)')\n_p('')\nif os.is(\"MacOSX\") and prj.kind == \"WindowedApp\" then\n_p('$(dir $(TARGETDIR))PkgInfo:')\n_p('$(dir $(TARGETDIR))Info.plist:')\n_p('')\nend\n_p('clean:')\nif (not p"
185   "rj.solution.messageskip) or (not table.contains(prj.solution.messageskip, \"SkipCleaningMessage\")) then\n_p('\\t@echo Cleaning %s', prj.name)\nend\n_p('ifeq (posix,$(SHELLTYPE))')\n_p('\\t$(SILENT) rm -f  $(TARGET)')\n_p('\\t$(SILENT) rm -rf $(OBJDIR)')\n_p('else')\n_p('\\t$(SILENT) if exist $(subst /,\\\\\\\\,$(TARGET)) del $(subst /,\\\\\\\\,$(TARGET))')\n_p('\\t$(SILENT) if exist $(subst /,\\\\\\\\,$(OBJDIR)) rmdir /s /q $(subst /,\\\\\\\\,$(OBJDIR))')\n_p('endif')\n_p('')\n_p('prebuild:')\n_p('\\t$(PREBUILDCMDS)')\n_p('')\n_p('prelink:')\n_p('\\t$(PRELINKCMDS)')\n_p('')\ncpp.pchrules(prj)\ncpp.fileRules(prj)\ncpp.dependencyRules(prj)\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nlocal deps =  string.format(\"%s \",path.getrelative(prj.location,buildtask[1]))\nfor _, depdata in ipairs(buildtask[3] or {}) do\ndeps = deps .. string.format(\"%s \",path.getrelative(prj.location,depdata))\nend\n_p('%s: %s'\n,path.getrelative(prj.location,b"
186   "uildtask[2])\n, deps\n)\nfor _, cmdline in ipairs(buildtask[4] or {}) do\nlocal cmd = cmdline\nlocal num = 1\nfor _, depdata in ipairs(buildtask[3] or {}) do\ncmd = string.gsub(cmd,\"%$%(\" .. num ..\"%)\", string.format(\"%s \",path.getrelative(prj.location,depdata)))\nnum = num + 1\nend\ncmd = string.gsub(cmd, \"%$%(<%)\", \"$<\")\ncmd = string.gsub(cmd, \"%$%(@%)\", \"$@\")\n_p('\\t$(SILENT) %s',cmd)\nend\n_p('')\nend\nend\n_p('-include $(OBJECTS:%%.o=%%.d)')\n_p('ifneq (,$(PCH))')\n_p('  -include $(OBJDIR)/$(notdir $(PCH)).d')\n_p('endif')\nend\nfunction premake.gmake_cpp_header(prj, cc, platforms)\n_p('# %s project makefile autogenerated by GENie', premake.action.current().shortname)\n_p('ifndef config')\n_p('  config=%s', _MAKE.esc(premake.getconfigname(prj.solution.configurations[1], platforms[1], true)))\n_p('endif')\n_p('')\n_p('ifndef verbose')\n_p('  SILENT = @')\n_p('endif')\n_p('')\n_p('SHELLTYPE := msdos')\n_p('ifeq (,$(ComSpec)$(COMSPEC))')\n_p('  SHELLTYPE := posix')\n_p('endif')\n_p('ifeq (/bi"
187   "n,$(findstring /bin,$(SHELL)))')\n_p('  SHELLTYPE := posix')\n_p('endif')\n_p('')\n_p('ifeq (posix,$(SHELLTYPE))')\n_p('  MKDIR = $(SILENT) mkdir -p \"$(1)\"')\n_p('  COPY  = $(SILENT) cp -fR \"$(1)\" \"$(2)\"')\n_p('  RM= $(SILENT) rm -f \"$(1)\"')\n_p('else')\n_p('  MKDIR = $(SILENT) mkdir \"$(subst /,\\\\\\\\,$(1))\" 2> nul || exit 0')\n_p('  COPY  = $(SILENT) copy /Y \"$(subst /,\\\\\\\\,$(1))\" \"$(subst /,\\\\\\\\,$(2))\"')\n_p('  RM    = $(SILENT) del /F \"$(subst /,\\\\\\\\,$(1))\" 2> nul || exit 0')\n_p('endif')\n_p('')\n_p('CC  = %s', cc.cc)\n_p('CXX = %s', cc.cxx)\n_p('AR  = %s', cc.ar)\n_p('')\n_p('ifndef RESCOMP')\n_p('  ifdef WINDRES')\n_p('    RESCOMP = $(WINDRES)')\n_p('  else')\n_p('    RESCOMP = windres')\n_p('  endif')\n_p('endif')\n_p('')\nend\nfunction premake.gmake_cpp_config(prj, cfg, cc)\n_p('ifeq ($(config),%s)', _MAKE.esc(cfg.shortname))\ncpp.platformtools(cfg, cc)\n_p('  ' .. (table.contains(premake.make.override,\"OBJDIR\") and \"override \" or \"\") ..    'OBJDIR     = %s', _MAKE.e"
188   "sc(cfg.objectsdir))\n_p('  ' .. (table.contains(premake.make.override,\"TARGETDIR\") and \"override \" or \"\") .. 'TARGETDIR  = %s', _MAKE.esc(cfg.buildtarget.directory))\n_p('  ' .. (table.contains(premake.make.override,\"TARGET\") and \"override \" or \"\") ..    'TARGET     = $(TARGETDIR)/%s', _MAKE.esc(cfg.buildtarget.name))\n_p('  DEFINES   +=%s', make.list(cc.getdefines(cfg.defines)))\n_p('  INCLUDES  +=%s', make.list(cc.getincludedirs(cfg.includedirs)))\ncpp.pchconfig(cfg)\ncpp.flags(cfg, cc)\ncpp.linker(prj, cfg, cc)\n_p('  OBJECTS := \\\\')\nfor _, file in ipairs(prj.files) do\nif path.iscppfile(file) then\nif not table.icontains(cfg.excludes, file) then\n_p('\\t$(OBJDIR)/%s.o \\\\'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n)\nend\nend\nend\n_p('')\n_p('  define PREBUILDCMDS')\nif #cfg.prebuildcommands > 0 then\n_p('\\t@echo Running pre-build commands')\n_p('\\t%s', table.implode(cfg.prebuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\n_p('  define PRELINKCMDS')\nif #cfg.prelinkco"
189   "mmands > 0 then\n_p('\\t@echo Running pre-link commands')\n_p('\\t%s', table.implode(cfg.prelinkcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\n_p('  define POSTBUILDCMDS')\nif #cfg.postbuildcommands > 0 then\n_p('\\t@echo Running post-build commands')\n_p('\\t%s', table.implode(cfg.postbuildcommands, \"\", \"\", \"\\n\\t\"))\nend\n_p('  endef')\nmake.settings(cfg, cc)\n_p('endif')\n_p('')\nend\nfunction cpp.platformtools(cfg, cc)\nlocal platform = cc.platforms[cfg.platform]\nif platform.cc then\n_p('  CC         = %s', platform.cc)\nend\nif platform.cxx then\n_p('  CXX        = %s', platform.cxx)\nend\nif platform.ar then\n_p('  AR         = %s', platform.ar)\nend\nend\nfunction cpp.flags(cfg, cc)\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p('  FORCE_INCLUDE += -include $(OBJDIR)/$(notdir $(PCH))')\nend\nif #cfg.forcedincludes > 0 then\n_p('  FORCE_INCLUDE += -include %s'\n,premake.esc(table.concat(cfg.forcedincludes, \";\")))\nend\n_p('  ALL_CPPFLAGS  += $(CPPFLAGS) %s $(DEFINES) $(INCLUDES)', "
190   "table.concat(cc.getcppflags(cfg), \" \"))\n_p('  ALL_CFLAGS    += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cfg.buildoptions, cfg.buildoptions_c)))\n_p('  ALL_CXXFLAGS  += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_cpp)))\n_p('  ALL_OBJCFLAGS += $(CXXFLAGS) $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)%s', make.list(table.join(cc.getcflags(cfg), cc.getcxxflags(cfg), cfg.buildoptions, cfg.buildoptions_objc)))\n_p('  ALL_RESFLAGS  += $(RESFLAGS) $(DEFINES) $(INCLUDES)%s',\n        make.list(table.join(cc.getdefines(cfg.resdefines),\n                                cc.getincludedirs(cfg.resincludedirs), cfg.resoptions)))\nend\nfunction cpp.linker(prj, cfg, cc)\n_p('  ALL_LDFLAGS   += $(LDFLAGS)%s', make.list(table.join(cc.getlibdirflags(cfg), cc.getldflags(cfg), cfg.linkoptions)))\n_p('  LDDEPS    +=%s', make.list(_MAKE.esc(premake.getlinks(cfg, \"siblings\", \"fullpath\"))))\n_p('  LIBS "
191   "     += $(LDDEPS)%s', make.list(cc.getlinkflags(cfg)))\nif cfg.kind == \"StaticLib\" then\nif cfg.platform:startswith(\"Universal\") then\n_p('  LINKCMD    = libtool -o $(TARGET)')\nelse\nif (not prj.options.ArchiveSplit) then\nif cc.llvm then\n_p('  LINKCMD    = $(AR) rcs $(TARGET)')\nelse\n_p('  LINKCMD    = $(AR) -rcs $(TARGET)')\nend\nelse\nif cc.llvm then\n_p('  LINKCMD    = $(AR) qc $(TARGET)')\n_p('  LINKCMD_NDX= $(AR) cs $(TARGET)')\nelse\n_p('  LINKCMD    = $(AR) -qc $(TARGET)')\n_p('  LINKCMD_NDX= $(AR) -cs $(TARGET)')\nend\nend\nend\nelse\nlocal tool = iif(cfg.language == \"C\", \"CC\", \"CXX\")\nif (premake.make.linkoptions_after) then\n_p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(LIBS) $(ALL_LDFLAGS)', tool)\nelse\n_p('  LINKCMD    = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)', tool)\nend\nend\nend\nfunction cpp.pchconfig(cfg)\nif not cfg.pchheader or cfg.flags.NoPCH then\nreturn\nend\nlocal pch = cfg.pchheader\nfor _, incdir in ipairs(cfg."
192   "includedirs) do\nlocal abspath = path.getabsolute(path.join(cfg.project.location, incdir))\nlocal testname = path.join(abspath, pch)\nif os.isfile(testname) then\npch = path.getrelative(cfg.location, testname)\nbreak\nend\nend\n_p('  PCH        = %s', _MAKE.esc(pch))\n_p('  GCH        = $(OBJDIR)/$(notdir $(PCH)).gch')\nend\nfunction cpp.pchrules(prj)\n_p('ifneq (,$(PCH))')\n_p('$(GCH): $(PCH)')\n_p('\\t@echo $(notdir $<)')\nlocal cmd = iif(prj.language == \"C\", \"$(CC) -x c-header $(ALL_CFLAGS)\", \"$(CXX) -x c++-header $(ALL_CXXFLAGS)\")\n_p('\\t$(SILENT) %s -MMD -MP $(DEFINES) $(INCLUDES) -o \"$@\" -MF \"$(@:%%.gch=%%.d)\" -c \"$<\"', cmd)\n_p('endif')\n_p('')\nend\nfunction cpp.fileRules(prj)\nfor _, file in ipairs(prj.files or {}) do\nif path.iscppfile(file) then\n_p('$(OBJDIR)/%s.o: %s'\n, _MAKE.esc(path.trimdots(path.removeext(file)))\n, _MAKE.esc(file)\n)\nif (path.isobjcfile(file) and prj.msgcompile_objc) then\n_p('\\t@echo ' .. prj.msgcompile_objc)\nelseif prj.msgcompile then\n_p('\\t@echo ' .. prj."
193   "msgcompile)\nelse\n_p('\\t@echo $(notdir $<)')\nend\nif (path.isobjcfile(file)) then\n_p('\\t$(SILENT) $(CXX) $(ALL_OBJCFLAGS) $(FORCE_INCLUDE) -o \"$@\" -MF $(@:%%.o=%%.d) -c \"$<\"')\nelse\ncpp.buildcommand(path.iscfile(file) and not prj.options.ForceCPP, \"o\")\nend\nfor _, task in ipairs(prj.postcompiletasks or {}) do\n_p('\\t$(SILENT) %s', task)\n_p('')\nend\n_p('')\nelseif (path.getextension(file) == \".rc\") then\n_p('$(OBJDIR)/%s.res: %s', _MAKE.esc(path.getbasename(file)), _MAKE.esc(file))\nif prj.msgresource then\n_p('\\t@echo ' .. prj.msgresource)\nelse\n_p('\\t@echo $(notdir $<)')\nend\n_p('\\t$(SILENT) $(RESCOMP) $< -O coff -o \"$@\" $(ALL_RESFLAGS)')\n_p('')\nend\nend\nend\nfunction cpp.dependencyRules(prj)\nfor _, dependency in ipairs(prj.dependency or {}) do\nfor _, dep in ipairs(dependency or {}) do\nif (dep[3]==nil or dep[3]==false) then\n_p('$(OBJDIR)/%s.o: %s'\n, _MAKE.esc(path.trimdots(path.removeext(path.getrelative(prj.location, dep[1]))))\n, _MAKE.esc(path.getrelative(prj.location, dep["
194   "2]))\n)\nelse\n_p('%s: %s'\n, _MAKE.esc(dep[1])\n, _MAKE.esc(path.getrelative(prj.location, dep[2]))\n)\nend\n_p('')\nend\nend\nend\nfunction cpp.buildcommand(iscfile, objext)\nlocal flags = iif(iscfile, '$(CC) $(ALL_CFLAGS)', '$(CXX) $(ALL_CXXFLAGS)')\n_p('\\t$(SILENT) %s $(FORCE_INCLUDE) -o \"$@\" -MF $(@:%%.%s=%%.d) -c \"$<\"', flags, objext)\nend\n",
193195
194196   /* actions/make/make_csharp.lua */
195197   "local function getresourcefilename(cfg, fname)\nif path.getextension(fname) == \".resx\" then\n    local name = cfg.buildtarget.basename .. \".\"\n    local dir = path.getdirectory(fname)\n    if dir ~= \".\" then \nname = name .. path.translate(dir, \".\") .. \".\"\nend\nreturn \"$(OBJDIR)/\" .. _MAKE.esc(name .. path.getbasename(fname)) .. \".resources\"\nelse\nreturn fname\nend\nend\nfunction premake.make_csharp(prj)\nlocal csc = premake.dotnet\nlocal cfglibs = { }\nlocal cfgpairs = { }\nlocal anycfg\nfor cfg in premake.eachconfig(prj) do\nanycfg = cfg\ncfglibs[cfg] = premake.getlinks(cfg, \"siblings\", \"fullpath\")\ncfgpairs[cfg] = { }\nfor _, fname in ipairs(cfglibs[cfg]) do\nif path.getdirectory(fname) ~= cfg.buildtarget.directory then\ncfgpairs[cfg][\"$(TARGETDIR)/\" .. _MAKE.esc(path.getname(fname))] = _MAKE.esc(fname)\nend\nend\nend\nlocal sources = {}\nlocal embedded = { }\nlocal copypairs = { }\nfor fcfg in premake.project.eachfile(prj) do\nlocal action = csc.getbuildaction(fcfg)\nif action == \"Co"
r245577r245578
265267   "(3,'<GenerateDebugInformation>%s</GenerateDebugInformation>', tostring(cfg.flags.Symbols ~= nil))\nif premake.config.isoptimizedbuild(cfg.flags) then\n_p(3,'<EnableCOMDATFolding>true</EnableCOMDATFolding>')\n_p(3,'<OptimizeReferences>true</OptimizeReferences>')\nend\nif cfg.kind ~= 'StaticLib' then\nvc2010.additionalDependencies(cfg)\n_p(3,'<OutputFile>$(OutDir)%s</OutputFile>', cfg.buildtarget.name)\nif #cfg.libdirs > 0 then\n_p(3,'<AdditionalLibraryDirectories>%s;%%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>',\npremake.esc(path.translate(table.concat(cfg.libdirs, ';'), '\\\\')))\nend\nif vc2010.config_type(cfg) == 'Application' and not cfg.flags.WinMain and not cfg.flags.Managed then\nif cfg.flags.Unicode then\n_p(3,'<EntryPointSymbol>wmainCRTStartup</EntryPointSymbol>')\nelse\n_p(3,'<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>')\nend\nend\nimport_lib(cfg)\nlocal deffile = premake.findfile(cfg, \".def\")\nif deffile then\n_p(3,'<ModuleDefinitionFile>%s</ModuleDefinitionFile>', deffil"
266268   "e)\nend\nlink_target_machine(3,cfg)\nadditional_options(3,cfg)\nend\n_p(2,'</Link>')\nend\nfunction vc2010.additionalDependencies(cfg)\nlocal links = premake.getlinks(cfg, \"system\", \"fullpath\")\nif #links > 0 then\n_p(3,'<AdditionalDependencies>%s;%%(AdditionalDependencies)</AdditionalDependencies>',\ntable.concat(links, \";\"))\nend\nend\nlocal function item_definitions(prj)\nfor _, cfginfo in ipairs(prj.solution.vstudio_configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\n_p(1,'<ItemDefinitionGroup ' ..if_config_and_platform() ..'>'\n,premake.esc(cfginfo.name))\nvs10_clcompile(cfg)\nresource_compile(cfg)\nitem_def_lib(cfg)\nvc2010.link(cfg)\nevent_hooks(cfg)\n_p(1,'</ItemDefinitionGroup>')\nend\nend\nfunction vc2010.getfilegroup(prj, group)\nlocal sortedfiles = prj.vc2010sortedfiles\nif not sortedfiles then\nsortedfiles = {\nClCompile = {},\nClInclude = {},\nNone = {},\nResourceCompile = {},\nAppxManifest = {}\n}\nlocal foundAppxManifest = false\nfor file in premak"
267269   "e.project.eachfile(prj) do\nif path.iscppfile(file.name) then\ntable.insert(sortedfiles.ClCompile, file)\nelseif path.iscppheader(file.name) then\nif not table.icontains(prj.removefiles, file) then\ntable.insert(sortedfiles.ClInclude, file)\nend\nelseif path.isresourcefile(file.name) then\ntable.insert(sortedfiles.ResourceCompile, file)\nelse\nlocal ext = path.getextension(file.name):lower()\nif ext == \".appxmanifest\" then\nfoundAppxManifest = true\ntable.insert(sortedfiles.AppxManifest, file)\nelse\ntable.insert(sortedfiles.None, file)\nend\nend\nend\nif vstudio.toolset == \"v120_wp81\" and prj.kind == \"WindowedApp\" and not foundAppxManifest then\nvstudio.needAppxManifest = true\nlocal fcfg = {}\nfcfg.name = prj.name .. \".appxmanifest\"\nfcfg.vpath = premake.project.getvpath(prj, fcfg.name)\ntable.insert(sortedfiles.AppxManifest, fcfg)\nend\nprj.vc2010sortedfiles = sortedfiles\nend\nreturn sortedfiles[group]\nend\nfunction vc2010.files(prj)\nvc2010.simplefilesgroup(prj, \"ClInclude\")\nvc2010.compilerfil"
268   "esgroup(prj)\nvc2010.simplefilesgroup(prj, \"None\")\nvc2010.simplefilesgroup(prj, \"ResourceCompile\")\nvc2010.simplefilesgroup(prj, \"AppxManifest\")\nend\nfunction vc2010.simplefilesgroup(prj, section, subtype)\nlocal files = vc2010.getfilegroup(prj, section)\nif #files > 0  then\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nif subtype then\n_p(2,'<%s Include=\\\"%s\\\">', section, path.translate(file.name, \"\\\\\"))\n_p(3,'<SubType>%s</SubType>', subtype)\n_p(2,'</%s>', section)\nelse\n_p(2,'<%s Include=\\\"%s\\\" />', section, path.translate(file.name, \"\\\\\"))\nend\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.compilerfilesgroup(prj)\nlocal configs = prj.solution.vstudio_configs\nlocal files = vc2010.getfilegroup(prj, \"ClCompile\")\nif #files > 0  then\nlocal config_mappings = {}\nfor _, cfginfo in ipairs(configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\nif cfg.pchheader and cfg.pchsource and not cfg.flags.NoPCH then\nconfig_mappings[cfginfo"
269   "] = path.translate(cfg.pchsource, \"\\\\\")\nend\nend\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nlocal translatedpath = path.translate(file.name, \"\\\\\")\n_p(2, '<ClCompile Include=\\\"%s\\\">', translatedpath)\n_p(3, '<ObjectFileName>$(IntDir)%s.obj</ObjectFileName>'\n, premake.esc(path.translate(path.trimdots(path.removeext(file.name))))\n)\nfor _, cfginfo in ipairs(configs) do\nif config_mappings[cfginfo] and translatedpath == config_mappings[cfginfo] then\n_p(3,'<PrecompiledHeader '.. if_config_and_platform() .. '>Create</PrecompiledHeader>', premake.esc(cfginfo.name))\nconfig_mappings[cfginfo] = nil  --only one source file per pch\nend\nend\nlocal excluded = table.icontains(prj.excludes, file.name)\nfor _, vsconfig in ipairs(configs) do\nlocal cfg = premake.getconfig(prj, vsconfig.src_buildcfg, vsconfig.src_platform)\nif excluded or table.icontains(cfg.excludes, file.name) then\n_p(3, '<ExcludedFromBuild '\n.. if_config_and_platform()\n.. '>true</ExcludedFromBuild>'\n, premake.esc(vsconfig.n"
270   "ame)\n)\nend\nend\n_p(2,'</ClCompile>')\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.header(targets)\nio.eol = \"\\r\\n\"\n_p('<?xml version=\"1.0\" encoding=\"utf-8\"?>')\nlocal t = \"\"\nif targets then\nt = ' DefaultTargets=\"' .. targets .. '\"'\nend\n_p('<Project%s ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">', t)\nend\nfunction premake.vs2010_vcxproj(prj)\nio.indent = \"  \"\nvc2010.header(\"Build\")\nvs2010_config(prj)\nvs2010_globals(prj)\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.Default.props\" />')\nfor _, cfginfo in ipairs(prj.solution.vstudio_configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\nvc2010.configurationPropertyGroup(cfg, cfginfo)\nend\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.props\" />')\n_p(1,'<ImportGroup Label=\"ExtensionSettings\">')\n_p(1,'</ImportGroup>')\nimport_props(prj)\n_p(1,'<PropertyGroup Label=\"UserMacros\" />')\nvc2010.outputProperties(prj)\nitem_def"
271   "initions(prj)\nvc2010.files(prj)\nvc2010.projectReferences(prj)\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.targets\" />')\n_p(1,'<ImportGroup Label=\"ExtensionTargets\">')\n_p(1,'</ImportGroup>')\n_p('</Project>')\nend\nfunction vc2010.projectReferences(prj)\nlocal deps = premake.getdependencies(prj)\nif #deps > 0 then\n_p(1,'<ItemGroup>')\nfor _, dep in ipairs(deps) do\nlocal deppath = path.getrelative(prj.location, vstudio.projectfile(dep))\n_p(2,'<ProjectReference Include=\\\"%s\\\">', path.translate(deppath, \"\\\\\"))\n_p(3,'<Project>{%s}</Project>', dep.uuid)\nif vstudio.toolset == \"v120_wp81\" then\n_p(3,'<ReferenceOutputAssembly>false</ReferenceOutputAssembly>')\nend\n_p(2,'</ProjectReference>')\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.debugdir(cfg)\nif cfg.debugdir then\n_p('    <LocalDebuggerWorkingDirectory>%s</LocalDebuggerWorkingDirectory>', path.translate(cfg.debugdir, '\\\\'))\n_p('    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>')\nend\nif cfg.debugargs th"
272   "en\n_p('    <LocalDebuggerCommandArguments>%s</LocalDebuggerCommandArguments>', table.concat(cfg.debugargs, \" \"))\nend\nend\nfunction vc2010.debugenvs(cfg)\nif cfg.debugenvs and #cfg.debugenvs > 0 then\n_p(2,'<LocalDebuggerEnvironment>%s%s</LocalDebuggerEnvironment>',table.concat(cfg.debugenvs, \"\\n\")\n,iif(cfg.flags.DebugEnvsInherit,'\\n$(LocalDebuggerEnvironment)','')\n)\nif cfg.flags.DebugEnvsDontMerge then\n_p(2,'<LocalDebuggerMergeEnvironment>false</LocalDebuggerMergeEnvironment>')\nend\nend\nend\nfunction premake.vs2010_vcxproj_user(prj)\nio.indent = \"  \"\nvc2010.header()\nfor _, cfginfo in ipairs(prj.solution.vstudio_configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\n_p('  <PropertyGroup '.. if_config_and_platform() ..'>', premake.esc(cfginfo.name))\nvc2010.debugdir(cfg)\nvc2010.debugenvs(cfg)\n_p('  </PropertyGroup>')\nend\n_p('</Project>')\nend\nfunction premake.vs2010_appxmanifest(prj)\nio.indent = \"  \"\nio.eol = \"\\r\\n\"\n_p('<?xml version=\"1.0\" "
273   "encoding=\"utf-8\"?>')\n_p('<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\" xmlns:m2=\"http://schemas.microsoft.com/appx/2013/manifest\" xmlns:m3=\"http://schemas.microsoft.com/appx/2014/manifest\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\">')\n_p(1,'<Identity Name=\"' .. prj.uuid .. '\"')\n_p(2,'Publisher=\"CN=Unknown\"')\n_p(2,'Version=\"1.0.0.0\" />')\n_p(1,'<mp:PhoneIdentity PhoneProductId=\"' .. prj.uuid .. '\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>')\n_p(1,'<Properties>')\n_p(2,'<DisplayName>' .. prj.name .. '</DisplayName>')\n_p(2,'<PublisherDisplayName>Unknown</PublisherDisplayName>')\n_p(2,'<Logo>EmptyLogo.png</Logo>')\n_p(1,'</Properties>')\n_p(1,'<Prerequisites>')\n_p(2,'<OSMinVersion>6.3.1</OSMinVersion>')\n_p(2,'<OSMaxVersionTested>6.3.1</OSMaxVersionTested>')\n_p(1,'</Prerequisites>')\n_p(1,'<Resources>')\n_p(2,'<Resource Language=\"x-generate\"/>')\n_p(1,'</Resources>')\n_p(1,'<Applications>')\n_p(2,'<Application Id=\"App\"')\n_p(3,"
274   "'Executable=\"$targetnametoken$.exe\"')\n_p(3,'EntryPoint=\"App\">')\n_p(3,'<m3:VisualElements')\n_p(4,'DisplayName=\"Blah\"')\n_p(4,'Square150x150Logo=\"Assets\\\\Logo.png\"')\n_p(4,'Square44x44Logo=\"Assets\\\\SmallLogo.png\"')\n_p(4,'Description=\"Blah\"')\n_p(4,'ForegroundText=\"light\"')\n_p(4,'BackgroundColor=\"transparent\">')\n_p(3,'</m3:VisualElements>')\n_p(2,'</Application>')\n_p(1,'</Applications>')\n_p('</Package>')\nend\n",
270   "esgroup(prj)\nvc2010.simplefilesgroup(prj, \"None\")\nvc2010.customtaskgroup(prj)\nvc2010.simplefilesgroup(prj, \"ResourceCompile\")\nvc2010.simplefilesgroup(prj, \"AppxManifest\")\nend\nfunction vc2010.customtaskgroup(prj)\nlocal files = { }\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nlocal fcfg = { }\nfcfg.name = path.getrelative(prj.location,buildtask[1])\nfcfg.vpath = path.trimdots(fcfg.name)\ntable.insert(files, fcfg)\nend\nend\nif #files > 0  then\n_p(1,'<ItemGroup>')\nlocal groupedBuildTasks = {}\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nif (groupedBuildTasks[buildtask[1]] == nil) then\ngroupedBuildTasks[buildtask[1]] = {}\nend\ntable.insert(groupedBuildTasks[buildtask[1]], buildtask)\nend\nend\nfor name, custombuildtask in pairs(groupedBuildTasks or {}) do\n_p(2,'<CustomBuild Include=\\\"%s\\\">', path.translate(path.getrelative(prj.location,name), \""
271   "\\\\\"))\n_p(3,'<FileType>Text</FileType>')\nlocal cmd = \"\"\nlocal outputs = \"\"\nfor _, buildtask in ipairs(custombuildtask or {}) do\nfor _, cmdline in ipairs(buildtask[4] or {}) do\ncmd = cmd .. cmdline\nlocal num = 1\nfor _, depdata in ipairs(buildtask[3] or {}) do\ncmd = string.gsub(cmd,\"%$%(\" .. num ..\"%)\", string.format(\"%s \",path.getrelative(prj.location,depdata)))\nnum = num + 1\nend\ncmd = string.gsub(cmd, \"%$%(<%)\", string.format(\"%s \",path.getrelative(prj.location,buildtask[1])))\ncmd = string.gsub(cmd, \"%$%(@%)\", string.format(\"%s \",path.getrelative(prj.location,buildtask[2])))\ncmd = cmd .. \"\\r\\n\"\nend \noutputs = outputs .. path.getrelative(prj.location,buildtask[2]) .. \";\"\nend\n_p(3,'<Command>%s</Command>',cmd)\n_p(3,'<Outputs>%s%%(Outputs)</Outputs>',outputs)\n_p(3,'<SubType>Designer</SubType>')\n_p(3,'<Message></Message>')\n_p(2,'</CustomBuild>')\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.simplefilesgroup(prj, section, subtype)\nlocal files = vc2010.getfileg"
272   "roup(prj, section)\nif #files > 0  then\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nif subtype then\n_p(2,'<%s Include=\\\"%s\\\">', section, path.translate(file.name, \"\\\\\"))\n_p(3,'<SubType>%s</SubType>', subtype)\n_p(2,'</%s>', section)\nelse\n_p(2,'<%s Include=\\\"%s\\\" />', section, path.translate(file.name, \"\\\\\"))\nend\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.compilerfilesgroup(prj)\nlocal configs = prj.solution.vstudio_configs\nlocal files = vc2010.getfilegroup(prj, \"ClCompile\")\nif #files > 0  then\nlocal config_mappings = {}\nfor _, cfginfo in ipairs(configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\nif cfg.pchheader and cfg.pchsource and not cfg.flags.NoPCH then\nconfig_mappings[cfginfo] = path.translate(cfg.pchsource, \"\\\\\")\nend\nend\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nlocal translatedpath = path.translate(file.name, \"\\\\\")\n_p(2, '<ClCompile Include=\\\"%s\\\">', translatedpath)\n_p(3, '<ObjectFile"
273   "Name>$(IntDir)%s.obj</ObjectFileName>'\n, premake.esc(path.translate(path.trimdots(path.removeext(file.name))))\n)\nfor _, cfginfo in ipairs(configs) do\nif config_mappings[cfginfo] and translatedpath == config_mappings[cfginfo] then\n_p(3,'<PrecompiledHeader '.. if_config_and_platform() .. '>Create</PrecompiledHeader>', premake.esc(cfginfo.name))\nconfig_mappings[cfginfo] = nil  --only one source file per pch\nend\nend\nlocal excluded = table.icontains(prj.excludes, file.name)\nfor _, vsconfig in ipairs(configs) do\nlocal cfg = premake.getconfig(prj, vsconfig.src_buildcfg, vsconfig.src_platform)\nif excluded or table.icontains(cfg.excludes, file.name) then\n_p(3, '<ExcludedFromBuild '\n.. if_config_and_platform()\n.. '>true</ExcludedFromBuild>'\n, premake.esc(vsconfig.name)\n)\nend\nend\n_p(2,'</ClCompile>')\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.header(targets)\nio.eol = \"\\r\\n\"\n_p('<?xml version=\"1.0\" encoding=\"utf-8\"?>')\nlocal t = \"\"\nif targets then\nt = ' DefaultTargets=\"' .. t"
274   "argets .. '\"'\nend\n_p('<Project%s ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">', t)\nend\nfunction premake.vs2010_vcxproj(prj)\nio.indent = \"  \"\nvc2010.header(\"Build\")\nvs2010_config(prj)\nvs2010_globals(prj)\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.Default.props\" />')\nfor _, cfginfo in ipairs(prj.solution.vstudio_configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\nvc2010.configurationPropertyGroup(cfg, cfginfo)\nend\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.props\" />')\n_p(1,'<ImportGroup Label=\"ExtensionSettings\">')\n_p(1,'</ImportGroup>')\nimport_props(prj)\n_p(1,'<PropertyGroup Label=\"UserMacros\" />')\nvc2010.outputProperties(prj)\nitem_definitions(prj)\nvc2010.files(prj)\nvc2010.projectReferences(prj)\n_p(1,'<Import Project=\"$(VCTargetsPath)\\\\Microsoft.Cpp.targets\" />')\n_p(1,'<ImportGroup Label=\"ExtensionTargets\">')\n_p(1,'</ImportGroup>')\n_p('</Project>')\nend\nfunction"
275   " vc2010.projectReferences(prj)\nlocal deps = premake.getdependencies(prj)\nif #deps > 0 then\n_p(1,'<ItemGroup>')\nfor _, dep in ipairs(deps) do\nlocal deppath = path.getrelative(prj.location, vstudio.projectfile(dep))\n_p(2,'<ProjectReference Include=\\\"%s\\\">', path.translate(deppath, \"\\\\\"))\n_p(3,'<Project>{%s}</Project>', dep.uuid)\nif vstudio.toolset == \"v120_wp81\" then\n_p(3,'<ReferenceOutputAssembly>false</ReferenceOutputAssembly>')\nend\n_p(2,'</ProjectReference>')\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.debugdir(cfg)\nif cfg.debugdir then\n_p('    <LocalDebuggerWorkingDirectory>%s</LocalDebuggerWorkingDirectory>', path.translate(cfg.debugdir, '\\\\'))\n_p('    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>')\nend\nif cfg.debugargs then\n_p('    <LocalDebuggerCommandArguments>%s</LocalDebuggerCommandArguments>', table.concat(cfg.debugargs, \" \"))\nend\nend\nfunction vc2010.debugenvs(cfg)\nif cfg.debugenvs and #cfg.debugenvs > 0 then\n_p(2,'<LocalDebuggerEnvironment>%s%s</L"
276   "ocalDebuggerEnvironment>',table.concat(cfg.debugenvs, \"\\n\")\n,iif(cfg.flags.DebugEnvsInherit,'\\n$(LocalDebuggerEnvironment)','')\n)\nif cfg.flags.DebugEnvsDontMerge then\n_p(2,'<LocalDebuggerMergeEnvironment>false</LocalDebuggerMergeEnvironment>')\nend\nend\nend\nfunction premake.vs2010_vcxproj_user(prj)\nio.indent = \"  \"\nvc2010.header()\nfor _, cfginfo in ipairs(prj.solution.vstudio_configs) do\nlocal cfg = premake.getconfig(prj, cfginfo.src_buildcfg, cfginfo.src_platform)\n_p('  <PropertyGroup '.. if_config_and_platform() ..'>', premake.esc(cfginfo.name))\nvc2010.debugdir(cfg)\nvc2010.debugenvs(cfg)\n_p('  </PropertyGroup>')\nend\n_p('</Project>')\nend\nfunction premake.vs2010_appxmanifest(prj)\nio.indent = \"  \"\nio.eol = \"\\r\\n\"\n_p('<?xml version=\"1.0\" encoding=\"utf-8\"?>')\n_p('<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\" xmlns:m2=\"http://schemas.microsoft.com/appx/2013/manifest\" xmlns:m3=\"http://schemas.microsoft.com/appx/2014/manifest\" xmlns:mp=\"http://schemas.m"
277   "icrosoft.com/appx/2014/phone/manifest\">')\n_p(1,'<Identity Name=\"' .. prj.uuid .. '\"')\n_p(2,'Publisher=\"CN=Unknown\"')\n_p(2,'Version=\"1.0.0.0\" />')\n_p(1,'<mp:PhoneIdentity PhoneProductId=\"' .. prj.uuid .. '\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>')\n_p(1,'<Properties>')\n_p(2,'<DisplayName>' .. prj.name .. '</DisplayName>')\n_p(2,'<PublisherDisplayName>Unknown</PublisherDisplayName>')\n_p(2,'<Logo>EmptyLogo.png</Logo>')\n_p(1,'</Properties>')\n_p(1,'<Prerequisites>')\n_p(2,'<OSMinVersion>6.3.1</OSMinVersion>')\n_p(2,'<OSMaxVersionTested>6.3.1</OSMaxVersionTested>')\n_p(1,'</Prerequisites>')\n_p(1,'<Resources>')\n_p(2,'<Resource Language=\"x-generate\"/>')\n_p(1,'</Resources>')\n_p(1,'<Applications>')\n_p(2,'<Application Id=\"App\"')\n_p(3,'Executable=\"$targetnametoken$.exe\"')\n_p(3,'EntryPoint=\"App\">')\n_p(3,'<m3:VisualElements')\n_p(4,'DisplayName=\"Blah\"')\n_p(4,'Square150x150Logo=\"Assets\\\\Logo.png\"')\n_p(4,'Square44x44Logo=\"Assets\\\\SmallLogo.png\"')\n_p(4,'Descrip"
278   "tion=\"Blah\"')\n_p(4,'ForegroundText=\"light\"')\n_p(4,'BackgroundColor=\"transparent\">')\n_p(3,'</m3:VisualElements>')\n_p(2,'</Application>')\n_p(1,'</Applications>')\n_p('</Package>')\nend\n",
275279
276280   /* actions/vstudio/vs2010_vcxproj_filters.lua */
277   "local vc2010 = premake.vstudio.vc2010\nlocal project = premake.project\nfunction vc2010.filteridgroup(prj)\nlocal filters = { }\nlocal filterfound = false\nfor file in project.eachfile(prj) do\nlocal folders = string.explode(file.vpath, \"/\", true)\nlocal path = \"\"\nfor i = 1, #folders - 1 do\nif not filterfound then\nfilterfound = true\n_p(1,'<ItemGroup>')\nend\npath = path .. folders[i]\nif not filters[path] then\nfilters[path] = true\n_p(2, '<Filter Include=\"%s\">', path)\n_p(3, '<UniqueIdentifier>{%s}</UniqueIdentifier>', os.uuid())\n_p(2, '</Filter>')\nend\npath = path .. \"\\\\\"\nend\nend\nif filterfound then\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.filefiltergroup(prj, section)\nlocal files = vc2010.getfilegroup(prj, section)\nif #files > 0 then\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nlocal filter\nif file.name ~= file.vpath then\nfilter = path.getdirectory(file.vpath)\nelse\nfilter = path.getdirectory(file.name)\nend\nif filter ~= \".\" then\n_p(2,'<%s Include=\\\"%s\\\">', "
278   "section, path.translate(file.name, \"\\\\\"))\n_p(3,'<Filter>%s</Filter>', path.translate(filter, \"\\\\\"))\n_p(2,'</%s>', section)\nelse\n_p(2,'<%s Include=\\\"%s\\\" />', section, path.translate(file.name, \"\\\\\"))\nend\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.generate_filters(prj)\nio.indent = \"  \"\nvc2010.header()\nvc2010.filteridgroup(prj)\nvc2010.filefiltergroup(prj, \"None\")\nvc2010.filefiltergroup(prj, \"ClInclude\")\nvc2010.filefiltergroup(prj, \"ClCompile\")\nvc2010.filefiltergroup(prj, \"ResourceCompile\")\n_p('</Project>')\nend\n",
281   "local vc2010 = premake.vstudio.vc2010\nlocal project = premake.project\nfunction vc2010.filteridgroup(prj)\nlocal filters = { }\nlocal filterfound = false\nfor file in project.eachfile(prj) do\nlocal folders = string.explode(file.vpath, \"/\", true)\nlocal path = \"\"\nfor i = 1, #folders - 1 do\nif not filterfound then\nfilterfound = true\n_p(1,'<ItemGroup>')\nend\npath = path .. folders[i]\nif not filters[path] then\nfilters[path] = true\n_p(2, '<Filter Include=\"%s\">', path)\n_p(3, '<UniqueIdentifier>{%s}</UniqueIdentifier>', os.uuid())\n_p(2, '</Filter>')\nend\npath = path .. \"\\\\\"\nend\nend\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nlocal folders = string.explode(path.trimdots(path.getrelative(prj.location,buildtask[1])), \"/\", true)\nlocal path = \"\"\nfor i = 1, #folders - 1 do\nif not filterfound then\nfilterfound = true\n_p(1,'<ItemGroup>')\nend\npath = path .. folders[i]\nif not filters[path] then\nfilters[path] = true\n"
282   "_p(2, '<Filter Include=\"%s\">', path)\n_p(3, '<UniqueIdentifier>{%s}</UniqueIdentifier>', os.uuid())\n_p(2, '</Filter>')\nend\npath = path .. \"\\\\\"\nend\nend\nend\nif filterfound then\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.filefiltergroup(prj, section)\nlocal files = vc2010.getfilegroup(prj, section) or {}\nif (section == \"CustomBuild\") then\nfor _, custombuildtask in ipairs(prj.custombuildtask or {}) do\nfor _, buildtask in ipairs(custombuildtask or {}) do\nlocal fcfg = { }\nfcfg.name = path.getrelative(prj.location,buildtask[1])\nfcfg.vpath = path.trimdots(fcfg.name)\ntable.insert(files, fcfg)\nend\nend\nend\nif #files > 0 then\n_p(1,'<ItemGroup>')\nfor _, file in ipairs(files) do\nlocal filter\nif file.name ~= file.vpath then\nfilter = path.getdirectory(file.vpath)\nelse\nfilter = path.getdirectory(file.name)\nend\nif filter ~= \".\" then\n_p(2,'<%s Include=\\\"%s\\\">', section, path.translate(file.name, \"\\\\\"))\n_p(3,'<Filter>%s</Filter>', path.translate(filter, \"\\\\\"))\n_p(2,'</%s>'"
283   ", section)\nelse\n_p(2,'<%s Include=\\\"%s\\\" />', section, path.translate(file.name, \"\\\\\"))\nend\nend\n_p(1,'</ItemGroup>')\nend\nend\nfunction vc2010.generate_filters(prj)\nio.indent = \"  \"\nvc2010.header()\nvc2010.filteridgroup(prj)\nvc2010.filefiltergroup(prj, \"None\")\nvc2010.filefiltergroup(prj, \"ClInclude\")\nvc2010.filefiltergroup(prj, \"ClCompile\")\nvc2010.filefiltergroup(prj, \"ResourceCompile\")\nvc2010.filefiltergroup(prj, \"CustomBuild\")\n_p('</Project>')\nend\n",
279284
280285   /* actions/vstudio/vs2012.lua */
281286   "premake.vstudio.vc2012 = {}\nlocal vc2012 = premake.vstudio.vc2012\nlocal vstudio = premake.vstudio\nnewaction\n{\ntrigger         = \"vs2012\",\nshortname       = \"Visual Studio 2012\",\ndescription     = \"Generate Microsoft Visual Studio 2012 project files\",\nos              = \"windows\",\nvalid_kinds     = { \"ConsoleApp\", \"WindowedApp\", \"StaticLib\", \"SharedLib\" },\nvalid_languages = { \"C\", \"C++\", \"C#\"},\nvalid_tools     = {\ncc     = { \"msc\"   },\ndotnet = { \"msnet\" },\n},\nonsolution = function(sln)\npremake.generate(sln, \"%%.sln\", vstudio.sln2005.generate)\nend,\nonproject = function(prj)\nif premake.isdotnetproject(prj) then\npremake.generate(prj, \"%%.csproj\", vstudio.cs2005.generate)\npremake.generate(prj, \"%%.csproj.user\", vstudio.cs2005.generate_user)\nelse\npremake.generate(prj, \"%%.vcxproj\", premake.vs2010_vcxproj)\npremake.generate(prj, \"%%.vcxproj.user\", premake.vs2010_vcxproj_user)\npremake.generate(prj, \"%%.vcxproj.filters\", vstudio.vc2010.generate_filters)\nend"
r245577r245578
297302   /* actions/xcode/xcode_common.lua */
298303   "local xcode = premake.xcode\nlocal tree  = premake.tree\nfunction xcode.getbuildcategory(node)\nlocal categories = {\n[\".a\"] = \"Frameworks\",\n[\".c\"] = \"Sources\",\n[\".cc\"] = \"Sources\",\n[\".cpp\"] = \"Sources\",\n[\".cxx\"] = \"Sources\",\n[\".dylib\"] = \"Frameworks\",\n[\".framework\"] = \"Frameworks\",\n[\".m\"] = \"Sources\",\n[\".mm\"] = \"Sources\",\n[\".strings\"] = \"Resources\",\n[\".nib\"] = \"Resources\",\n[\".xib\"] = \"Resources\",\n[\".icns\"] = \"Resources\",\n[\".bmp\"] = \"Resources\",\n[\".wav\"] = \"Resources\",\n}\nreturn categories[path.getextension(node.name)]\nend\nfunction xcode.getconfigname(cfg)\nlocal name = cfg.name\nif #cfg.project.solution.xcode.platforms > 1 then\nname = name .. \" \" .. premake.action.current().valid_platforms[cfg.platform]\nend\nreturn name\nend\nfunction xcode.getfiletype(node)\nlocal types = {\n[\".c\"]         = \"sourcecode.c.c\",\n[\".cc\"]        = \"sourcecode.cpp.cpp\",\n[\".cpp\"]       = \"sourcecode.cpp.cpp\",\n[\".css\"]       = \"text.cs"
299304   "s\",\n[\".cxx\"]       = \"sourcecode.cpp.cpp\",\n[\".framework\"] = \"wrapper.framework\",\n[\".gif\"]       = \"image.gif\",\n[\".h\"]         = \"sourcecode.c.h\",\n[\".html\"]      = \"text.html\",\n[\".lua\"]       = \"sourcecode.lua\",\n[\".m\"]         = \"sourcecode.c.objc\",\n[\".mm\"]        = \"sourcecode.cpp.objc\",\n[\".nib\"]       = \"wrapper.nib\",\n[\".pch\"]       = \"sourcecode.c.h\",\n[\".plist\"]     = \"text.plist.xml\",\n[\".strings\"]   = \"text.plist.strings\",\n[\".xib\"]       = \"file.xib\",\n[\".icns\"]      = \"image.icns\",\n[\".bmp\"]       = \"image.bmp\",\n[\".wav\"]       = \"audio.wav\",\n}\nreturn types[path.getextension(node.path)] or \"text\"\nend\nfunction xcode.getfiletypeForced(node)\nlocal types = {\n[\".c\"]         = \"sourcecode.cpp.cpp\",\n[\".cc\"]        = \"sourcecode.cpp.cpp\",\n[\".cpp\"]       = \"sourcecode.cpp.cpp\",\n[\".css\"]       = \"text.css\",\n[\".cxx\"]       = \"sourcecode.cpp.cpp\",\n[\".framework\"] = \"wrapper.framework\",\n[\".gif\"]       = "
300   "\"image.gif\",\n[\".h\"]         = \"sourcecode.cpp.h\",\n[\".html\"]      = \"text.html\",\n[\".lua\"]       = \"sourcecode.lua\",\n[\".m\"]         = \"sourcecode.c.objc\",\n[\".mm\"]        = \"sourcecode.cpp.objc\",\n[\".nib\"]       = \"wrapper.nib\",\n[\".pch\"]       = \"sourcecode.cpp.h\",\n[\".plist\"]     = \"text.plist.xml\",\n[\".strings\"]   = \"text.plist.strings\",\n[\".xib\"]       = \"file.xib\",\n[\".icns\"]      = \"image.icns\",\n[\".bmp\"]       = \"image.bmp\",\n[\".wav\"]       = \"audio.wav\",\n}\nreturn types[path.getextension(node.path)] or \"text\"\nend\nfunction xcode.getproducttype(node)\nlocal types = {\nConsoleApp  = \"com.apple.product-type.tool\",\nWindowedApp = \"com.apple.product-type.application\",\nStaticLib   = \"com.apple.product-type.library.static\",\nSharedLib   = \"com.apple.product-type.library.dynamic\",\n}\nreturn types[node.cfg.kind]\nend\nfunction xcode.gettargettype(node)\nlocal types = {\nConsoleApp  = \"\\\"compiled.mach-o.executable\\\"\",\nWindowedApp = \"wr"
301   "apper.application\",\nStaticLib   = \"archive.ar\",\nSharedLib   = \"\\\"compiled.mach-o.dylib\\\"\",\n}\nreturn types[node.cfg.kind]\nend\nfunction xcode.getxcodeprojname(prj)\nlocal fname = premake.project.getfilename(prj, \"%%.xcodeproj\")\nreturn fname\nend\nfunction xcode.isframework(fname)\nreturn (path.getextension(fname) == \".framework\")\nend\nfunction xcode.newid()\nreturn string.format(\"%04X%04X%04X%04X%04X%04X\",\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767))\nend\nfunction xcode.preparesolution(sln)\nsln.xcode = { }\nsln.xcode.platforms = premake.filterplatforms(sln, premake.action.current().valid_platforms, \"Universal\")\nfor prj in premake.solution.eachproject(sln) do\nlocal cfg = premake.getconfig(prj, prj.configurations[1], sln.xcode.platforms[1])\nlocal node = premake.tree.new(path.getname(cfg.buildtarget.bundlepath))\nnode.cfg = cfg\nnode.id = premake.xcode.newid(node, \"product\")\nnode.targe"
302   "tid = premake.xcode.newid(node, \"target\")\nprj.xcode = {}\nprj.xcode.projectnode = node\nend\nend\nfunction xcode.printlist(list, tag)\nif #list > 0 then\n_p(4,'%s = (', tag)\nfor _, item in ipairs(list) do\nlocal escaped_item = item:gsub(\"\\\"\", \"\\\\\\\"\")\n_p(5, '\"%s\",', escaped_item)\nend\n_p(4,');')\nend\nend\nfunction xcode.Header()\n_p('// !$*UTF8*$!')\n_p('{')\n_p(1,'archiveVersion = 1;')\n_p(1,'classes = {')\n_p(1,'};')\n_p(1,'objectVersion = 45;')\n_p(1,'objects = {')\n_p('')\nend\nfunction xcode.PBXBuildFile(tr)\n_p('/* Begin PBXBuildFile section */')\ntree.traverse(tr, {\nonnode = function(node)\nif node.buildid then\n_p(2,'%s /* %s in %s */ = {isa = PBXBuildFile; fileRef = %s /* %s */; };', \nnode.buildid, node.name, xcode.getbuildcategory(node), node.id, node.name)\nend\nend\n})\n_p('/* End PBXBuildFile section */')\n_p('')\nend\nfunction xcode.PBXContainerItemProxy(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXContainerItemProxy section */')\nfor _, node in ipairs(tr.projects.c"
303   "hildren) do\n_p(2,'%s /* PBXContainerItemProxy */ = {', node.productproxyid)\n_p(3,'isa = PBXContainerItemProxy;')\n_p(3,'containerPortal = %s /* %s */;', node.id, path.getname(node.path))\n_p(3,'proxyType = 2;')\n_p(3,'remoteGlobalIDString = %s;', node.project.xcode.projectnode.id)\n_p(3,'remoteInfo = \"%s\";', node.project.xcode.projectnode.name)\n_p(2,'};')\n_p(2,'%s /* PBXContainerItemProxy */ = {', node.targetproxyid)\n_p(3,'isa = PBXContainerItemProxy;')\n_p(3,'containerPortal = %s /* %s */;', node.id, path.getname(node.path))\n_p(3,'proxyType = 1;')\n_p(3,'remoteGlobalIDString = %s;', node.project.xcode.projectnode.targetid)\n_p(3,'remoteInfo = \"%s\";', node.project.xcode.projectnode.name)\n_p(2,'};')\nend\n_p('/* End PBXContainerItemProxy section */')\n_p('')\nend\nend\nfunction xcode.PBXFileReference(tr,prj)\n_p('/* Begin PBXFileReference section */')\ntree.traverse(tr, {\nonleaf = function(node)\nif not node.path then\nreturn\nend\nif node.kind == \"product\" then\n_p(2,'%s /* %s */ = {isa = PBXFile"
304   "Reference; explicitFileType = %s; includeInIndex = 0; name = \"%s\"; path = \"%s\"; sourceTree = BUILT_PRODUCTS_DIR; };',\nnode.id, node.name, xcode.gettargettype(node), node.name, path.getname(node.cfg.buildtarget.bundlepath))\nelseif node.parent.parent == tr.projects then\nlocal relpath = path.getrelative(tr.project.location, node.parent.project.location)\n_p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = \"%s\"; path = \"%s\"; sourceTree = SOURCE_ROOT; };',\nnode.parent.id, node.parent.name, node.parent.name, path.join(relpath, node.parent.name))\nelse\nlocal pth, src\nif xcode.isframework(node.path) then\nlocal nodePath = node.path\nlocal _, matchEnd, variable = string.find(nodePath, \"^%$%((.+)%)/\")\nif variable then\nnodePath = string.sub(nodePath, matchEnd + 1)\nend\nif string.find(nodePath,'/')  then\nif string.find(nodePath,'^%.')then\nerror('relative paths are not currently supported for frameworks')\nend\npth = nodePath\nelse\npth = \"/System/Library/Fr"
305   "ameworks/\" .. nodePath\nend\nif variable then\nsrc = variable\nif string.find(pth, '^/') then\npth = string.sub(pth, 2)\nend\nelse\nsrc = \"<absolute>\"\nend\nelse\nsrc = \"<group>\"\nif node.parent.isvpath then\npth = node.cfg.name\nelse\npth = tree.getlocalpath(node)\nend\nend\nif (not prj.options.ForceCPP) then\n_p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = \"%s\"; path = \"%s\"; sourceTree = \"%s\"; };',\nnode.id, node.name, xcode.getfiletype(node), node.name, pth, src)\nelse\n_p(2,'%s /* %s */ = {isa = PBXFileReference; explicitFileType = %s; name = \"%s\"; path = \"%s\"; sourceTree = \"%s\"; };',\nnode.id, node.name, xcode.getfiletypeForced(node), node.name, pth, src)\nend\nend\nend\n})\n_p('/* End PBXFileReference section */')\n_p('')\nend\nfunction xcode.PBXFrameworksBuildPhase(tr)\n_p('/* Begin PBXFrameworksBuildPhase section */')\n_p(2,'%s /* Frameworks */ = {', tr.products.children[1].fxstageid)\n_p(3,'isa = PBXFrameworksBuildPhase;')\n_p(3,'buildActionMask = 214748364"
306   "7;')\n_p(3,'files = (')\ntree.traverse(tr.frameworks, {\nonleaf = function(node)\n_p(4,'%s /* %s in Frameworks */,', node.buildid, node.name)\nend\n})\ntree.traverse(tr.projects, {\nonleaf = function(node)\n_p(4,'%s /* %s in Frameworks */,', node.buildid, node.name)\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\n_p('/* End PBXFrameworksBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXGroup(tr)\n_p('/* Begin PBXGroup section */')\ntree.traverse(tr, {\nonnode = function(node)\nif (node.path and #node.children == 0) or node.kind == \"vgroup\" then\nreturn\nend\nif node.parent == tr.projects then\n_p(2,'%s /* Products */ = {', node.productgroupid)\nelse\n_p(2,'%s /* %s */ = {', node.id, node.name)\nend\n_p(3,'isa = PBXGroup;')\n_p(3,'children = (')\nfor _, childnode in ipairs(node.children) do\n_p(4,'%s /* %s */,', childnode.id, childnode.name)\nend\n_p(3,');')\nif node.parent == tr.projects then\n_p(3,'name = Products;')\nelse\n_p(3,'name = \"%s\";', node.name)\nif node."
307   "path and not node.isvpath then\nlocal p = node.path\nif node.parent.path then\np = path.getrelative(node.parent.path, node.path)\nend\n_p(3,'path = \"%s\";', p)\nend\nend\n_p(3,'sourceTree = \"<group>\";')\n_p(2,'};')\nend\n}, true)\n_p('/* End PBXGroup section */')\n_p('')\nend\nfunction xcode.PBXNativeTarget(tr)\n_p('/* Begin PBXNativeTarget section */')\nfor _, node in ipairs(tr.products.children) do\nlocal name = tr.project.name\nlocal function hasBuildCommands(which)\nif #tr.project[which] > 0 then\nreturn true\nend\nfor _, cfg in ipairs(tr.configs) do\nif #cfg[which] > 0 then\nreturn true\nend\nend\nend\n_p(2,'%s /* %s */ = {', node.targetid, name)\n_p(3,'isa = PBXNativeTarget;')\n_p(3,'buildConfigurationList = %s /* Build configuration list for PBXNativeTarget \"%s\" */;', node.cfgsection, name)\n_p(3,'buildPhases = (')\nif hasBuildCommands('prebuildcommands') then\n_p(4,'9607AE1010C857E500CD1376 /* Prebuild */,')\nend\n_p(4,'%s /* Resources */,', node.resstageid)\n_p(4,'%s /* Sources */,', node.sources"
308   "id)\nif hasBuildCommands('prelinkcommands') then\n_p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,')\nend\n_p(4,'%s /* Frameworks */,', node.fxstageid)\nif hasBuildCommands('postbuildcommands') then\n_p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,')\nend\n_p(3,');')\n_p(3,'buildRules = (')\n_p(3,');')\n_p(3,'dependencies = (')\nfor _, node in ipairs(tr.projects.children) do\n_p(4,'%s /* PBXTargetDependency */,', node.targetdependid)\nend\n_p(3,');')\n_p(3,'name = \"%s\";', name)\nlocal p\nif node.cfg.kind == \"ConsoleApp\" then\np = \"$(HOME)/bin\"\nelseif node.cfg.kind == \"WindowedApp\" then\np = \"$(HOME)/Applications\"\nend\nif p then\n_p(3,'productInstallPath = \"%s\";', p)\nend\n_p(3,'productName = \"%s\";', name)\n_p(3,'productReference = %s /* %s */;', node.id, node.name)\n_p(3,'productType = \"%s\";', xcode.getproducttype(node))\n_p(2,'};')\nend\n_p('/* End PBXNativeTarget section */')\n_p('')\nend\nfunction xcode.PBXProject(tr)\n_p('/* Begin PBXProject section */')\n_p(2,'08FB7793FE84155DC02AAC07 /* Pro"
309   "ject object */ = {')\n_p(3,'isa = PBXProject;')\n_p(3,'buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject \"%s\" */;', tr.name)\n_p(3,'compatibilityVersion = \"Xcode 3.2\";')\n_p(3,'hasScannedForEncodings = 1;')\n_p(3,'mainGroup = %s /* %s */;', tr.id, tr.name)\n_p(3,'projectDirPath = \"\";')\nif #tr.projects.children > 0 then\n_p(3,'projectReferences = (')\nfor _, node in ipairs(tr.projects.children) do\n_p(4,'{')\n_p(5,'ProductGroup = %s /* Products */;', node.productgroupid)\n_p(5,'ProjectRef = %s /* %s */;', node.id, path.getname(node.path))\n_p(4,'},')\nend\n_p(3,');')\nend\n_p(3,'projectRoot = \"\";')\n_p(3,'targets = (')\nfor _, node in ipairs(tr.products.children) do\n_p(4,'%s /* %s */,', node.targetid, node.name)\nend\n_p(3,');')\n_p(2,'};')\n_p('/* End PBXProject section */')\n_p('')\nend\nfunction xcode.PBXReferenceProxy(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXReferenceProxy section */')\ntree.traverse(tr.projects, {\nonleaf = function(node)"
310   "\n_p(2,'%s /* %s */ = {', node.id, node.name)\n_p(3,'isa = PBXReferenceProxy;')\n_p(3,'fileType = %s;', xcode.gettargettype(node))\n_p(3,'path = \"%s\";', node.path)\n_p(3,'remoteRef = %s /* PBXContainerItemProxy */;', node.parent.productproxyid)\n_p(3,'sourceTree = BUILT_PRODUCTS_DIR;')\n_p(2,'};')\nend\n})\n_p('/* End PBXReferenceProxy section */')\n_p('')\nend\nend\nfunction xcode.PBXResourcesBuildPhase(tr)\n_p('/* Begin PBXResourcesBuildPhase section */')\nfor _, target in ipairs(tr.products.children) do\n_p(2,'%s /* Resources */ = {', target.resstageid)\n_p(3,'isa = PBXResourcesBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\ntree.traverse(tr, {\nonnode = function(node)\nif xcode.getbuildcategory(node) == \"Resources\" then\n_p(4,'%s /* %s in Resources */,', node.buildid, node.name)\nend\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\nend\n_p('/* End PBXResourcesBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXShellScriptBuildPhase(tr)\nloc"
311   "al wrapperWritten = false\nlocal function doblock(id, name, which)\nlocal prjcmds = tr.project[which]\nlocal commands = table.join(prjcmds, {})\nfor _, cfg in ipairs(tr.configs) do\nlocal cfgcmds = cfg[which]\nif #cfgcmds > #prjcmds then\ntable.insert(commands, 'if [ \"${CONFIGURATION}\" = \"' .. xcode.getconfigname(cfg) .. '\" ]; then')\nfor i = #prjcmds + 1, #cfgcmds do\ntable.insert(commands, cfgcmds[i])\nend\ntable.insert(commands, 'fi')\nend\nend\nif #commands > 0 then\nif not wrapperWritten then\n_p('/* Begin PBXShellScriptBuildPhase section */')\nwrapperWritten = true\nend\n_p(2,'%s /* %s */ = {', id, name)\n_p(3,'isa = PBXShellScriptBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\n_p(3,');')\n_p(3,'inputPaths = (');\n_p(3,');');\n_p(3,'name = %s;', name);\n_p(3,'outputPaths = (');\n_p(3,');');\n_p(3,'runOnlyForDeploymentPostprocessing = 0;');\n_p(3,'shellPath = /bin/sh;');\n_p(3,'shellScript = \"%s\";', table.concat(commands, \"\\\\n\"):gsub('\"', '\\\\\"'))\n_p(2,'};')\nend\nen"
312   "d\ndoblock(\"9607AE1010C857E500CD1376\", \"Prebuild\", \"prebuildcommands\")\ndoblock(\"9607AE3510C85E7E00CD1376\", \"Prelink\", \"prelinkcommands\")\ndoblock(\"9607AE3710C85E8F00CD1376\", \"Postbuild\", \"postbuildcommands\")\nif wrapperWritten then\n_p('/* End PBXShellScriptBuildPhase section */')\nend\nend\nfunction xcode.PBXSourcesBuildPhase(tr)\n_p('/* Begin PBXSourcesBuildPhase section */')\nfor _, target in ipairs(tr.products.children) do\n_p(2,'%s /* Sources */ = {', target.sourcesid)\n_p(3,'isa = PBXSourcesBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\ntree.traverse(tr, {\nonleaf = function(node)\nif xcode.getbuildcategory(node) == \"Sources\" then\n_p(4,'%s /* %s in Sources */,', node.buildid, node.name)\nend\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\nend\n_p('/* End PBXSourcesBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXVariantGroup(tr)\n_p('/* Begin PBXVariantGroup section */')\ntree.traverse(tr, {\nonbranch = function(nod"
313   "e)\nif node.kind == \"vgroup\" then\n_p(2,'%s /* %s */ = {', node.id, node.name)\n_p(3,'isa = PBXVariantGroup;')\n_p(3,'children = (')\nfor _, lang in ipairs(node.children) do\n_p(4,'%s /* %s */,', lang.id, lang.name)\nend\n_p(3,');')\n_p(3,'name = %s;', node.name)\n_p(3,'sourceTree = \"<group>\";')\n_p(2,'};')\nend\nend\n})\n_p('/* End PBXVariantGroup section */')\n_p('')\nend\nfunction xcode.PBXTargetDependency(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXTargetDependency section */')\ntree.traverse(tr.projects, {\nonleaf = function(node)\n_p(2,'%s /* PBXTargetDependency */ = {', node.parent.targetdependid)\n_p(3,'isa = PBXTargetDependency;')\n_p(3,'name = \"%s\";', node.name)\n_p(3,'targetProxy = %s /* PBXContainerItemProxy */;', node.parent.targetproxyid)\n_p(2,'};')\nend\n})\n_p('/* End PBXTargetDependency section */')\n_p('')\nend\nend\nfunction xcode.XCBuildConfiguration_Target(tr, target, cfg)\nlocal cfgname = xcode.getconfigname(cfg)\n_p(2,'%s /* %s */ = {', cfg.xcode.targetid, cfgname)\n_p"
314   "(3,'isa = XCBuildConfiguration;')\n_p(3,'buildSettings = {')\n_p(4,'ALWAYS_SEARCH_USER_PATHS = NO;')\nif not cfg.flags.Symbols then\n_p(4,'DEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";')\nend\nif cfg.kind ~= \"StaticLib\" and cfg.buildtarget.prefix ~= \"\" then\n_p(4,'EXECUTABLE_PREFIX = %s;', cfg.buildtarget.prefix)\nend\nif cfg.targetextension then\nlocal ext = cfg.targetextension\next = iif(ext:startswith(\".\"), ext:sub(2), ext)\n_p(4,'EXECUTABLE_EXTENSION = %s;', ext)\nend\nlocal outdir = path.getdirectory(cfg.buildtarget.bundlepath)\nif outdir ~= \".\" then\n_p(4,'CONFIGURATION_BUILD_DIR = %s;', outdir)\nend\n_p(4,'GCC_DYNAMIC_NO_PIC = NO;')\n_p(4,'GCC_MODEL_TUNING = G5;')\nif tr.infoplist then\n_p(4,'INFOPLIST_FILE = \"%s\";', tr.infoplist.cfg.name)\nend\ninstallpaths = {\nConsoleApp = '/usr/local/bin',\nWindowedApp = '\"$(HOME)/Applications\"',\nSharedLib = '/usr/local/lib',\nStaticLib = '/usr/local/lib',\n}\n_p(4,'INSTALL_PATH = %s;', installpaths[cfg.kind])\n_p(4,'PRODUCT_NAME = \"%s\";', cfg.build"
315   "target.basename)\n_p(3,'};')\n_p(3,'name = \"%s\";', cfgname)\n_p(2,'};')\nend\nfunction xcode.XCBuildConfiguration_Project(tr, cfg)\nlocal cfgname = xcode.getconfigname(cfg)\n_p(2,'%s /* %s */ = {', cfg.xcode.projectid, cfgname)\n_p(3,'isa = XCBuildConfiguration;')\n_p(3,'buildSettings = {')\nlocal archs = {\nNative = \"$(NATIVE_ARCH_ACTUAL)\",\nx32    = \"i386\",\nx64    = \"x86_64\",\nUniversal32 = \"$(ARCHS_STANDARD_32_BIT)\",\nUniversal64 = \"$(ARCHS_STANDARD_64_BIT)\",\nUniversal = \"$(ARCHS_STANDARD_32_64_BIT)\",\n}\n_p(4,'ARCHS = \"%s\";', archs[cfg.platform])\n_p(4,'SDKROOT = \"%s\";', xcode.toolset)\nlocal targetdir = path.getdirectory(cfg.buildtarget.bundlepath)\nif targetdir ~= \".\" then\n_p(4,'CONFIGURATION_BUILD_DIR = \"$(SYMROOT)\";');\nend\n_p(4,'CONFIGURATION_TEMP_DIR = \"$(OBJROOT)\";')\nif cfg.flags.Symbols then\n_p(4,'COPY_PHASE_STRIP = NO;')\nend\n_p(4,'GCC_C_LANGUAGE_STANDARD = gnu99;')\nif cfg.flags.NoExceptions then\n_p(4,'GCC_ENABLE_CPP_EXCEPTIONS = NO;')\nend\nif cfg.flags.NoRTTI the"
316   "n\n_p(4,'GCC_ENABLE_CPP_RTTI = NO;')\nend\nif _ACTION ~= \"xcode4\" and cfg.flags.Symbols and not cfg.flags.NoEditAndContinue then\n_p(4,'GCC_ENABLE_FIX_AND_CONTINUE = YES;')\nend\nif cfg.flags.NoExceptions then\n_p(4,'GCC_ENABLE_OBJC_EXCEPTIONS = NO;')\nend\nif cfg.flags.Optimize or cfg.flags.OptimizeSize then\n_p(4,'GCC_OPTIMIZATION_LEVEL = s;')\nelseif cfg.flags.OptimizeSpeed then\n_p(4,'GCC_OPTIMIZATION_LEVEL = 3;')\nelse\n_p(4,'GCC_OPTIMIZATION_LEVEL = 0;')\nend\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p(4,'GCC_PRECOMPILE_PREFIX_HEADER = YES;')\n_p(4,'GCC_PREFIX_HEADER = \"%s\";', cfg.pchheader)\nend\nxcode.printlist(cfg.defines, 'GCC_PREPROCESSOR_DEFINITIONS')\n_p(4,'GCC_SYMBOLS_PRIVATE_EXTERN = NO;')\nif cfg.flags.FatalWarnings then\n_p(4,'GCC_TREAT_WARNINGS_AS_ERRORS = YES;')\nend\n_p(4,'GCC_WARN_ABOUT_RETURN_TYPE = YES;')\n_p(4,'GCC_WARN_UNUSED_VARIABLE = YES;')\nxcode.printlist(cfg.includedirs, 'HEADER_SEARCH_PATHS')\nxcode.printlist(cfg.libdirs, 'LIBRARY_SEARCH_PATHS')\n_p(4,'OBJROOT = \"%s"
305   "\"image.gif\",\n[\".h\"]         = \"sourcecode.cpp.h\",\n[\".html\"]      = \"text.html\",\n[\".lua\"]       = \"sourcecode.lua\",\n[\".m\"]         = \"sourcecode.cpp.objc\",\n[\".mm\"]        = \"sourcecode.cpp.objc\",\n[\".nib\"]       = \"wrapper.nib\",\n[\".pch\"]       = \"sourcecode.cpp.h\",\n[\".plist\"]     = \"text.plist.xml\",\n[\".strings\"]   = \"text.plist.strings\",\n[\".xib\"]       = \"file.xib\",\n[\".icns\"]      = \"image.icns\",\n[\".bmp\"]       = \"image.bmp\",\n[\".wav\"]       = \"audio.wav\",\n}\nreturn types[path.getextension(node.path)] or \"text\"\nend\nfunction xcode.getproducttype(node)\nlocal types = {\nConsoleApp  = \"com.apple.product-type.tool\",\nWindowedApp = \"com.apple.product-type.application\",\nStaticLib   = \"com.apple.product-type.library.static\",\nSharedLib   = \"com.apple.product-type.library.dynamic\",\n}\nreturn types[node.cfg.kind]\nend\nfunction xcode.gettargettype(node)\nlocal types = {\nConsoleApp  = \"\\\"compiled.mach-o.executable\\\"\",\nWindowedApp = \""
306   "wrapper.application\",\nStaticLib   = \"archive.ar\",\nSharedLib   = \"\\\"compiled.mach-o.dylib\\\"\",\n}\nreturn types[node.cfg.kind]\nend\nfunction xcode.getxcodeprojname(prj)\nlocal fname = premake.project.getfilename(prj, \"%%.xcodeproj\")\nreturn fname\nend\nfunction xcode.isframework(fname)\nreturn (path.getextension(fname) == \".framework\")\nend\nfunction xcode.newid()\nreturn string.format(\"%04X%04X%04X%04X%04X%04X\",\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767),\nmath.random(0, 32767))\nend\nfunction xcode.preparesolution(sln)\nsln.xcode = { }\nsln.xcode.platforms = premake.filterplatforms(sln, premake.action.current().valid_platforms, \"Universal\")\nfor prj in premake.solution.eachproject(sln) do\nlocal cfg = premake.getconfig(prj, prj.configurations[1], sln.xcode.platforms[1])\nlocal node = premake.tree.new(path.getname(cfg.buildtarget.bundlepath))\nnode.cfg = cfg\nnode.id = premake.xcode.newid(node, \"product\")\nnode.tar"
307   "getid = premake.xcode.newid(node, \"target\")\nprj.xcode = {}\nprj.xcode.projectnode = node\nend\nend\nfunction xcode.printlist(list, tag)\nif #list > 0 then\n_p(4,'%s = (', tag)\nfor _, item in ipairs(list) do\nlocal escaped_item = item:gsub(\"\\\"\", \"\\\\\\\"\")\n_p(5, '\"%s\",', escaped_item)\nend\n_p(4,');')\nend\nend\nfunction xcode.Header()\n_p('// !$*UTF8*$!')\n_p('{')\n_p(1,'archiveVersion = 1;')\n_p(1,'classes = {')\n_p(1,'};')\n_p(1,'objectVersion = 45;')\n_p(1,'objects = {')\n_p('')\nend\nfunction xcode.PBXBuildFile(tr)\n_p('/* Begin PBXBuildFile section */')\ntree.traverse(tr, {\nonnode = function(node)\nif node.buildid then\n_p(2,'%s /* %s in %s */ = {isa = PBXBuildFile; fileRef = %s /* %s */; };', \nnode.buildid, node.name, xcode.getbuildcategory(node), node.id, node.name)\nend\nend\n})\n_p('/* End PBXBuildFile section */')\n_p('')\nend\nfunction xcode.PBXContainerItemProxy(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXContainerItemProxy section */')\nfor _, node in ipairs(tr.projects"
308   ".children) do\n_p(2,'%s /* PBXContainerItemProxy */ = {', node.productproxyid)\n_p(3,'isa = PBXContainerItemProxy;')\n_p(3,'containerPortal = %s /* %s */;', node.id, path.getname(node.path))\n_p(3,'proxyType = 2;')\n_p(3,'remoteGlobalIDString = %s;', node.project.xcode.projectnode.id)\n_p(3,'remoteInfo = \"%s\";', node.project.xcode.projectnode.name)\n_p(2,'};')\n_p(2,'%s /* PBXContainerItemProxy */ = {', node.targetproxyid)\n_p(3,'isa = PBXContainerItemProxy;')\n_p(3,'containerPortal = %s /* %s */;', node.id, path.getname(node.path))\n_p(3,'proxyType = 1;')\n_p(3,'remoteGlobalIDString = %s;', node.project.xcode.projectnode.targetid)\n_p(3,'remoteInfo = \"%s\";', node.project.xcode.projectnode.name)\n_p(2,'};')\nend\n_p('/* End PBXContainerItemProxy section */')\n_p('')\nend\nend\nfunction xcode.PBXFileReference(tr,prj)\n_p('/* Begin PBXFileReference section */')\ntree.traverse(tr, {\nonleaf = function(node)\nif not node.path then\nreturn\nend\nif node.kind == \"product\" then\n_p(2,'%s /* %s */ = {isa = PBXFi"
309   "leReference; explicitFileType = %s; includeInIndex = 0; name = \"%s\"; path = \"%s\"; sourceTree = BUILT_PRODUCTS_DIR; };',\nnode.id, node.name, xcode.gettargettype(node), node.name, path.getname(node.cfg.buildtarget.bundlepath))\nelseif node.parent.parent == tr.projects then\nlocal relpath = path.getrelative(tr.project.location, node.parent.project.location)\n_p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = \"%s\"; path = \"%s\"; sourceTree = SOURCE_ROOT; };',\nnode.parent.id, node.parent.name, node.parent.name, path.join(relpath, node.parent.name))\nelse\nlocal pth, src\nif xcode.isframework(node.path) then\nlocal nodePath = node.path\nlocal _, matchEnd, variable = string.find(nodePath, \"^%$%((.+)%)/\")\nif variable then\nnodePath = string.sub(nodePath, matchEnd + 1)\nend\nif string.find(nodePath,'/')  then\nif string.find(nodePath,'^%.')then\nerror('relative paths are not currently supported for frameworks')\nend\npth = nodePath\nelse\npth = \"/System/Library/"
310   "Frameworks/\" .. nodePath\nend\nif variable then\nsrc = variable\nif string.find(pth, '^/') then\npth = string.sub(pth, 2)\nend\nelse\nsrc = \"<absolute>\"\nend\nelse\nsrc = \"<group>\"\nif node.parent.isvpath then\npth = node.cfg.name\nelse\npth = tree.getlocalpath(node)\nend\nend\nif (not prj.options.ForceCPP) then\n_p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = \"%s\"; path = \"%s\"; sourceTree = \"%s\"; };',\nnode.id, node.name, xcode.getfiletype(node), node.name, pth, src)\nelse\n_p(2,'%s /* %s */ = {isa = PBXFileReference; explicitFileType = %s; name = \"%s\"; path = \"%s\"; sourceTree = \"%s\"; };',\nnode.id, node.name, xcode.getfiletypeForced(node), node.name, pth, src)\nend\nend\nend\n})\n_p('/* End PBXFileReference section */')\n_p('')\nend\nfunction xcode.PBXFrameworksBuildPhase(tr)\n_p('/* Begin PBXFrameworksBuildPhase section */')\n_p(2,'%s /* Frameworks */ = {', tr.products.children[1].fxstageid)\n_p(3,'isa = PBXFrameworksBuildPhase;')\n_p(3,'buildActionMask = 2147483"
311   "647;')\n_p(3,'files = (')\ntree.traverse(tr.frameworks, {\nonleaf = function(node)\n_p(4,'%s /* %s in Frameworks */,', node.buildid, node.name)\nend\n})\ntree.traverse(tr.projects, {\nonleaf = function(node)\n_p(4,'%s /* %s in Frameworks */,', node.buildid, node.name)\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\n_p('/* End PBXFrameworksBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXGroup(tr)\n_p('/* Begin PBXGroup section */')\ntree.traverse(tr, {\nonnode = function(node)\nif (node.path and #node.children == 0) or node.kind == \"vgroup\" then\nreturn\nend\nif node.parent == tr.projects then\n_p(2,'%s /* Products */ = {', node.productgroupid)\nelse\n_p(2,'%s /* %s */ = {', node.id, node.name)\nend\n_p(3,'isa = PBXGroup;')\n_p(3,'children = (')\nfor _, childnode in ipairs(node.children) do\n_p(4,'%s /* %s */,', childnode.id, childnode.name)\nend\n_p(3,');')\nif node.parent == tr.projects then\n_p(3,'name = Products;')\nelse\n_p(3,'name = \"%s\";', node.name)\nif nod"
312   "e.path and not node.isvpath then\nlocal p = node.path\nif node.parent.path then\np = path.getrelative(node.parent.path, node.path)\nend\n_p(3,'path = \"%s\";', p)\nend\nend\n_p(3,'sourceTree = \"<group>\";')\n_p(2,'};')\nend\n}, true)\n_p('/* End PBXGroup section */')\n_p('')\nend\nfunction xcode.PBXNativeTarget(tr)\n_p('/* Begin PBXNativeTarget section */')\nfor _, node in ipairs(tr.products.children) do\nlocal name = tr.project.name\nlocal function hasBuildCommands(which)\nif #tr.project[which] > 0 then\nreturn true\nend\nfor _, cfg in ipairs(tr.configs) do\nif #cfg[which] > 0 then\nreturn true\nend\nend\nend\n_p(2,'%s /* %s */ = {', node.targetid, name)\n_p(3,'isa = PBXNativeTarget;')\n_p(3,'buildConfigurationList = %s /* Build configuration list for PBXNativeTarget \"%s\" */;', node.cfgsection, name)\n_p(3,'buildPhases = (')\nif hasBuildCommands('prebuildcommands') then\n_p(4,'9607AE1010C857E500CD1376 /* Prebuild */,')\nend\n_p(4,'%s /* Resources */,', node.resstageid)\n_p(4,'%s /* Sources */,', node.sourc"
313   "esid)\nif hasBuildCommands('prelinkcommands') then\n_p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,')\nend\n_p(4,'%s /* Frameworks */,', node.fxstageid)\nif hasBuildCommands('postbuildcommands') then\n_p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,')\nend\n_p(3,');')\n_p(3,'buildRules = (')\n_p(3,');')\n_p(3,'dependencies = (')\nfor _, node in ipairs(tr.projects.children) do\n_p(4,'%s /* PBXTargetDependency */,', node.targetdependid)\nend\n_p(3,');')\n_p(3,'name = \"%s\";', name)\nlocal p\nif node.cfg.kind == \"ConsoleApp\" then\np = \"$(HOME)/bin\"\nelseif node.cfg.kind == \"WindowedApp\" then\np = \"$(HOME)/Applications\"\nend\nif p then\n_p(3,'productInstallPath = \"%s\";', p)\nend\n_p(3,'productName = \"%s\";', name)\n_p(3,'productReference = %s /* %s */;', node.id, node.name)\n_p(3,'productType = \"%s\";', xcode.getproducttype(node))\n_p(2,'};')\nend\n_p('/* End PBXNativeTarget section */')\n_p('')\nend\nfunction xcode.PBXProject(tr)\n_p('/* Begin PBXProject section */')\n_p(2,'08FB7793FE84155DC02AAC07 /* P"
314   "roject object */ = {')\n_p(3,'isa = PBXProject;')\n_p(3,'buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject \"%s\" */;', tr.name)\n_p(3,'compatibilityVersion = \"Xcode 3.2\";')\n_p(3,'hasScannedForEncodings = 1;')\n_p(3,'mainGroup = %s /* %s */;', tr.id, tr.name)\n_p(3,'projectDirPath = \"\";')\nif #tr.projects.children > 0 then\n_p(3,'projectReferences = (')\nfor _, node in ipairs(tr.projects.children) do\n_p(4,'{')\n_p(5,'ProductGroup = %s /* Products */;', node.productgroupid)\n_p(5,'ProjectRef = %s /* %s */;', node.id, path.getname(node.path))\n_p(4,'},')\nend\n_p(3,');')\nend\n_p(3,'projectRoot = \"\";')\n_p(3,'targets = (')\nfor _, node in ipairs(tr.products.children) do\n_p(4,'%s /* %s */,', node.targetid, node.name)\nend\n_p(3,');')\n_p(2,'};')\n_p('/* End PBXProject section */')\n_p('')\nend\nfunction xcode.PBXReferenceProxy(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXReferenceProxy section */')\ntree.traverse(tr.projects, {\nonleaf = function(node"
315   ")\n_p(2,'%s /* %s */ = {', node.id, node.name)\n_p(3,'isa = PBXReferenceProxy;')\n_p(3,'fileType = %s;', xcode.gettargettype(node))\n_p(3,'path = \"%s\";', node.path)\n_p(3,'remoteRef = %s /* PBXContainerItemProxy */;', node.parent.productproxyid)\n_p(3,'sourceTree = BUILT_PRODUCTS_DIR;')\n_p(2,'};')\nend\n})\n_p('/* End PBXReferenceProxy section */')\n_p('')\nend\nend\nfunction xcode.PBXResourcesBuildPhase(tr)\n_p('/* Begin PBXResourcesBuildPhase section */')\nfor _, target in ipairs(tr.products.children) do\n_p(2,'%s /* Resources */ = {', target.resstageid)\n_p(3,'isa = PBXResourcesBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\ntree.traverse(tr, {\nonnode = function(node)\nif xcode.getbuildcategory(node) == \"Resources\" then\n_p(4,'%s /* %s in Resources */,', node.buildid, node.name)\nend\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\nend\n_p('/* End PBXResourcesBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXShellScriptBuildPhase(tr)\nlo"
316   "cal wrapperWritten = false\nlocal function doblock(id, name, which)\nlocal prjcmds = tr.project[which]\nlocal commands = table.join(prjcmds, {})\nfor _, cfg in ipairs(tr.configs) do\nlocal cfgcmds = cfg[which]\nif #cfgcmds > #prjcmds then\ntable.insert(commands, 'if [ \"${CONFIGURATION}\" = \"' .. xcode.getconfigname(cfg) .. '\" ]; then')\nfor i = #prjcmds + 1, #cfgcmds do\ntable.insert(commands, cfgcmds[i])\nend\ntable.insert(commands, 'fi')\nend\nend\nif #commands > 0 then\nif not wrapperWritten then\n_p('/* Begin PBXShellScriptBuildPhase section */')\nwrapperWritten = true\nend\n_p(2,'%s /* %s */ = {', id, name)\n_p(3,'isa = PBXShellScriptBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\n_p(3,');')\n_p(3,'inputPaths = (');\n_p(3,');');\n_p(3,'name = %s;', name);\n_p(3,'outputPaths = (');\n_p(3,');');\n_p(3,'runOnlyForDeploymentPostprocessing = 0;');\n_p(3,'shellPath = /bin/sh;');\n_p(3,'shellScript = \"%s\";', table.concat(commands, \"\\\\n\"):gsub('\"', '\\\\\"'))\n_p(2,'};')\nend\ne"
317   "nd\ndoblock(\"9607AE1010C857E500CD1376\", \"Prebuild\", \"prebuildcommands\")\ndoblock(\"9607AE3510C85E7E00CD1376\", \"Prelink\", \"prelinkcommands\")\ndoblock(\"9607AE3710C85E8F00CD1376\", \"Postbuild\", \"postbuildcommands\")\nif wrapperWritten then\n_p('/* End PBXShellScriptBuildPhase section */')\nend\nend\nfunction xcode.PBXSourcesBuildPhase(tr)\n_p('/* Begin PBXSourcesBuildPhase section */')\nfor _, target in ipairs(tr.products.children) do\n_p(2,'%s /* Sources */ = {', target.sourcesid)\n_p(3,'isa = PBXSourcesBuildPhase;')\n_p(3,'buildActionMask = 2147483647;')\n_p(3,'files = (')\ntree.traverse(tr, {\nonleaf = function(node)\nif xcode.getbuildcategory(node) == \"Sources\" then\n_p(4,'%s /* %s in Sources */,', node.buildid, node.name)\nend\nend\n})\n_p(3,');')\n_p(3,'runOnlyForDeploymentPostprocessing = 0;')\n_p(2,'};')\nend\n_p('/* End PBXSourcesBuildPhase section */')\n_p('')\nend\nfunction xcode.PBXVariantGroup(tr)\n_p('/* Begin PBXVariantGroup section */')\ntree.traverse(tr, {\nonbranch = function(no"
318   "de)\nif node.kind == \"vgroup\" then\n_p(2,'%s /* %s */ = {', node.id, node.name)\n_p(3,'isa = PBXVariantGroup;')\n_p(3,'children = (')\nfor _, lang in ipairs(node.children) do\n_p(4,'%s /* %s */,', lang.id, lang.name)\nend\n_p(3,');')\n_p(3,'name = %s;', node.name)\n_p(3,'sourceTree = \"<group>\";')\n_p(2,'};')\nend\nend\n})\n_p('/* End PBXVariantGroup section */')\n_p('')\nend\nfunction xcode.PBXTargetDependency(tr)\nif #tr.projects.children > 0 then\n_p('/* Begin PBXTargetDependency section */')\ntree.traverse(tr.projects, {\nonleaf = function(node)\n_p(2,'%s /* PBXTargetDependency */ = {', node.parent.targetdependid)\n_p(3,'isa = PBXTargetDependency;')\n_p(3,'name = \"%s\";', node.name)\n_p(3,'targetProxy = %s /* PBXContainerItemProxy */;', node.parent.targetproxyid)\n_p(2,'};')\nend\n})\n_p('/* End PBXTargetDependency section */')\n_p('')\nend\nend\nfunction xcode.XCBuildConfiguration_Target(tr, target, cfg)\nlocal cfgname = xcode.getconfigname(cfg)\n_p(2,'%s /* %s */ = {', cfg.xcode.targetid, cfgname)\n_"
319   "p(3,'isa = XCBuildConfiguration;')\n_p(3,'buildSettings = {')\n_p(4,'ALWAYS_SEARCH_USER_PATHS = NO;')\nif not cfg.flags.Symbols then\n_p(4,'DEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";')\nend\nif cfg.kind ~= \"StaticLib\" and cfg.buildtarget.prefix ~= \"\" then\n_p(4,'EXECUTABLE_PREFIX = %s;', cfg.buildtarget.prefix)\nend\nif cfg.targetextension then\nlocal ext = cfg.targetextension\next = iif(ext:startswith(\".\"), ext:sub(2), ext)\n_p(4,'EXECUTABLE_EXTENSION = %s;', ext)\nend\nlocal outdir = path.getdirectory(cfg.buildtarget.bundlepath)\nif outdir ~= \".\" then\n_p(4,'CONFIGURATION_BUILD_DIR = %s;', outdir)\nend\n_p(4,'GCC_DYNAMIC_NO_PIC = NO;')\n_p(4,'GCC_MODEL_TUNING = G5;')\nif tr.infoplist then\n_p(4,'INFOPLIST_FILE = \"%s\";', tr.infoplist.cfg.name)\nend\ninstallpaths = {\nConsoleApp = '/usr/local/bin',\nWindowedApp = '\"$(HOME)/Applications\"',\nSharedLib = '/usr/local/lib',\nStaticLib = '/usr/local/lib',\n}\n_p(4,'INSTALL_PATH = %s;', installpaths[cfg.kind])\n_p(4,'PRODUCT_NAME = \"%s\";', cfg.buil"
320   "dtarget.basename)\n_p(3,'};')\n_p(3,'name = \"%s\";', cfgname)\n_p(2,'};')\nend\nfunction xcode.XCBuildConfiguration_Project(tr, cfg)\nlocal cfgname = xcode.getconfigname(cfg)\n_p(2,'%s /* %s */ = {', cfg.xcode.projectid, cfgname)\n_p(3,'isa = XCBuildConfiguration;')\n_p(3,'buildSettings = {')\nlocal archs = {\nNative = \"$(NATIVE_ARCH_ACTUAL)\",\nx32    = \"i386\",\nx64    = \"x86_64\",\nUniversal32 = \"$(ARCHS_STANDARD_32_BIT)\",\nUniversal64 = \"$(ARCHS_STANDARD_64_BIT)\",\nUniversal = \"$(ARCHS_STANDARD_32_64_BIT)\",\n}\n_p(4,'ARCHS = \"%s\";', archs[cfg.platform])\n_p(4,'SDKROOT = \"%s\";', xcode.toolset)\nlocal targetdir = path.getdirectory(cfg.buildtarget.bundlepath)\nif targetdir ~= \".\" then\n_p(4,'CONFIGURATION_BUILD_DIR = \"$(SYMROOT)\";');\nend\n_p(4,'CONFIGURATION_TEMP_DIR = \"$(OBJROOT)\";')\nif cfg.flags.Symbols then\n_p(4,'COPY_PHASE_STRIP = NO;')\nend\n_p(4,'GCC_C_LANGUAGE_STANDARD = gnu99;')\nif cfg.flags.NoExceptions then\n_p(4,'GCC_ENABLE_CPP_EXCEPTIONS = NO;')\nend\nif cfg.flags.NoRTTI th"
321   "en\n_p(4,'GCC_ENABLE_CPP_RTTI = NO;')\nend\nif _ACTION ~= \"xcode4\" and cfg.flags.Symbols and not cfg.flags.NoEditAndContinue then\n_p(4,'GCC_ENABLE_FIX_AND_CONTINUE = YES;')\nend\nif cfg.flags.NoExceptions then\n_p(4,'GCC_ENABLE_OBJC_EXCEPTIONS = NO;')\nend\nif cfg.flags.Optimize or cfg.flags.OptimizeSize then\n_p(4,'GCC_OPTIMIZATION_LEVEL = s;')\nelseif cfg.flags.OptimizeSpeed then\n_p(4,'GCC_OPTIMIZATION_LEVEL = 3;')\nelse\n_p(4,'GCC_OPTIMIZATION_LEVEL = 0;')\nend\nif cfg.pchheader and not cfg.flags.NoPCH then\n_p(4,'GCC_PRECOMPILE_PREFIX_HEADER = YES;')\n_p(4,'GCC_PREFIX_HEADER = \"%s\";', cfg.pchheader)\nend\nxcode.printlist(cfg.defines, 'GCC_PREPROCESSOR_DEFINITIONS')\n_p(4,'GCC_SYMBOLS_PRIVATE_EXTERN = NO;')\nif cfg.flags.FatalWarnings then\n_p(4,'GCC_TREAT_WARNINGS_AS_ERRORS = YES;')\nend\n_p(4,'GCC_WARN_ABOUT_RETURN_TYPE = YES;')\n_p(4,'GCC_WARN_UNUSED_VARIABLE = YES;')\nxcode.printlist(cfg.includedirs, 'HEADER_SEARCH_PATHS')\nxcode.printlist(cfg.libdirs, 'LIBRARY_SEARCH_PATHS')\n_p(4,'OBJROOT = \"%s"
317322   "\";', cfg.objectsdir)\n_p(4,'ONLY_ACTIVE_ARCH = %s;',iif(premake.config.isdebugbuild(cfg),'YES','NO'))\nlocal checks = {\n[\"-ffast-math\"]          = cfg.flags.FloatFast,\n[\"-ffloat-store\"]        = cfg.flags.FloatStrict,\n[\"-fomit-frame-pointer\"] = cfg.flags.NoFramePointer,\n}\nlocal flags = { }\nfor flag, check in pairs(checks) do\nif check then\ntable.insert(flags, flag)\nend\nend\nxcode.printlist(table.join(flags, cfg.buildoptions), 'OTHER_CFLAGS')\nflags = { }\nfor _, lib in ipairs(premake.getlinks(cfg, \"system\")) do\nif not xcode.isframework(lib) then\ntable.insert(flags, \"-l\" .. lib)\nend\nend\nflags = table.join(flags, cfg.linkoptions)\nxcode.printlist(flags, 'OTHER_LDFLAGS')\nif cfg.flags.StaticRuntime then\n_p(4,'STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;')\nend\nif targetdir ~= \".\" then\n_p(4,'SYMROOT = \"%s\";', targetdir)\nend\nif cfg.flags.ExtraWarnings then\n_p(4,'WARNING_CFLAGS = \"-Wall\";')\nend\n_p(3,'};')\n_p(3,'name = \"%s\";', cfgname)\n_p(2,'};')\nend\nfunction xcode.XCBuildC"
318323   "onfiguration(tr)\n_p('/* Begin XCBuildConfiguration section */')\nfor _, target in ipairs(tr.products.children) do\nfor _, cfg in ipairs(tr.configs) do\nxcode.XCBuildConfiguration_Target(tr, target, cfg)\nend\nend\nfor _, cfg in ipairs(tr.configs) do\nxcode.XCBuildConfiguration_Project(tr, cfg)\nend\n_p('/* End XCBuildConfiguration section */')\n_p('')\nend\nfunction xcode.XCBuildConfigurationList(tr)\nlocal sln = tr.project.solution\n_p('/* Begin XCConfigurationList section */')\nfor _, target in ipairs(tr.products.children) do\n_p(2,'%s /* Build configuration list for PBXNativeTarget \"%s\" */ = {', target.cfgsection, target.name)\n_p(3,'isa = XCConfigurationList;')\n_p(3,'buildConfigurations = (')\nfor _, cfg in ipairs(tr.configs) do\n_p(4,'%s /* %s */,', cfg.xcode.targetid, xcode.getconfigname(cfg))\nend\n_p(3,');')\n_p(3,'defaultConfigurationIsVisible = 0;')\n_p(3,'defaultConfigurationName = \"%s\";', xcode.getconfigname(tr.configs[1]))\n_p(2,'};')\nend\n_p(2,'1DEB928908733DD80010E9CD /* Build configurati"
319324   "on list for PBXProject \"%s\" */ = {', tr.name)\n_p(3,'isa = XCConfigurationList;')\n_p(3,'buildConfigurations = (')\nfor _, cfg in ipairs(tr.configs) do\n_p(4,'%s /* %s */,', cfg.xcode.projectid, xcode.getconfigname(cfg))\nend\n_p(3,');')\n_p(3,'defaultConfigurationIsVisible = 0;')\n_p(3,'defaultConfigurationName = \"%s\";', xcode.getconfigname(tr.configs[1]))\n_p(2,'};')\n_p('/* End XCConfigurationList section */')\n_p('')\nend\nfunction xcode.Footer()\n_p(1,'};')\n_p('\\trootObject = 08FB7793FE84155DC02AAC07 /* Project object */;')\n_p('}')\nend\n",
trunk/3rdparty/sqlite3/sqlite3.c
r245577r245578
7282172821  UnpackedRecord r;
7282272822  char aTempRec[ROUND8(sizeof(UnpackedRecord)) + sizeof(Mem)*4 + 7];
7282372823
72824  // MAME: fixed Visual Studio warning about potentially uninitialized variable with optimizations enabled
72825  memset(&r, 0x00, sizeof(UnpackedRecord));
72826 
7282472827#ifdef SQLITE_TEST
7282572828  if( pOp->opcode!=OP_NoConflict ) sqlite3_found_count++;
7282672829#endif
r245577r245578
9356493567  WhereInfo *pWInfo;     /* Information about the WHERE clause */
9356593568  Index *pIdx;           /* For looping over indices of the table */
9356693569  int iTabCur;           /* Cursor number for the table */
93567  int iDataCur;          /* VDBE cursor for the canonical data source */
93568  int iIdxCur;           /* Cursor number of the first index */
93570  // MAME: fixed Visual Studio warning about potentially uninitialized variable with optimizations enabled
93571  int iDataCur = 0;      /* VDBE cursor for the canonical data source */
93572  // MAME: fixed Visual Studio warning about potentially uninitialized variable with optimizations enabled
93573  int iIdxCur = 0;       /* Cursor number of the first index */
9356993574  int nIdx;              /* Number of indices */
9357093575  sqlite3 *db;           /* Main database structure */
9357193576  AuthContext sContext;  /* Authorization context */
trunk/hash/famicom_flop.xml
r245577r245578
13361336      </part>
13371337   </software>
13381338
1339   <software name="mahjong">
1340      <description>Mahjong</description>
1341      <year>1986</year>
1342      <publisher>Nintendo</publisher>
1343      <info name="serial" value="FMC-MJA"/>
1344      <info name="release" value="19860221"/>
1345      <info name="alt_title" value="麻雀"/>
1346      <part name="flop1" interface="floppy_5_25">
1347         <dataarea name="flop" size="65500">
1348            <rom name="mahjong (japan).fds" size="65500" crc="9a8a4dbf" sha1="615659bfea21919e11608031e8fe818a9e02d1e0" offset="0" />
1349         </dataarea>
1350      </part>
1351   </software>
1352
13391353   <software name="mjgoraku">
13401354      <description>Mahjong Goraku - Bishoujo Meijinsen</description>
13411355      <year>19??</year>
r245577r245578
20372051      </part>
20382052   </software>
20392053
2054   <software name="volley">
2055      <description>Volleyball</description>
2056      <year>1986</year>
2057      <publisher>Nintendo</publisher>
2058      <info name="serial" value="FMC-VBW"/>
2059      <info name="release" value="19860721"/>
2060      <info name="alt_title" value="バレーボール"/>
2061      <part name="flop1" interface="floppy_5_25">
2062         <dataarea name="flop" size="65500">
2063            <rom name="volleyball (japan).fds" size="65500" crc="f2040d16" sha1="fb2d7fe3866765ec34249a2853a592bd0dc2217d" offset="0" />
2064         </dataarea>
2065      </part>
2066   </software>
2067
20402068   <software name="excitbik">
20412069      <description>Vs. Excitebike</description>
20422070      <year>1988</year>
r245577r245578
34593487      </part>
34603488   </software>
34613489
3462   <software name="mahjong">
3463      <description>Mahjong</description>
3464      <year>1986</year>
3465      <publisher>Nintendo</publisher>
3466      <info name="serial" value="FMC-MJA"/>
3467      <info name="release" value="19860221"/>
3468      <info name="alt_title" value="麻雀"/>
3469      <part name="flop1" interface="floppy_5_25">
3470         <dataarea name="flop" size="65500">
3471            <rom name="mahjong (1983)(nintendo)[fmc-mja] [ok].fds" size="65500" crc="84e2c9b0" sha1="5524318bb3923d7cef952d10c1d93fef7851ebc1" offset="0" />
3472         </dataarea>
3473      </part>
3474   </software>
3475
34763490   <software name="mjkazoku">
34773491      <description>Mahjong Kazoku</description>
34783492      <year>1987</year>
r245577r245578
40514065      </part>
40524066   </software>
40534067
4054   <software name="volley">
4055      <description>Volleyball</description>
4056      <year>1986</year>
4057      <publisher>Nintendo</publisher>
4058      <info name="serial" value="FMC-VBW"/>
4059      <info name="release" value="19860721"/>
4060      <info name="alt_title" value="バレーボール"/>
4061      <part name="flop1" interface="floppy_5_25">
4062         <dataarea name="flop" size="65500">
4063            <rom name="volleyball (1986)(nintendo)[fmc-vbw] [ok].fds" size="65500" crc="44f52452" sha1="76a0ae474082e4c500a17cd6ace2be70e47b5ac3" offset="0" />
4064         </dataarea>
4065      </part>
4066   </software>
4067
40684068   <software name="wardner">
40694069      <description>Wardner no Mori</description>
40704070      <year>1988</year>
trunk/hash/gamegear.xml
r245577r245578
93769376      </part>
93779377   </software>
93789378
9379   <software name="wildsnak">
9380      <description>WildSnake (Prototype)</description>
9381      <year>1994</year>
9382      <publisher>Bullet-Proof Software</publisher>
9383      <part name="cart" interface="gamegear_cart">
9384         <dataarea name="rom" size="131072">
9385            <rom name="wildsnake [proto].bin" size="131072" crc="d460cc7f" sha1="77d368263934aa968a6b6876a3e252f3ee715c84" offset="000000" />
9386         </dataarea>
9387      </part>
9388   </software>
9389
93799390   <software name="wimbled">
93809391      <description>Wimbledon (World)</description>
93819392      <year>1992</year>
trunk/hash/nes.xml
r245577r245578
3073630736      </part>
3073730737   </software>
3073830738
30739   <software name="rockinktu" cloneof="rockinkt">
30740      <description>Rockin' Kats (USA)</description>
30741      <year>1991</year>
30739   <software name="rockinkt">
30740      <description>Rockin' Kats (Euro)</description>
30741      <year>1992</year>
3074230742      <publisher>Atlus</publisher>
30743      <info name="serial" value="NES-7A-USA"/>
30744      <info name="release" value="199109xx"/>
30743      <info name="serial" value="NES-7A (SCN/ESP)"/>
30744      <info name="release" value="19921119"/>
3074530745      <part name="cart" interface="nes_cart">
3074630746         <feature name="slot" value="txrom" />
3074730747         <feature name="pcb" value="NES-TLROM" />
30748         <feature name="mmc3_type" value="MMC3B" />
30748         <feature name="mmc3_type" value="MMC3C" />
3074930749         <dataarea name="prg" size="131072">
30750            <rom name="nes-7a-0 prg" size="131072" crc="319ccfcc" sha1="06e1c34af917b84a990db895c7b44df1b3393c96" offset="00000" />
30750            <rom name="pal-7a-0 prg" size="131072" crc="0e431005" sha1="9682a984040775db8f96428a74ae7dc124f993a7" offset="00000" />
3075130751         </dataarea>
3075230752         <dataarea name="chr" size="131072">
30753            <rom name="nes-7a-0 chr" size="131072" crc="487aa440" sha1="ee7ebbcf89c81ba59beda1bd27289dae21bb8071" offset="00000" />
30753            <rom name="pal-7a-0 chr" size="131072" crc="18a98868" sha1="4be832329cd0d392496aaf641c0b548d7e53aa30" offset="00000" />
3075430754         </dataarea>
3075530755      </part>
3075630756   </software>
3075730757
30758   <software name="rockinkt">
30759      <description>Rockin' Kats (Euro)</description>
30760      <year>1992</year>
30758   <software name="rockinktu" cloneof="rockinkt">
30759      <description>Rockin' Kats (USA)</description>
30760      <year>1991</year>
3076130761      <publisher>Atlus</publisher>
30762      <info name="serial" value="NES-7A (SCN/ESP)"/>
30763      <info name="release" value="19921119"/>
30762      <info name="serial" value="NES-7A-USA"/>
30763      <info name="release" value="199109xx"/>
3076430764      <part name="cart" interface="nes_cart">
3076530765         <feature name="slot" value="txrom" />
3076630766         <feature name="pcb" value="NES-TLROM" />
30767         <feature name="mmc3_type" value="MMC3C" />
30767         <feature name="mmc3_type" value="MMC3B" />
3076830768         <dataarea name="prg" size="131072">
30769            <rom name="pal-7a-0 prg" size="131072" crc="0e431005" sha1="9682a984040775db8f96428a74ae7dc124f993a7" offset="00000" />
30769            <rom name="nes-7a-0 prg" size="131072" crc="319ccfcc" sha1="06e1c34af917b84a990db895c7b44df1b3393c96" offset="00000" />
3077030770         </dataarea>
3077130771         <dataarea name="chr" size="131072">
30772            <rom name="pal-7a-0 chr" size="131072" crc="18a98868" sha1="4be832329cd0d392496aaf641c0b548d7e53aa30" offset="00000" />
30772            <rom name="nes-7a-0 chr" size="131072" crc="487aa440" sha1="ee7ebbcf89c81ba59beda1bd27289dae21bb8071" offset="00000" />
3077330773         </dataarea>
3077430774      </part>
3077530775   </software>
r245577r245578
4851948519      </part>
4852048520   </software>
4852148521
48522   <software name="rockinktup" cloneof="rockinkt">
48523      <description>Rockin' Kats (USA, Prototype)</description>
48524      <year>1991</year>
48525      <publisher>Atlus</publisher>
48526      <part name="cart" interface="nes_cart">
48527         <feature name="slot" value="txrom" />
48528         <feature name="pcb" value="NES-TLROM" />
48529         <dataarea name="chr" size="131072">
48530            <rom name="rockin' kats prototype.chr" size="131072" crc="a28ef6f8" sha1="307dbc9fc9b101e6eb88df31543a75cd36f185b7" offset="00000" status="baddump" />
48531         </dataarea>
48532         <dataarea name="prg" size="131072">
48533            <rom name="rockin' kats prototype.prg" size="131072" crc="319ccfcc" sha1="06e1c34af917b84a990db895c7b44df1b3393c96" offset="00000" />
48534         </dataarea>
48535      </part>
48536   </software>
48537
4852248538   <software name="rodlandj" cloneof="rodland">
4852348539      <description>Rod Land (Jpn)</description>
4852448540      <year>1992</year>
r245577r245578
7120171217      </part>
7120271218   </software>
7120371219
71220   <software name="lordkinga" cloneof="astyanax">
71221      <description>The Lord of King (Asia, Pirate)</description>
71222      <year>19??</year>
71223      <publisher>&lt;pirate&gt;</publisher>
71224      <part name="cart" interface="nes_cart">
71225         <feature name="slot" value="btl_900218" />
71226         <feature name="pcb" value="BTL-900218" />
71227         <dataarea name="chr" size="131072">
71228            <rom name="lord of king, the (j)[p2].chr" size="131072" crc="7a2dcf20" sha1="120e203c4f52e63b0af7824d6b894911a6d7a0a1" offset="00000" />
71229         </dataarea>
71230         <dataarea name="prg" size="131072">
71231            <rom name="lord of king, the (j)[p2].prg" size="131072" crc="6862b87f" sha1="ceb6fff70556b2108816ab60f8f9ef2a6ac17aef" offset="00000" status="baddump" />
71232         </dataarea>
71233      </part>
71234   </software>
71235
7120471236   <software name="mcmario" cloneof="mckids">
7120571237      <description>M.C. Mario (M.C. Kids pirate)</description>
7120671238      <year>19??</year>
trunk/hash/snes.xml
r245577r245578
3282632826      <!-- single cartridge source: d4s -->
3282732827      <description>Parame ROM Cassette 4 Gō - Super X-T Sasuke Senyō (Jpn)</description>
3282832828      <year>199?</year>
32829      <publisher>GAMETECH Co. Ltd. (unlicensed)</publisher>
32829      <publisher>Gametech</publisher>
3283032830      <info name="alt_title" value="恱悉悁ROMć‚«ć‚»ćƒƒćƒˆ4号 SUPER X-Tサスケ専用" />
3283132831      <part name="cart" interface="snes_cart">
3283232832         <feature name="pcb" value="890409C" /> <!-- custom board, three epoxy chips -->
r245577r245578
3284132841      <!-- single cartridge source: d4s -->
3284232842      <description>Parame ROM Cassette 5 Gō - Super X-T Sasuke Senyō (Jpn)</description>
3284332843      <year>199?</year>
32844      <publisher>GAMETECH Co. Ltd. (unlicensed)</publisher>
32844      <publisher>Gametech</publisher>
3284532845      <info name="alt_title" value="恱悉悁ROMć‚«ć‚»ćƒƒćƒˆ5号 SUPER X-Tサスケ専用" />
3284632846      <part name="cart" interface="snes_cart">
3284732847         <feature name="slot" value="lorom" />
r245577r245578
3542435424      </part>
3542535425   </software>
3542635426
35427   <software name="bountyswp" cloneof="bountysw">
35428      <description>Bounty Sword (Jpn, Prototype 19950516)</description>
35429      <year>1995</year>
35430      <publisher>Pioneer</publisher>
35431      <part name="cart" interface="snes_cart">
35432         <feature name="slot" value="hirom" />
35433         <dataarea name="rom" size="3145728">
35434            <rom name="bounty sword (japan) (sample).sfc" size="3145728" crc="247680b9" sha1="180e754cf2e8341c964d667c9247dc4dbc98c090" offset="0x000000" />
35435         </dataarea>
35436         <dataarea name="nvram" size="8192">
35437         </dataarea>
35438      </part>
35439   </software>
35440
3542735441   <software name="boxinglg">
3542835442      <description>Boxing Legends of the Ring (Euro)</description>
3542935443      <year>1993</year>
r245577r245578
5008550099   <software name="paramev1">
5008650100      <description>Parame ROM Cassette Vol. 1 (Jpn)</description>
5008750101      <year>199?</year>
50088      <publisher>GAMETECH (unlicensed)</publisher>
50102      <publisher>Gametech</publisher>
5008950103      <info name="alt_title" value="恱悉悁ROMć‚«ć‚»ćƒƒćƒˆ VOL. 1" />
5009050104      <part name="cart" interface="snes_cart">
5009150105         <feature name="slot" value="lorom" />
r245577r245578
5009850112   <software name="paramev2">
5009950113      <description>Parame ROM Cassette 2 Gō (Jpn)</description>
5010050114      <year>199?</year>
50101      <publisher>GAMETECH Co. Ltd. (unlicensed)</publisher>
50115      <publisher>Gametech</publisher>
5010250116      <info name="alt_title" value="恱悉悁ROMć‚«ć‚»ćƒƒćƒˆ2号" />
5010350117      <part name="cart" interface="snes_cart">
5010450118         <feature name="slot" value="lorom" />
r245577r245578
5011150125   <software name="paramev3">
5011250126      <description>Parame ROM Cassette 3 Gō (Jpn)</description>
5011350127      <year>199?</year>
50114      <publisher>GAMETECH Co. Ltd. (unlicensed)</publisher>
50128      <publisher>Gametech</publisher>
5011550129      <info name="alt_title" value="恱悉悁ROMć‚«ć‚»ćƒƒćƒˆ3号" />
5011650130      <part name="cart" interface="snes_cart">
5011750131         <feature name="slot" value="lorom" />
trunk/makefile
r245577r245578
1515#################   BEGIN USER-CONFIGURABLE OPTIONS   #####################
1616###########################################################################
1717
18# REGENIE = 1
19# VERBOSE = 1
20# NOWERROR = 1
21
22# TARGET = mame
23# SUBTARGET = tiny
24# TOOLS = 1
25# OSD = sdl
26
27# USE_BGFX = 1
28# NO_OPENGL = 1
29# USE_DISPATCH_GL = 0
30# DIRECTINPUT = 7
31# USE_SDL = 1
32# SDL2_MULTIAPI = 1
33# NO_USE_MIDI = 1
34# DONT_USE_NETWORK = 1
35# USE_QTDEBUG = 1
36# NO_X11 = 1
37# NO_USE_XINPUT = 0
38# FORCE_DRC_C_BACKEND = 1
39
40# DEBUG = 1
41# PROFILER = 1
42# SANITIZE = 1
43
44# PTR64 = 1
45# BIGENDIAN = 1
46# NOASM = 1
47
48# OPTIMIZE = 3
49# SYMBOLS = 1
50# SYMLEVEL = 2
51# MAP = 1
52# PROFILE = 1
53# ARCHOPTS =
54# LDOPTS =
55
56# MESA_INSTALL_ROOT = /opt/mesa
57# SDL_INSTALL_ROOT = /opt/sdl2
58# SDL_FRAMEWORK_PATH = $(HOME)/Library/Frameworks
59# SDL_LIBVER = sdl
60# MACOSX_USE_LIBSDL = 1
61# CYGWIN_BUILD = 1
62
63# TARGETOS = windows
64# CROSS_BUILD = 1
65# OVERRIDE_CC = cc
66# OVERRIDE_CXX = c++
67# OVERRIDE_LD = ld
68
69
70###########################################################################
71##################   END USER-CONFIGURABLE OPTIONS   ######################
72###########################################################################
73
74MAKEPARAMS := -R
75
1876#
1977# Determine running OS
2078#
r245577r245578
46104ifeq ($(firstword $(filter Darwin,$(UNAME))),Darwin)
47105OS := macosx
48106GENIEOS := darwin
49DARWIN_VERSION := $(shell sw_vers -productVersion)
50107endif
51108ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku)
52109OS := haiku
r245577r245578
76133CONFIG := debug
77134endif
78135
79ifndef VERBOSE
80  SILENT := @
136ifdef VERBOSE
137MAKEPARAMS += verbose=1
138else
139SILENT := @
140MAKEPARAMS += --no-print-directory
81141endif
82142
83143#-------------------------------------------------
r245577r245578
138198endif
139199endif
140200
201# Autodetect BIGENDIAN
202# MacOSX
203ifndef BIGENDIAN
204ifneq (,$(findstring Power,$(UNAME)))
205BIGENDIAN := 1
206endif
207# Linux
208ifneq (,$(findstring ppc,$(UNAME)))
209BIGENDIAN := 1
210endif
211endif # BIGENDIAN
141212
213
142214PYTHON := $(SILENT)python
143215CC := $(SILENT)gcc
144216LD := $(SILENT)g++
r245577r245578
249321endif
250322
251323ifdef SYMBOLS
252PARAMS += --SYMBOLS=$(SYMBOLS)
324PARAMS += --SYMBOLS='$(SYMBOLS)'
253325endif
254326
255327ifdef SYMLEVEL
256PARAMS += --SYMLEVEL=$(SYMLEVEL)
328PARAMS += --SYMLEVEL='$(SYMLEVEL)'
257329endif
258330
259331ifdef PROFILER
260PARAMS += --PROFILER=$(PROFILER)
332PARAMS += --PROFILER='$(PROFILER)'
261333endif
262334
263335ifdef PROFILE
264PARAMS += --PROFILE=$(PROFILE)
336PARAMS += --PROFILE='$(PROFILE)'
265337endif
266338
267339ifdef OPTIMIZE
r245577r245578
284356PARAMS += --NOASM='$(NOASM)'
285357endif
286358
359ifdef BIGENDIAN
360PARAMS += --BIGENDIAN='$(BIGENDIAN)'
361endif
362
287363ifdef FORCE_DRC_C_BACKEND
288364PARAMS += --FORCE_DRC_C_BACKEND='$(FORCE_DRC_C_BACKEND)'
289365endif
290366
291367ifdef NOWERROR
292PARAMS += --NOWERROR=$(NOWERROR)
368PARAMS += --NOWERROR='$(NOWERROR)'
293369endif
294370
295371ifdef TARGET
296PARAMS += --target=$(TARGET)
372PARAMS += --target='$(TARGET)'
297373endif
298374
299375ifdef SUBTARGET
300PARAMS += --subtarget=$(SUBTARGET)
376PARAMS += --subtarget='$(SUBTARGET)'
301377endif
302378
303379ifdef OSD
304PARAMS += --osd=$(OSD)
380PARAMS += --osd='$(OSD)'
305381endif
306382
307383ifdef TARGETOS
308PARAMS += --targetos=$(TARGETOS)
384PARAMS += --targetos='$(TARGETOS)'
309385endif
310386
311387ifdef DONT_USE_NETWORK
r245577r245578
332408PARAMS += --DIRECTINPUT='$(DIRECTINPUT)'
333409endif
334410
411ifdef USE_SDL
412PARAMS += --USE_SDL='$(USE_SDL)'
413endif
414
415ifdef CYGWIN_BUILD
416PARAMS += --CYGWIN_BUILD='$(CYGWIN_BUILD)'
417endif
418
335419ifdef MESA_INSTALL_ROOT
336420PARAMS += --MESA_INSTALL_ROOT='$(MESA_INSTALL_ROOT)'
337421endif
r245577r245578
380464   scripts/src/main.lua \
381465   scripts/src/3rdparty.lua \
382466   scripts/src/cpu.lua \
467   scripts/src/osd/modules.lua \
383468   $(wildcard scripts/src/osd/$(OSD)*.lua) \
384469   scripts/src/sound.lua \
385470   scripts/src/tools.lua \
r245577r245578
387472   scripts/src/bus.lua \
388473   scripts/src/netlist.lua \
389474   scripts/toolchain.lua \
475   scripts/src/osd/modules.lua \
390476   scripts/target/$(TARGET)/$(SUBTARGET).lua \
391477   $(wildcard src/osd/$(OSD)/$(OSD).mak) \
392478   $(wildcard src/$(TARGET)/$(SUBTARGET).mak)
r245577r245578
483569
484570.PHONY: windows_x64
485571windows_x64: generate $(PROJECTDIR)/gmake-mingw64-gcc/Makefile
486   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-mingw64-gcc config=$(CONFIG)64 WINDRES=$(WINDRES)
572   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw64-gcc config=$(CONFIG)64 WINDRES=$(WINDRES)
487573
488574#-------------------------------------------------
489575# gmake-mingw32-gcc
r245577r245578
500586
501587.PHONY: windows_x86
502588windows_x86: generate $(PROJECTDIR)/gmake-mingw32-gcc/Makefile
503   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-mingw32-gcc config=$(CONFIG)32 WINDRES=$(WINDRES)
589   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw32-gcc config=$(CONFIG)32 WINDRES=$(WINDRES)
504590
505591#-------------------------------------------------
506592# gmake-mingw-clang
r245577r245578
514600
515601.PHONY: windows_x64_clang
516602windows_x64_clang: generate $(PROJECTDIR)/gmake-mingw-clang/Makefile
517   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)64 WINDRES=$(WINDRES)
603   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)64 WINDRES=$(WINDRES)
518604   
519605.PHONY: windows_x86_clang
520606windows_x86_clang: generate $(PROJECTDIR)/gmake-mingw-clang/Makefile
521   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)32 WINDRES=$(WINDRES)
607   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)32 WINDRES=$(WINDRES)
522608
523609vs2010: generate
524610   $(SILENT) $(GENIE) $(PARAMS) vs2010
r245577r245578
554640ifndef COMPILE
555641   $(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm --gcc_version=4.8 gmake
556642endif
557   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-android-arm config=$(CONFIG)
643   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-arm config=$(CONFIG)
558644
559645android-mips: generate
560646ifndef ANDROID_NDK_MIPS
r245577r245578
566652ifndef COMPILE
567653   $(SILENT) $(GENIE) $(PARAMS) --gcc=android-mips --gcc_version=4.8 gmake
568654endif
569   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-android-mips config=$(CONFIG)
655   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-mips config=$(CONFIG)
570656
571657android-x86: generate
572658ifndef ANDROID_NDK_X86
r245577r245578
578664ifndef COMPILE
579665   $(SILENT) $(GENIE) $(PARAMS) --gcc=android-x86 --gcc_version=4.8 gmake
580666endif
581   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-android-x86 config=$(CONFIG)
667   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-x86 config=$(CONFIG)
582668
583669asmjs: generate
584670ifndef EMSCRIPTEN
r245577r245578
587673ifndef COMPILE
588674   $(SILENT) $(GENIE) $(PARAMS) --gcc=asmjs --gcc_version=4.8 gmake
589675endif
590   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-asmjs config=$(CONFIG)
676   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-asmjs config=$(CONFIG)
591677
592678
593679nacl: nacl_x86
r245577r245578
599685ifndef COMPILE
600686   $(SILENT) $(GENIE) $(PARAMS) --gcc=nacl --gcc_version=4.8 gmake
601687endif
602   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)64
688   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)64
603689
604690nacl_x86: generate
605691ifndef NACL_SDK_ROOT
r245577r245578
608694ifndef COMPILE
609695   $(SILENT) $(GENIE) $(PARAMS) --gcc=nacl --gcc_version=4.8 gmake
610696endif
611   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)32
697   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)32
612698
613699nacl-arm: generate
614700ifndef NACL_SDK_ROOT
r245577r245578
617703ifndef COMPILE
618704   $(SILENT) $(GENIE) $(PARAMS) --gcc=nacl-arm --gcc_version=4.8 gmake
619705endif
620   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-nacl-arm config=$(CONFIG)
706   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl-arm config=$(CONFIG)
621707
622708pnacl: generate
623709ifndef NACL_SDK_ROOT
r245577r245578
626712ifndef COMPILE
627713   $(SILENT) $(GENIE) $(PARAMS) --gcc=pnacl --gcc_version=4.8 gmake
628714endif
629   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-pnacl config=$(CONFIG)
715   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-pnacl config=$(CONFIG)
630716
631717#-------------------------------------------------
632718# gmake-linux
r245577r245578
637723
638724.PHONY: linux_x64
639725linux_x64: generate $(PROJECTDIR)/gmake-linux/Makefile
640   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)64
726   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)64
641727
642728.PHONY: linux
643729linux: linux_x86
644730
645731.PHONY: linux_x86
646732linux_x86: generate $(PROJECTDIR)/gmake-linux/Makefile
647   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)32
733   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)32
648734
649735#-------------------------------------------------
650736# gmake-linux-clang
r245577r245578
655741
656742.PHONY: linux_x64_clang
657743linux_x64_clang: generate $(PROJECTDIR)/gmake-linux-clang/Makefile
658   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)64
744   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)64
659745
660746.PHONY: linux_x86_clang
661747linux_x86_clang: generate $(PROJECTDIR)/gmake-linux-clang/Makefile
662   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)32
748   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)32
663749
664750#-------------------------------------------------
665751# gmake-osx
666752#-------------------------------------------------
667753
668754$(PROJECTDIR)/gmake-osx/Makefile: makefile $(SCRIPTS) $(GENIE)
669   $(SILENT) $(GENIE) $(PARAMS) --gcc=osx --os_version=$(DARWIN_VERSION) --gcc_version=$(GCC_VERSION) gmake
755   $(SILENT) $(GENIE) $(PARAMS) --gcc=osx --gcc_version=$(GCC_VERSION) gmake
670756
671757.PHONY: macosx_x64
672758macosx_x64: generate $(PROJECTDIR)/gmake-osx/Makefile
673   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)64
759   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)64
674760
675761.PHONY: macosx
676762macosx: macosx_x86
677763
678764.PHONY: macosx_x86
679765macosx_x86: generate $(PROJECTDIR)/gmake-osx/Makefile
680   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)32
766   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)32
681767
682768#-------------------------------------------------
683769# gmake-osx-clang
684770#-------------------------------------------------
685771
686772$(PROJECTDIR)/gmake-osx-clang/Makefile: makefile $(SCRIPTS) $(GENIE)
687   $(SILENT) $(GENIE) $(PARAMS) --gcc=osx-clang --os_version=$(DARWIN_VERSION) --gcc_version=$(CLANG_VERSION) gmake
773   $(SILENT) $(GENIE) $(PARAMS) --gcc=osx-clang --gcc_version=$(CLANG_VERSION) gmake
688774
689775.PHONY: macosx_x64_clang
690776macosx_x64_clang: generate $(PROJECTDIR)/gmake-osx-clang/Makefile
691   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)64
777   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)64
692778
693779.PHONY: macosx_x86_clang
694780macosx_x86_clang: generate $(PROJECTDIR)/gmake-osx-clang/Makefile
695   $(SILENT) $(MAKE) --no-print-directory -R -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)32
781   $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)32
696782
783xcode4: generate
784   $(SILENT) $(GENIE) $(PARAMS) --targetos=macosx --xcode=osx xcode4
785
786xcode4-ios: generate
787   $(SILENT) $(GENIE) $(PARAMS) --targetos=macosx --xcode=ios xcode4
788
789
697790#-------------------------------------------------
698791# Clean/bootstrap
699792#-------------------------------------------------
700793
701$(GENIE):
702   $(SILENT) $(MAKE) --no-print-directory -R -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make
794GENIE_SRC=$(wildcard 3rdparty/genie/src/host/*.c)
703795
796$(GENIE): $(GENIE_SRC)
797   $(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make
798
7993rdparty/genie/src/hosts/%.c:
800
704801clean:
705802   @echo Cleaning...
706803   -@rm -rf build
707   $(SILENT) $(MAKE) --no-print-directory -R -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make clean
804   $(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make clean
708805
709GEN_FOLDERS :=  \
710   $(GENDIR) \
711   $(GENDIR)/$(TARGET)/$(SUBTARGET) \
712   $(GENDIR)/emu/layout/ \
713   $(GENDIR)/$(TARGET)/layout/ \
714   $(GENDIR)/mess/drivers/ \
715   $(GENDIR)/emu/cpu/arcompact/ \
716   $(GENDIR)/emu/cpu/h8/ \
717   $(GENDIR)/emu/cpu/mcs96/ \
718   $(GENDIR)/emu/cpu/m6502/ \
719   $(GENDIR)/emu/cpu/m6809/ \
720   $(GENDIR)/emu/cpu/m68000/ \
721   $(GENDIR)/emu/cpu/tms57002/ \
722   $(GENDIR)/osd/modules/debugger/qt/ \
723   $(GENDIR)/resource/
806GEN_FOLDERS := $(GENDIR)/$(TARGET)/layout/
724807
725LAYOUTS=$(wildcard $(SRC)/emu/layout/*.lay) $(wildcard $(SRC)/$(TARGET)/layout/*.lay)
808LAYOUTS=$(wildcard $(SRC)/$(TARGET)/layout/*.lay)
726809
727MOC_FILES=$(wildcard $(SRC)/osd/modules/debugger/qt/*.h)
728ifneq ($(USE_QTDEBUG),1)
729ifeq ($(TARGETOS),macosx)
730MOC_FILES=
731endif
732ifeq ($(TARGETOS),solaris)
733MOC_FILES=
734endif
735ifeq ($(TARGETOS),haiku)
736MOC_FILES=
737endif
738ifeq ($(TARGETOS),emscripten)
739MOC_FILES=
740endif
741ifeq ($(TARGETOS),os2)
742MOC_FILES=
743endif
744endif
745
746ifeq ($(OS),windows)
747MOC = moc
748else
749MOCTST = $(shell which moc-qt4 2>/dev/null)
750ifeq '$(MOCTST)' ''
751MOCTST = $(shell which moc 2>/dev/null)
752ifeq '$(MOCTST)' ''
753ifneq '$(MOC_FILES)' ''
754$(error Qt's Meta Object Compiler (moc) wasn't found!)
755endif
756else
757MOC = $(MOCTST)
758endif
759else
760MOC = $(MOCTST)
761endif
762endif
763
764
765810ifneq (,$(wildcard src/osd/$(OSD)/$(OSD).mak))
766811include src/osd/$(OSD)/$(OSD).mak
767812endif
r245577r245578
776821generate: \
777822      $(GENIE) \
778823      $(GEN_FOLDERS) \
779      $(patsubst $(SRC)/%.lay,$(GENDIR)/%.lh,$(LAYOUTS)) \
780      $(patsubst $(SRC)/%.h,$(GENDIR)/%.moc.c,$(MOC_FILES)) \
781      $(GENDIR)/emu/uismall.fh \
782      $(GENDIR)/resource/$(TARGET)vers.rc \
783      $(GENDIR)/resource/$(TARGET)-Info.plist \
784      $(GENDIR)/$(TARGET)/$(SUBTARGET)/drivlist.c \
785      $(GENDIR)/mess/drivers/ymmu100.inc \
786      $(GENDIR)/emu/cpu/arcompact/arcompact.inc \
787      $(GENDIR)/emu/cpu/h8/h8.inc $(GENDIR)/emu/cpu/h8/h8h.inc $(GENDIR)/emu/cpu/h8/h8s2000.inc $(GENDIR)/emu/cpu/h8/h8s2600.inc \
788      $(GENDIR)/emu/cpu/mcs96/mcs96.inc $(GENDIR)/emu/cpu/mcs96/i8x9x.inc $(GENDIR)/emu/cpu/mcs96/i8xc196.inc \
789      $(GENDIR)/emu/cpu/m6502/deco16.inc $(GENDIR)/emu/cpu/m6502/m4510.inc $(GENDIR)/emu/cpu/m6502/m6502.inc $(GENDIR)/emu/cpu/m6502/m65c02.inc $(GENDIR)/emu/cpu/m6502/m65ce02.inc $(GENDIR)/emu/cpu/m6502/m6509.inc $(GENDIR)/emu/cpu/m6502/m6510.inc $(GENDIR)/emu/cpu/m6502/n2a03.inc $(GENDIR)/emu/cpu/m6502/r65c02.inc $(GENDIR)/emu/cpu/m6502/m740.inc \
790      $(GENDIR)/emu/cpu/m6809/m6809.inc $(GENDIR)/emu/cpu/m6809/hd6309.inc $(GENDIR)/emu/cpu/m6809/konami.inc \
791      $(GENDIR)/emu/cpu/tms57002/tms57002.inc \
792      $(GENDIR)/m68kmake$(EXE) $(GENDIR)/emu/cpu/m68000/m68kops.c
824      $(patsubst $(SRC)/%.lay,$(GENDIR)/%.lh,$(LAYOUTS))
793825
794826$(GENDIR)/%.lh: $(SRC)/%.lay $(SRC)/build/file2str.py
795827   @echo Converting $<...
796828   $(PYTHON) $(SRC)/build/file2str.py $< $@ layout_$(basename $(notdir $<))
797829
798$(GENDIR)/%.fh: $(SRC)/%.png $(SRC)/build/png2bdc.py $(SRC)/build/file2str.py
799   @echo Converting $<...
800   $(PYTHON) $(SRC)/build/png2bdc.py $< $(GENDIR)/temp.bdc
801   $(PYTHON) $(SRC)/build/file2str.py $(GENDIR)/temp.bdc $@ font_$(basename $(notdir $<)) UINT8
802
803$(GENDIR)/resource/$(TARGET)vers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c
804   @echo Emitting $@...
805   $(PYTHON) $(SRC)/build/verinfo.py -r -b $(TARGET) $(SRC)/version.c > $@
806
807$(GENDIR)/resource/$(TARGET)-Info.plist: $(SRC)/build/verinfo.py $(SRC)/version.c
808   @echo Emitting $@...
809   $(PYTHON) $(SRC)/build/verinfo.py -p -b $(TARGET) $(SRC)/version.c > $@
810
811$(GENDIR)/$(TARGET)/$(SUBTARGET)/drivlist.c: $(SRC)/$(TARGET)/$(SUBTARGET).lst $(SRC)/build/makelist.py
812   @echo Building driver list $<...
813   $(PYTHON) $(SRC)/build/makelist.py $< >$@
814
815# rule to generate the C files
816$(GENDIR)/emu/cpu/arcompact/arcompact.inc: $(SRC)/emu/cpu/arcompact/arcompact_make.py
817   @echo Generating arcompact source .inc files...
818   $(PYTHON) $(SRC)/emu/cpu/arcompact/arcompact_make.py $@
819
820$(GENDIR)/emu/cpu/h8/h8.inc: $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst
821   @echo Generating H8-300 source file...
822   $(PYTHON) $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst o $@
823
824$(GENDIR)/emu/cpu/h8/h8h.inc: $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst
825   @echo Generating H8-300H source file...
826   $(PYTHON) $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst h $@
827
828$(GENDIR)/emu/cpu/h8/h8s2000.inc: $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst
829   @echo Generating H8S/2000 source file...
830   $(PYTHON) $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst s20 $@
831
832$(GENDIR)/emu/cpu/h8/h8s2600.inc: $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst
833   @echo Generating H8S/2600 source file...
834   $(PYTHON) $(SRC)/emu/cpu/h8/h8make.py $(SRC)/emu/cpu/h8/h8.lst s26 $@
835
836$(GENDIR)/emu/cpu/mcs96/mcs96.inc:   $(SRC)/emu/cpu/mcs96/mcs96make.py $(SRC)/emu/cpu/mcs96/mcs96ops.lst
837   @echo Generating mcs96 source file...
838   $(PYTHON) $(SRC)/emu/cpu/mcs96/mcs96make.py mcs96 $(SRC)/emu/cpu/mcs96/mcs96ops.lst $@
839
840$(GENDIR)/emu/cpu/mcs96/i8x9x.inc:   $(SRC)/emu/cpu/mcs96/mcs96make.py $(SRC)/emu/cpu/mcs96/mcs96ops.lst
841   @echo Generating i8x9x source file...
842   $(PYTHON) $(SRC)/emu/cpu/mcs96/mcs96make.py i8x9x $(SRC)/emu/cpu/mcs96/mcs96ops.lst $@
843
844$(GENDIR)/emu/cpu/mcs96/i8xc196.inc: $(SRC)/emu/cpu/mcs96/mcs96make.py $(SRC)/emu/cpu/mcs96/mcs96ops.lst
845   @echo Generating i8xc196 source file...
846   $(PYTHON) $(SRC)/emu/cpu/mcs96/mcs96make.py i8xc196 $(SRC)/emu/cpu/mcs96/mcs96ops.lst $@
847
848$(GENDIR)/emu/cpu/m6502/deco16.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/odeco16.lst $(SRC)/emu/cpu/m6502/ddeco16.lst
849   @echo Generating deco16 source file...
850   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py deco16_device $(SRC)/emu/cpu/m6502/odeco16.lst $(SRC)/emu/cpu/m6502/ddeco16.lst $@
851
852$(GENDIR)/emu/cpu/m6502/m4510.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om4510.lst $(SRC)/emu/cpu/m6502/dm4510.lst
853   @echo Generating m4510 source file...
854   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m4510_device $(SRC)/emu/cpu/m6502/om4510.lst $(SRC)/emu/cpu/m6502/dm4510.lst $@
855
856$(GENDIR)/emu/cpu/m6502/m6502.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om6502.lst $(SRC)/emu/cpu/m6502/dm6502.lst
857   @echo Generating m6502 source file...
858   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m6502_device $(SRC)/emu/cpu/m6502/om6502.lst $(SRC)/emu/cpu/m6502/dm6502.lst $@
859
860$(GENDIR)/emu/cpu/m6502/m65c02.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om65c02.lst $(SRC)/emu/cpu/m6502/dm65c02.lst
861   @echo Generating m65c02 source file...
862   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m65c02_device $(SRC)/emu/cpu/m6502/om65c02.lst $(SRC)/emu/cpu/m6502/dm65c02.lst $@
863
864$(GENDIR)/emu/cpu/m6502/m65ce02.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om65ce02.lst $(SRC)/emu/cpu/m6502/dm65ce02.lst
865   @echo Generating m65ce02 source file...
866   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m65ce02_device $(SRC)/emu/cpu/m6502/om65ce02.lst $(SRC)/emu/cpu/m6502/dm65ce02.lst $@
867
868$(GENDIR)/emu/cpu/m6502/m6509.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om6509.lst $(SRC)/emu/cpu/m6502/dm6509.lst
869   @echo Generating m6509 source file...
870   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m6509_device $(SRC)/emu/cpu/m6502/om6509.lst $(SRC)/emu/cpu/m6502/dm6509.lst $@
871
872$(GENDIR)/emu/cpu/m6502/m6510.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om6510.lst $(SRC)/emu/cpu/m6502/dm6510.lst
873   @echo Generating m6510 source file...
874   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m6510_device $(SRC)/emu/cpu/m6502/om6510.lst $(SRC)/emu/cpu/m6502/dm6510.lst $@
875
876$(GENDIR)/emu/cpu/m6502/n2a03.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/on2a03.lst $(SRC)/emu/cpu/m6502/dn2a03.lst
877   @echo Generating n2a03 source file...
878   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py n2a03_device $(SRC)/emu/cpu/m6502/on2a03.lst $(SRC)/emu/cpu/m6502/dn2a03.lst $@
879
880$(GENDIR)/emu/cpu/m6502/r65c02.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/dr65c02.lst
881   @echo Generating r65c02 source file...
882   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py r65c02_device - $(SRC)/emu/cpu/m6502/dr65c02.lst $@
883
884$(GENDIR)/emu/cpu/m6502/m740.inc: $(SRC)/emu/cpu/m6502/m6502make.py $(SRC)/emu/cpu/m6502/om740.lst $(SRC)/emu/cpu/m6502/dm740.lst
885   @echo Generating m740 source file...
886   $(PYTHON) $(SRC)/emu/cpu/m6502/m6502make.py m740_device $(SRC)/emu/cpu/m6502/om740.lst $(SRC)/emu/cpu/m6502/dm740.lst $@
887
888$(GENDIR)/emu/cpu/m6809/m6809.inc:  $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/m6809.ops $(SRC)/emu/cpu/m6809/base6x09.ops
889   @echo Generating m6809 source file...
890   $(PYTHON) $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/m6809.ops > $@
891
892$(GENDIR)/emu/cpu/m6809/hd6309.inc: $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/hd6309.ops $(SRC)/emu/cpu/m6809/base6x09.ops
893   @echo Generating hd6309 source file...
894   $(PYTHON) $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/hd6309.ops > $@
895
896$(GENDIR)/emu/cpu/m6809/konami.inc: $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/konami.ops $(SRC)/emu/cpu/m6809/base6x09.ops
897   @echo Generating konami source file...
898   $(PYTHON) $(SRC)/emu/cpu/m6809/m6809make.py $(SRC)/emu/cpu/m6809/konami.ops > $@
899
900$(GENDIR)/emu/cpu/tms57002/tms57002.inc: $(SRC)/emu/cpu/tms57002/tmsmake.py $(SRC)/emu/cpu/tms57002/tmsinstr.lst
901   @echo Generating TMS57002 source file...
902   $(PYTHON) $(SRC)/emu/cpu/tms57002/tmsmake.py $(SRC)/emu/cpu/tms57002/tmsinstr.lst $@
903
904$(GENDIR)/m68kmake.o: src/emu/cpu/m68000/m68kmake.c
905   @echo $(notdir $<)
906   $(SILENT) $(CC) -x c++ -std=gnu++98 -o "$@" -c "$<"
907
908$(GENDIR)/m68kmake$(EXE) : $(GENDIR)/m68kmake.o
909   @echo Linking $@...
910   $(LD) -lstdc++ $^ -o $@
911
912$(GENDIR)/emu/cpu/m68000/m68kops.c: $(GENDIR)/m68kmake$(EXE) $(SRC)/emu/cpu/m68000/m68k_in.c
913   @echo Generating M68K source files...
914   $(SILENT) $(GENDIR)/m68kmake $(GENDIR)/emu/cpu/m68000 $(SRC)/emu/cpu/m68000/m68k_in.c
915
916$(GENDIR)/mess/drivers/ymmu100.inc: $(SRC)/mess/drivers/ymmu100.ppm $(SRC)/build/file2str.py
917   @echo Converting $<...
918   @$(PYTHON) $(SRC)/build/file2str.py $(SRC)/mess/drivers/ymmu100.ppm $@ ymmu100_bkg UINT8
919
920$(GENDIR)/%.moc.c: $(SRC)/%.h
921   $(SILENT) $(MOC) $(MOCINCPATH) $< -o $@
922   
trunk/scripts/genie.lua
r245577r245578
11premake.check_paths = true
2premake.make.linkoptions_after = true
23premake.make.override = { "TARGET" }
34MAME_DIR = (path.getabsolute("..") .. "/")
45local MAME_BUILD_DIR = (MAME_DIR .. "build/")
56local naclToolchain = ""
67
78
8function str_to_version (str)
9function backtick(cmd)
10   result = string.gsub(string.gsub(os.outputof(cmd), "\r?\n$", ""), " $", "")
11   return result
12end
13
14function str_to_version(str)
915   local val = 0
1016   if (str == nil or str == '') then
1117      return val
r245577r245578
3440  end
3541end
3642
37function includeosd()
38   includedirs {
39      MAME_DIR .. "src/osd",
40   }
43function layoutbuildtask(_folder, _name)
44   return { MAME_DIR .. "src/".._folder.."/".. _name ..".lay" ,    GEN_DIR .. _folder .. "/".._name..".lh",    {  MAME_DIR .. "src/build/file2str.py" }, {"@echo Converting src/".._folder.."/".._name..".lay...",    "python $(1) $(<) $(@) layout_".._name }};
4145end
4246
43
4447CPUS = {}
4548SOUNDS  = {}
4649MACHINES  = {}
r245577r245578
5457
5558newoption {
5659   trigger = "osd",
57   description = "Choose target OSD",
60   description = "Choose OSD layer implementation",
5861}
5962
6063newoption {
r245577r245578
6669      { "android-x86",   "Android - x86"          },
6770      { "asmjs",         "Emscripten/asm.js"      },
6871      { "freebsd",       "FreeBSD"                },
72      { "netbsd",        "NetBSD"                 },
73      { "openbsd",       "OpenBSD"                },
6974      { "nacl",          "Native Client"          },
7075      { "nacl-arm",      "Native Client - ARM"    },
7176      { "pnacl",         "Native Client - PNaCl"  },
72      { "linux",           "Linux"               },
73      { "ios",           "iOS"                    },
77      { "linux",           "Linux"                  },
78      { "ios",           "iOS"                    },
7479      { "macosx",        "OSX"                    },
7580      { "windows",       "Windows"                },
76
81      { "os2",           "OS/2 eComStation"       },
82      { "haiku",         "Haiku"                  },
7783   },
7884}
7985
r245577r245578
103109}
104110
105111newoption {
106   trigger = "os_version",
107   description = "OS version",
108   value = "",
109}
110
111newoption {
112112   trigger = "CC",
113113   description = "CC replacement",
114114}
r245577r245578
126126newoption {
127127   trigger = "PROFILE",
128128   description = "Enable profiling.",
129}
129}
130130
131131newoption {
132132   trigger = "SYMBOLS",
133133   description = "Enable symbols.",
134}
134}
135135
136136newoption {
137137   trigger = "SYMLEVEL",
138138   description = "Symbols level.",
139}
139}
140140
141141newoption {
142142   trigger = "PROFILER",
143143   description = "Include the internal profiler.",
144}
144}
145145
146146newoption {
147147   trigger = "OPTIMIZE",
148148   description = "Optimization level.",
149}
149}
150150
151151newoption {
152152   trigger = "ARCHOPTS",
153153   description = "ARCHOPTS.",
154}
154}
155155
156156newoption {
157157   trigger = "LDOPTS",
158158   description = "Additional linker options",
159}
159}
160160
161161newoption {
162162   trigger = "MAP",
163163   description = "Generate a link map.",
164}
164}
165165
166166newoption {
167167   trigger = "NOASM",
r245577r245578
173173}
174174
175175newoption {
176   trigger = "BIGENDIAN",
177   description = "Build for big endian target",
178   allowed = {
179      { "0",  "Little endian target"   },
180      { "1",  "Big endian target"  },
181   },
182}
183
184newoption {
176185   trigger = "FORCE_DRC_C_BACKEND",
177186   description = "Force DRC C backend.",
178}
187}
179188
180189newoption {
181190   trigger = "NOWERROR",
182191   description = "NOWERROR",
183}
192}
184193
185194newoption {
186195   trigger = "USE_BGFX",
r245577r245578
191200   }
192201}
193202
194local os_version = str_to_version(_OPTIONS["os_version"])
203if not _OPTIONS["BIGENDIAN"] then
204   _OPTIONS["BIGENDIAN"] = "0"
205end
195206
196207if not _OPTIONS["NOASM"] then
197208   if _OPTIONS["targetos"]=="emscripten" then
r245577r245578
206217end
207218
208219USE_BGFX = 1
209if (_OPTIONS["targetos"]=="macosx" and  os_version < 100700) then
210   USE_BGFX = 0
211end
212220if(_OPTIONS["USE_BGFX"]~=nil) then
213221   USE_BGFX = tonumber(_OPTIONS["USE_BGFX"])
214222end
r245577r245578
251259         "FatalWarnings",
252260      }
253261   end
254   
255   
262
263
256264configuration { "Debug", "vs*" }
257265   flags {
258266      "Symbols",
259267   }
268   
269configuration { "Release", "vs*" }
270   flags {
271      "Optimize",
272   }
260273
261274configuration {}
262   
263--aftercompilefile ("\t$(SILENT) gawk -f ../../../../../scripts/depfilter.awk $(@:%.o=%.d) > $(@:%.o=%.dep)\n\t$(SILENT) mv $(@:%.o=%.dep) $(@:%.o=%.d)")
264   
265   
275
276local AWK = ""
277if (os.is("windows")) then
278   AWK_TEST = backtick("awk --version 2> NUL")
279   if (AWK_TEST~='') then
280      AWK = "awk"
281   else
282      AWK_TEST = backtick("gawk --version 2> NUL")
283      if (AWK_TEST~='') then
284         AWK = "gawk"
285      end
286   end
287else
288   AWK_TEST = backtick("awk --version 2> /dev/null")
289   if (AWK_TEST~='') then
290      AWK = "awk"
291   else
292      AWK_TEST = backtick("gawk --version 2> /dev/null")
293      if (AWK_TEST~='') then
294         AWK = "gawk"
295      end
296   end
297end
298
299if (AWK~='') then
300   postcompiletasks {
301      AWK .. " -f ../../../../../scripts/depfilter.awk $(@:%.o=%.d) > $(@:%.o=%.dep)",
302      "mv $(@:%.o=%.dep) $(@:%.o=%.d)",
303   }
304end
305
266306msgcompile ("Compiling $(subst ../,,$<)...")
267307
268308msgcompile_objc ("Objective-C compiling $(subst ../,,$<)...")
r245577r245578
296336   if _OPTIONS["PROFILE"] then
297337      targetsuffix "64dp"
298338   end
299   
339
300340configuration { "x32", "Release" }
301341   targetsuffix ""
302342   if _OPTIONS["PROFILE"] then
303343      targetsuffix "p"
304344   end
305   
345
306346configuration { "x32", "Debug" }
307347   targetsuffix "d"
308348   if _OPTIONS["PROFILE"] then
309349      targetsuffix "dp"
310350   end
311   
351
312352configuration { "Native", "Release" }
313353   targetsuffix ""
314354   if _OPTIONS["PROFILE"] then
r245577r245578
349389   buildoptions_objc {
350390      "-DINLINE=\"static inline\"",
351391   }
392configuration { "xcode4*" }
393   buildoptions {
394      "-DINLINE=\"static inline\"",
395   }
396
352397configuration { "vs*" }
353398   defines {
354399      "INLINE=static inline",
r245577r245578
384429end
385430
386431
387-- define LSB_FIRST if we are a little-endian target
388defines {
389   "LSB_FIRST",
390}
432if _OPTIONS["BIGENDIAN"]=="1" then
433   if _OPTIONS["targetos"]=="macosx" then
434      defines {
435         "OSX_PPC",
436      }
437      buildoptions {
438         "-Wno-unused-label",
439      }
440      if _OPTIONS["SYMBOLS"] then
441         buildoptions {
442            "-mlong-branch",
443         }
444      end
445      configuration { "x64" }
446         buildoptions {
447            "-arch ppc64",
448         }
449         linkoptions {
450            "-arch ppc64",
451         }
452      configuration { "x32" }
453         buildoptions {
454            "-arch ppc",
455         }
456         linkoptions {
457            "-arch ppc",
458         }
459      configuration { }
460   end
461else
462   defines {
463      "LSB_FIRST",
464   }
465   if _OPTIONS["targetos"]=="macosx" then
466      configuration { "x64" }
467         buildoptions {
468            "-arch x86_64",
469         }
470         linkoptions {
471            "-arch x86_64",
472         }
473      configuration { "x32" }
474         buildoptions {
475            "-arch i386",
476         }
477         linkoptions {
478            "-arch i386",
479         }
480   end
481end
391482
392483-- need to ensure FLAC functions are statically linked
393484defines {
r245577r245578
400491   }
401492end
402493
403-- fixme -- need to make this work for other target architectures (PPC)
404494if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
405   configuration { "x64" }
406      defines {
407         "NATIVE_DRC=drcbe_x64",
408      }
409   configuration { "x32" }
410      defines {
411         "NATIVE_DRC=drcbe_x86",
412      }
413   configuration {  }
495   if _OPTIONS["BIGENDIAN"]~="1" then
496      configuration { "x64" }
497         defines {
498            "NATIVE_DRC=drcbe_x64",
499         }
500      configuration { "x32" }
501         defines {
502            "NATIVE_DRC=drcbe_x86",
503         }
504      configuration {  }
505   end
414506end
415   
507
416508-- define USE_SYSTEM_JPEGLIB if library shipped with MAME is not used
417509--ifneq ($(BUILD_JPEGLIB),1)
418510--DEFS += -DUSE_SYSTEM_JPEGLIB
r245577r245578
495587if _OPTIONS["SYMBOLS"]~=nil then
496588   flags {
497589      "Symbols",
498   }   
590   }
499591end
500592
501593--# add the optimization flag
r245577r245578
515607--ifneq ($(),0)
516608if _OPTIONS["OPTIMIZE"] then
517609   buildoptions {
518      "-fno-strict-aliasing"
610      "-fno-strict-aliasing"
519611   }
520   if _OPTIONS["ARCHOPTS"] then   
612   if _OPTIONS["ARCHOPTS"] then
521613      buildoptions {
522614         _OPTIONS["ARCHOPTS"]
523615      }
r245577r245578
553645         "-Wl,-Map," .. "../../../../"  .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".map"
554646      }
555647
556   end   
648   end
557649end
558650   buildoptions {
559651      "-Wno-unknown-pragmas",
r245577r245578
594686--endif
595687
596688
597     
689
598690      local version = str_to_version(_OPTIONS["gcc_version"])
599691      if string.find(_OPTIONS["gcc"], "clang") then
600692         buildoptions {
r245577r245578
607699            buildoptions {
608700               "-Wno-unused-value",
609701            }
610         end   
702         end
611703         if (version >= 30400) then
612704            buildoptions {
613705               "-Wno-inline-new-delete",
r245577r245578
626718            buildoptions {
627719               "-Wno-cast-align"
628720            }
629         end
721         end
630722         if (version >= 40400) then
631723            buildoptions {
632724               "-Wno-unused-result",
633725            }
634         end
726         end
635727
636728         if (version >= 40700) then
637729            buildoptions {
r245577r245578
656748if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
657749   subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"]
658750else
659   subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"] .. _OPTIONS["subtarget"]
660end   
751   subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"] .. _OPTIONS["subtarget"]
752end
661753
662754if not toolchain(MAME_BUILD_DIR, subdir) then
663755   return -- no action specified
664756end
665   
757
666758configuration { "asmjs" }
667759   buildoptions {
668760      "-std=gnu89",
r245577r245578
704796         "dl",
705797      }
706798      if _OPTIONS["distro"]=="debian-stable" then
707         defines
799         defines
708800         {
709801            "NO_AFFINITY_NP",
710802         }
r245577r245578
725817         "-static-libgcc",
726818         "-static-libstdc++",
727819      }
728if _OPTIONS["osd"]=="sdl" then
729820      links {
730         "SDL2",
731         "imm32",
732         "version",
733         "ole32",
734         "oleaut32",
735      }
736end
737      links {
738821         "user32",
739         "gdi32",
740         "dsound",
741         "dxguid",
742822         "winmm",
743823         "advapi32",
744         "comctl32",
745824         "shlwapi",
746825         "wsock32",
747         "comdlg32",
748826      }
749827
750828configuration { "vs*" }
r245577r245578
757835      }
758836      links {
759837         "user32",
760         "gdi32",
761         "dsound",
762         "dxguid",
763838         "winmm",
764839         "advapi32",
765         "comctl32",
766840         "shlwapi",
767841         "wsock32",
768         "comdlg32",
769842      }
770843
771844      buildoptions {
r245577r245578
832905      }
833906if _OPTIONS["vs"]=="intel-15" then
834907      buildoptions {
835         "/Qwd9",
908         "/Qwd9",
836909         "/Qwd82",
837910         "/Qwd111",
838911         "/Qwd128",
r245577r245578
845918         "/Qwd869",
846919         "/Qwd2545",
847920         "/Qwd2553",
848         "/Qwd2557",
849         "/Qwd3280",
921         "/Qwd2557",
922         "/Qwd3280",
850923
851924         "/Qwd170",
852925         "/Qwd188",
853926
854         "/Qwd63",
927         "/Qwd63",
855928         "/Qwd177",
856929         "/Qwd186",
857930         "/Qwd488",
r245577r245578
910983   startproject (_OPTIONS["target"])
911984else
912985   startproject (_OPTIONS["target"] .. _OPTIONS["subtarget"])
913end   
986end
914987mainProject(_OPTIONS["target"],_OPTIONS["subtarget"])
915988
916989if _OPTIONS["with-tools"] then
r245577r245578
918991   dofile(path.join("src", "tools.lua"))
919992end
920993
921if (_ACTION == "gmake" and _OPTIONS["gcc"]=='asmjs') then
994if (_ACTION == "gmake" and _OPTIONS["gcc"]=='asmjs') then
922995   strip()
923996end
trunk/scripts/src/3rdparty.lua
r245577r245578
6666   }
6767
6868   includedirs {
69      MAME_DIR .. "src/osd",
6970      MAME_DIR .. "src/emu",
7071      MAME_DIR .. "src/lib",
7172      MAME_DIR .. "src/lib/util",
7273      MAME_DIR .. "3rdparty",
7374      MAME_DIR .. "3rdparty/expat/lib/",
7475   }
75   includeosd()
7676   
7777   files {
7878      MAME_DIR .. "3rdparty/softfloat/softfloat.c",
r245577r245578
389389   kind "StaticLib"
390390
391391   includedirs {
392      MAME_DIR .. "src/osd",
392393      MAME_DIR .. "3rdparty/portmidi/pm_common",
393394      MAME_DIR .. "3rdparty/portmidi/porttime",
394395   }
395   
396   includeosd()
397
396     
398397   configuration { "linux*" }
399398      defines {
400399         "PMALSA=1",
r245577r245578
451450      MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
452451   }
453452
454   includeosd()
455
456453   configuration { "vs*" }
457454      includedirs {
458455         MAME_DIR .. "3rdparty/dxsdk/Include",
trunk/scripts/src/bus.lua
r245577r245578
10211021      MAME_DIR .. "src/emu/bus/centronics/printer.c",
10221022      MAME_DIR .. "src/emu/bus/centronics/digiblst.c",
10231023   }
1024   
1025   dependency {
1026      { MAME_DIR .. "src/emu/bus/centronics/epson_ex800.c",  GEN_DIR .. "emu/layout/ex800.lh" },
1027      { MAME_DIR .. "src/emu/bus/centronics/epson_lx800.c",  GEN_DIR .. "emu/layout/lx800.lh" },
1028      { MAME_DIR .. "src/emu/bus/centronics/epson_lx810l.c", GEN_DIR .. "emu/layout/lx800.lh" },
1029   }
1030
1031   custombuildtask {
1032      layoutbuildtask("emu/layout", "ex800"),
1033      layoutbuildtask("emu/layout", "lx800"),
1034   }     
10241035end
10251036
10261037---------------------------------------------------
trunk/scripts/src/cpu.lua
r245577r245578
7676      MAME_DIR .. "src/emu/cpu/arcompact/arcompact.c",
7777      MAME_DIR .. "src/emu/cpu/arcompact/arcompact_execute.c",
7878   }
79   dependency {
80      { MAME_DIR .. "src/emu/cpu/arcompact/arcompact.c",        GEN_DIR .. "emu/cpu/arcompact/arcompact.inc" },
81      { MAME_DIR .. "src/emu/cpu/arcompact/arcompact_execute.c", GEN_DIR .. "emu/cpu/arcompact/arcompact.inc" },
82   }
83
84   custombuildtask {
85      { MAME_DIR .. "src/emu/cpu/arcompact/arcompact_make.py" , GEN_DIR .. "emu/cpu/arcompact/arcompact.inc",   { MAME_DIR .. "src/emu/cpu/arcompact/arcompact_make.py" }, {"@echo Generating arcompact source .inc files...", "python $(1)  $(@)" }},
86   }
7987end
8088
8189if (CPUS["ARCOMPACT"]~=null or _OPTIONS["with-tools"]) then
r245577r245578
459467      MAME_DIR .. "src/emu/cpu/h8/h8_timer16.c",
460468      MAME_DIR .. "src/emu/cpu/h8/h8_sci.c",
461469   }
470   
471   dependency {
472      { MAME_DIR .. "src/emu/cpu/h8/h8.c",       GEN_DIR .. "emu/cpu/h8/h8.inc" },
473      { MAME_DIR .. "src/emu/cpu/h8/h8h.c",      GEN_DIR .. "emu/cpu/h8/h8h.inc" },
474      { MAME_DIR .. "src/emu/cpu/h8/h8s2000.c",  GEN_DIR .. "emu/cpu/h8/h8s2000.inc" },
475      { MAME_DIR .. "src/emu/cpu/h8/h8s2600.c",  GEN_DIR .. "emu/cpu/h8/h8s2600.inc" },
476   }
477
478   custombuildtask {
479      { MAME_DIR .. "src/emu/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8.inc",       { MAME_DIR .. "src/emu/cpu/h8/h8make.py" }, {"@echo Generating H8-300 source file...",   "python $(1) $(<) o   $(@)" }},
480      { MAME_DIR .. "src/emu/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8h.inc",      { MAME_DIR .. "src/emu/cpu/h8/h8make.py" }, {"@echo Generating H8-300H source file...",  "python $(1) $(<) h   $(@)" }},
481      { MAME_DIR .. "src/emu/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2000.inc",  { MAME_DIR .. "src/emu/cpu/h8/h8make.py" }, {"@echo Generating H8S/2000 source file...", "python $(1) $(<) s20 $(@)" }},
482      { MAME_DIR .. "src/emu/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2600.inc",  { MAME_DIR .. "src/emu/cpu/h8/h8make.py" }, {"@echo Generating H8S/2600 source file...", "python $(1) $(<) s26 $(@)" }},
483   }
462484end
463485
464486--------------------------------------------------
r245577r245578
689711      MAME_DIR .. "src/emu/cpu/mcs96/i8x9x.c",
690712      MAME_DIR .. "src/emu/cpu/mcs96/i8xc196.c",
691713   }
714   dependency {
715      { MAME_DIR .. "src/emu/cpu/mcs96/mcs96.c",   GEN_DIR .. "emu/cpu/mcs96/mcs96.inc" },
716      { MAME_DIR .. "src/emu/cpu/mcs96/i8x9x.c",   GEN_DIR .. "emu/cpu/mcs96/i8x9x.inc" },
717      { MAME_DIR .. "src/emu/cpu/mcs96/i8xc196.c", GEN_DIR .. "emu/cpu/mcs96/i8xc196.inc" },
718   }
719
720   custombuildtask {
721      { MAME_DIR .. "src/emu/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/mcs96.inc",   { MAME_DIR .. "src/emu/cpu/mcs96/mcs96make.py" }, {"@echo Generating mcs96 source file...", "python $(1) mcs96 $(<) $(@)" }},
722      { MAME_DIR .. "src/emu/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8x9x.inc",   { MAME_DIR .. "src/emu/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8x9x source file...", "python $(1) i8x9x $(<) $(@)" }},
723      { MAME_DIR .. "src/emu/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8xc196.inc", { MAME_DIR .. "src/emu/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8xc196 source file...", "python $(1) i8xc196 $(<) $(@)" }},
724   }
692725end
693726
694727--------------------------------------------------
r245577r245578
958991      MAME_DIR .. "src/emu/cpu/m6502/m3745x.c",
959992      MAME_DIR .. "src/emu/cpu/m6502/m5074x.c",
960993   }
994   
995   dependency {
996      { MAME_DIR .. "src/emu/cpu/m6502/deco16.c",   GEN_DIR .. "emu/cpu/m6502/deco16.inc" },
997      { MAME_DIR .. "src/emu/cpu/m6502/m4510.c",    GEN_DIR .. "emu/cpu/m6502/m4510.inc" },
998      { MAME_DIR .. "src/emu/cpu/m6502/m6502.c",    GEN_DIR .. "emu/cpu/m6502/m6502.inc" },
999      { MAME_DIR .. "src/emu/cpu/m6502/m65c02.c",   GEN_DIR .. "emu/cpu/m6502/m65c02.inc" },
1000      { MAME_DIR .. "src/emu/cpu/m6502/m65ce02.c",  GEN_DIR .. "emu/cpu/m6502/m65ce02.inc" },
1001      { MAME_DIR .. "src/emu/cpu/m6502/m6509.c",    GEN_DIR .. "emu/cpu/m6502/m6509.inc" },
1002      { MAME_DIR .. "src/emu/cpu/m6502/m6510.c",    GEN_DIR .. "emu/cpu/m6502/m6510.inc" },
1003      { MAME_DIR .. "src/emu/cpu/m6502/n2a03.c",    GEN_DIR .. "emu/cpu/m6502/n2a03.inc" },
1004      { MAME_DIR .. "src/emu/cpu/m6502/r65c02.c",   GEN_DIR .. "emu/cpu/m6502/r65c02.inc" },
1005      { MAME_DIR .. "src/emu/cpu/m6502/m740.c",     GEN_DIR .. "emu/cpu/m6502/m740.inc" },
1006   }
1007
1008   custombuildtask {
1009      { MAME_DIR .. "src/emu/cpu/m6502/odeco16.lst", GEN_DIR .. "emu/cpu/m6502/deco16.inc", { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/ddeco16.lst"  }, {"@echo Generating deco16 source file...", "python $(1) deco16_device $(<) $(2) $(@)" }},
1010      { MAME_DIR .. "src/emu/cpu/m6502/om4510.lst",  GEN_DIR .. "emu/cpu/m6502/m4510.inc",  { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm4510.lst"   }, {"@echo Generating m4510 source file...", "python $(1) m4510_device $(<) $(2) $(@)" }},
1011      { MAME_DIR .. "src/emu/cpu/m6502/om6502.lst",  GEN_DIR .. "emu/cpu/m6502/m6502.inc",  { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm6502.lst"   }, {"@echo Generating m6502 source file...", "python $(1) m6502_device $(<) $(2) $(@)" }},
1012      { MAME_DIR .. "src/emu/cpu/m6502/om65c02.lst", GEN_DIR .. "emu/cpu/m6502/m65c02.inc", { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm65c02.lst"  }, {"@echo Generating m65c02 source file...", "python $(1) m65c02_device $(<) $(2) $(@)" }},
1013      { MAME_DIR .. "src/emu/cpu/m6502/om65ce02.lst",GEN_DIR .. "emu/cpu/m6502/m65ce02.inc",{ MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm65ce02.lst" }, {"@echo Generating m65ce02 source file...", "python $(1) m65ce02_device $(<) $(2) $(@)" }},
1014      { MAME_DIR .. "src/emu/cpu/m6502/om6509.lst",  GEN_DIR .. "emu/cpu/m6502/m6509.inc",  { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm6509.lst"   }, {"@echo Generating m6509 source file...", "python $(1) m6509_device $(<) $(2) $(@)" }},
1015      { MAME_DIR .. "src/emu/cpu/m6502/om6510.lst",  GEN_DIR .. "emu/cpu/m6502/m6510.inc",  { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm6510.lst"   }, {"@echo Generating m6510 source file...", "python $(1) m6510_device $(<) $(2) $(@)" }},
1016      { MAME_DIR .. "src/emu/cpu/m6502/on2a03.lst",  GEN_DIR .. "emu/cpu/m6502/n2a03.inc",  { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dn2a03.lst"   }, {"@echo Generating n2a03 source file...", "python $(1) n2a03_device $(<) $(2) $(@)" }},
1017      { MAME_DIR .. "src/emu/cpu/m6502/om740.lst" ,  GEN_DIR .. "emu/cpu/m6502/m740.inc",   { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py",   MAME_DIR  .. "src/emu/cpu/m6502/dm740.lst"    }, {"@echo Generating m740 source file...", "python $(1) m740_device $(<) $(2) $(@)" }},
1018
1019      { MAME_DIR .. "src/emu/cpu/m6502/dr65c02.lst", GEN_DIR .. "emu/cpu/m6502/r65c02.inc", { MAME_DIR .. "src/emu/cpu/m6502/m6502make.py" }, {"@echo Generating r65c02 source file...", "python $(1) r65c02_device - $(<) $(@)" }},
1020   }
9611021end
9621022
9631023--------------------------------------------------
r245577r245578
10031063      MAME_DIR .. "src/emu/cpu/m6809/hd6309.c",
10041064      MAME_DIR .. "src/emu/cpu/m6809/konami.c",
10051065   }
1066
1067   dependency {
1068      { MAME_DIR .. "src/emu/cpu/m6809/m6809.c",   GEN_DIR .. "emu/cpu/m6809/m6809.inc" },
1069      { MAME_DIR .. "src/emu/cpu/m6809/hd6309.c",  GEN_DIR .. "emu/cpu/m6809/hd6309.inc" },
1070      { MAME_DIR .. "src/emu/cpu/m6809/konami.c",  GEN_DIR .. "emu/cpu/m6809/konami.inc" },
1071   }
1072
1073   custombuildtask {
1074      { MAME_DIR .. "src/emu/cpu/m6809/m6809.ops"  , GEN_DIR .. "emu/cpu/m6809/m6809.inc",   { MAME_DIR .. "src/emu/cpu/m6809/m6809make.py"  , MAME_DIR .. "src/emu/cpu/m6809/base6x09.ops"  }, {"@echo Generating m6809 source file...", "python $(1) $(<) > $(@)" }},
1075      { MAME_DIR .. "src/emu/cpu/m6809/hd6309.ops" , GEN_DIR .. "emu/cpu/m6809/hd6309.inc",  { MAME_DIR .. "src/emu/cpu/m6809/m6809make.py"  , MAME_DIR .. "src/emu/cpu/m6809/base6x09.ops"  }, {"@echo Generating hd6309 source file...", "python $(1) $(<) > $(@)" }},
1076      { MAME_DIR .. "src/emu/cpu/m6809/konami.ops" , GEN_DIR .. "emu/cpu/m6809/konami.inc",  { MAME_DIR .. "src/emu/cpu/m6809/m6809make.py"  , MAME_DIR .. "src/emu/cpu/m6809/base6x09.ops"  }, {"@echo Generating konami source file...", "python $(1) $(<) > $(@)" }},
1077   }
10061078end
10071079
10081080if (CPUS["M6809"]~=null or _OPTIONS["with-tools"]) then
r245577r245578
10341106if (CPUS["M680X0"]~=null) then
10351107   files {
10361108      MAME_DIR .. "src/emu/cpu/m68000/m68kcpu.c",
1037      GEN_DIR .. "emu/cpu/m68000/m68kops.c",
1109      MAME_DIR .. "src/emu/cpu/m68000/m68kops.c",
10381110   }
10391111end
10401112
r245577r245578
15271599      MAME_DIR .. "src/emu/cpu/tms57002/tms57002.c",
15281600      MAME_DIR .. "src/emu/cpu/tms57002/tms57kdec.c",
15291601   }
1602   dependency {
1603      { MAME_DIR .. "src/emu/cpu/tms57002/tms57kdec.c", GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" },
1604      { MAME_DIR .. "src/emu/cpu/tms57002/tms57002.c",  GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" },
1605   }
15301606end
15311607
15321608if (CPUS["TMS57002"]~=null or _OPTIONS["with-tools"]) then
15331609   table.insert(disasm_files , MAME_DIR .. "src/emu/cpu/tms57002/57002dsm.c")
1610   table.insert(disasm_dependency , { MAME_DIR .. "src/emu/cpu/tms57002/57002dsm.c",  GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" } )
1611   table.insert(disasm_custombuildtask , { MAME_DIR .. "src/emu/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.inc",   { MAME_DIR .. "src/emu/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", "python $(1) $(<) $(@)" }})
15341612end
15351613
15361614--------------------------------------------------
trunk/scripts/src/emu.lua
r245577r245578
66}
77
88includedirs {
9   MAME_DIR .. "src/osd",
910   MAME_DIR .. "src/emu",
1011   MAME_DIR .. "src/lib",
1112   MAME_DIR .. "src/lib/util",
r245577r245578
1718   GEN_DIR  .. "emu/layout",
1819}
1920
20includeosd()
21
2221files {
2322   MAME_DIR .. "src/emu/hashfile.c",
2423   MAME_DIR .. "src/emu/addrmap.c",
r245577r245578
159158   MAME_DIR .. "src/emu/video/vector.c",
160159}
161160
161dependency {
162   --------------------------------------------------
163   -- additional dependencies
164   --------------------------------------------------
165   { MAME_DIR .. "src/emu/rendfont.c", GEN_DIR .. "emu/uismall.fh" },
166   -------------------------------------------------
167   -- core layouts
168   --------------------------------------------------
169   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/dualhovu.lh" },
170   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/dualhsxs.lh" },
171   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/dualhuov.lh" },
172   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/horizont.lh" },
173   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/triphsxs.lh" },
174   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/quadhsxs.lh" },
175   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/vertical.lh" },
176   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/lcd.lh" },
177   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/lcd_rot.lh" },
178   { MAME_DIR .. "src/emu/rendlay.c", GEN_DIR .. "emu/layout/noscreens.lh" },
162179
180   { MAME_DIR .. "src/emu/video.c",   GEN_DIR .. "emu/layout/snap.lh" },
181   
182}
183
184custombuildtask {
185   { MAME_DIR .. "src/emu/uismall.png"         , GEN_DIR .. "emu/uismall.fh",  {  MAME_DIR.. "src/build/png2bdc.py",  MAME_DIR .. "src/build/file2str.py" }, {"@echo Converting uismall.png...", "python $(1) $(<) temp.bdc", "python $(2) temp.bdc $(@) font_uismall UINT8" }},
186                                               
187   layoutbuildtask("emu/layout", "dualhovu"),
188   layoutbuildtask("emu/layout", "dualhsxs"),
189   layoutbuildtask("emu/layout", "dualhuov"),
190   layoutbuildtask("emu/layout", "horizont"),
191   layoutbuildtask("emu/layout", "triphsxs"),
192   layoutbuildtask("emu/layout", "quadhsxs"),
193   layoutbuildtask("emu/layout", "vertical"),
194   layoutbuildtask("emu/layout", "lcd"),
195   layoutbuildtask("emu/layout", "lcd_rot"),
196   layoutbuildtask("emu/layout", "noscreens"),
197   layoutbuildtask("emu/layout", "snap"),
198}
199
163200function emuProject(_target, _subtarget)
164201
165202   disasm_files = { }
203   disasm_dependency = { }
204   disasm_custombuildtask = { }
166205
167206   project ("optional")
168207   uuid (os.uuid("optional-" .. _target .."_" .. _subtarget))
r245577r245578
174213   }
175214
176215   includedirs {
216      MAME_DIR .. "src/osd",
177217      MAME_DIR .. "src/emu",
178218      MAME_DIR .. "src/mame", -- used for sound amiga
179219      MAME_DIR .. "src/lib",
r245577r245578
185225      GEN_DIR  .. "emu",
186226      GEN_DIR  .. "emu/layout",
187227      MAME_DIR .. "src/emu/cpu/m68000",
188      GEN_DIR .. "emu/cpu/m68000",
189228   }
190   includeosd()
191229   
192230   dofile(path.join("src", "cpu.lua"))
193231
r245577r245578
210248   }
211249
212250   includedirs {
251      MAME_DIR .. "src/osd",
213252      MAME_DIR .. "src/emu",
214253      MAME_DIR .. "src/lib",
215254      MAME_DIR .. "src/lib/util",
r245577r245578
223262      GEN_DIR  .. "emu/layout",
224263   }
225264
226   includeosd()
227   
228265   dofile(path.join("src", "bus.lua"))
229266   
230267   
r245577r245578
237274   }
238275
239276   includedirs {
277      MAME_DIR .. "src/osd",
240278      MAME_DIR .. "src/emu",
241279      MAME_DIR .. "src/lib",
242280      MAME_DIR .. "src/lib/util",
r245577r245578
247285      GEN_DIR  .. "emu",
248286   }
249287   
250   includeosd()
251   
252288   files {
253289      disasm_files
254   }
290   }   
291
292   if #disasm_dependency > 0 then
293      dependency {
294         disasm_dependency[1]
295      }
296   end
297
298   if #disasm_custombuildtask > 0 then
299      custombuildtask {
300         disasm_custombuildtask[1]
301      }
302   end
255303end
No newline at end of file
trunk/scripts/src/lib.lua
r245577r245578
77   }
88
99   includedirs {
10      MAME_DIR .. "src/osd",
1011      MAME_DIR .. "src/lib/util",
1112      MAME_DIR .. "3rdparty",
1213      MAME_DIR .. "3rdparty/expat/lib",
1314      MAME_DIR .. "3rdparty/zlib",
1415   }
1516
16   includeosd()
17
1817   files {
1918      MAME_DIR .. "src/lib/util/astring.c",
2019      MAME_DIR .. "src/lib/util/avhuff.c",
r245577r245578
6362   }
6463
6564   includedirs {
65      MAME_DIR .. "src/osd",
6666      MAME_DIR .. "src/emu",
6767      MAME_DIR .. "src/lib",
6868      MAME_DIR .. "src/lib/util",
r245577r245578
7070      MAME_DIR .. "3rdparty/zlib",
7171   }
7272
73   includeosd()
74
7573   files {
7674      MAME_DIR .. "src/lib/formats/cassimg.c",
7775      MAME_DIR .. "src/lib/formats/flopimg.c",
trunk/scripts/src/main.lua
r245577r245578
2121            "$(SILENT) objdump --section=.text --line-numbers --syms --demangle $(TARGET) >$(subst .exe,.sym,$(TARGET))"
2222         }
2323   end
24
24   
25   configuration { "vs*" }
26   flags {
27      "Unicode",
28   }
2529   configuration { "mingw*" or "vs*" }
2630      targetextension ".exe"
2731
r245577r245578
6165   links{
6266      "ocore_" .. _OPTIONS["osd"],
6367   }
68   
69   override_resources = false;
70   
6471   maintargetosdoptions(_target)
6572
6673   includedirs {
74      MAME_DIR .. "src/osd",
6775      MAME_DIR .. "src/emu",
6876      MAME_DIR .. "src/" .. _target,
6977      MAME_DIR .. "src/lib",
r245577r245578
7482      GEN_DIR  .. "resource",
7583   }
7684
77   includeosd()
78
79   if _OPTIONS["targetos"]=="macosx" then
85   if _OPTIONS["targetos"]=="macosx" and (not override_resources) then
8086      linkoptions {
81         "-sectcreate __TEXT __info_plist " .. GEN_DIR .. "/resource/" .. _OPTIONS["target"] .. "-Info.plist"
87         "-sectcreate __TEXT __info_plist " .. GEN_DIR .. "/resource/" .. _target .. "-Info.plist"
8288      }
89      custombuildtask {   
90         { MAME_DIR .. "src/version.c" ,  GEN_DIR  .. "/resource/" .. _target .. "-Info.plist",    {  MAME_DIR .. "src/build/verinfo.py" }, {"@echo Emitting " .. _target .. "-Info.plist" .. "...",    "python $(1)  -p -b " .. _target .. " $(<) > $(@)" }},
91      }
92      dependency {
93         { "$(TARGET)" ,  GEN_DIR  .. "/resource/" .. _target .. "-Info.plist", true  },
94      }
95
8396   end
8497
85   if _OPTIONS["targetos"]=="windows" then
98   if _OPTIONS["targetos"]=="windows" and (not override_resources) then
99      local rcfile = MAME_DIR .. "src/" .. _target .. "/osd/".._OPTIONS["osd"].."/" .. _target ..".rc"
100      if not os.isfile(rcfile) then
101         rcfile = MAME_DIR .. "src/" .. _target .. "/osd/windows/" .. _target ..".rc"
102      end
103     
104      if os.isfile(rcfile) then
105         files {
106            rcfile,
107         }
108         dependency {
109            { "$(OBJDIR)/".._target ..".res" ,  GEN_DIR  .. "/resource/" .. _target .. "vers.rc", true  },
110         }
111      else
112         files {
113            MAME_DIR .. "src/osd/windows/mame.rc",
114         }
115         dependency {
116            { "$(OBJDIR)/mame.res" ,  GEN_DIR  .. "/resource/" .. _target .. "vers.rc", true  },
117         }
118      end   
86119   end
87120
88121   files {
r245577r245578
90123      MAME_DIR .. "src/version.c",
91124      GEN_DIR  .. _target .. "/" .. _subtarget .."/drivlist.c",
92125   }
126
127   custombuildtask {
128      { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" ,  GEN_DIR  .. _target .. "/" .. _subtarget .."/drivlist.c",    {  MAME_DIR .. "src/build/makelist.py" }, {"@echo Building driver list...",    "python $(1) $(<) > $(@)" }},
129   }
130   
131   configuration { "mingw*" }
132      custombuildtask {   
133         { MAME_DIR .. "src/version.c" ,  GEN_DIR  .. "/resource/" .. _target .. "vers.rc",    {  MAME_DIR .. "src/build/verinfo.py" }, {"@echo Emitting " .. _target .. "vers.rc" .. "...",    "python $(1)  -r -b " .. _target .. " $(<) > $(@)" }},
134      }   
135   
136   configuration { "vs*" }
137      prebuildcommands {   
138         "mkdir " .. path.translate(GEN_DIR  .. "/resource/","\\") .. " 2>NUL",
139         "@echo Emitting ".. _target .. "vers.rc...",
140         "python " .. path.translate(MAME_DIR .. "src/build/verinfo.py","\\") .. " -r -b " .. _target .. " " .. path.translate(MAME_DIR .. "src/version.c","\\") .. " > " .. path.translate(GEN_DIR  .. "/resource/" .. _target .. "vers.rc", "\\") ,
141      }   
142   
143   
144   configuration { }
145
93146   debugdir (MAME_DIR)
94147   debugargs ("-window")
95148end
trunk/scripts/src/osd/modules.lua
r245577r245578
2626      MAME_DIR .. "src/osd/modules/midi/none.c",
2727      MAME_DIR .. "src/osd/modules/sound/js_sound.c",
2828      MAME_DIR .. "src/osd/modules/sound/direct_sound.c",
29      MAME_DIR .. "src/osd/modules/sound/coreaudio_sound.c",
2930      MAME_DIR .. "src/osd/modules/sound/sdl_sound.c",
3031      MAME_DIR .. "src/osd/modules/sound/none.c",
3132   }
r245577r245578
99100      defines {
100101         "USE_QTDEBUG=1",
101102      }
103     
104      local MOC = ""
105      if (os.is("windows")) then
106         MOC = "moc"
107      else
108         MOCTST = backtick("which moc-qt4 2>/dev/null")         
109         if (MOCTST=='') then
110            MOCTST = backtick("which moc 2>/dev/null")
111         end
112         if (MOCTST=='') then
113            print("Qt's Meta Object Compiler (moc) wasn't found!")
114            os.exit(1)
115         end   
116         MOC = MOCTST
117      end
118     
119     
120      custombuildtask {
121         { MAME_DIR .. "src/osd/modules/debugger/qt/debuggerview.h",          GEN_DIR .. "osd/modules/debugger/qt/debuggerview.moc.c", { },         { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
122         { MAME_DIR .. "src/osd/modules/debugger/qt/windowqt.h",             GEN_DIR .. "osd/modules/debugger/qt/windowqt.moc.c", { },             { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
123         { MAME_DIR .. "src/osd/modules/debugger/qt/logwindow.h",             GEN_DIR .. "osd/modules/debugger/qt/logwindow.moc.c", { },             { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
124         { MAME_DIR .. "src/osd/modules/debugger/qt/dasmwindow.h",             GEN_DIR .. "osd/modules/debugger/qt/dasmwindow.moc.c", { },          { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
125         { MAME_DIR .. "src/osd/modules/debugger/qt/mainwindow.h",             GEN_DIR .. "osd/modules/debugger/qt/mainwindow.moc.c", { },          { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
126         { MAME_DIR .. "src/osd/modules/debugger/qt/memorywindow.h",            GEN_DIR .. "osd/modules/debugger/qt/memorywindow.moc.c", { },          { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
127         { MAME_DIR .. "src/osd/modules/debugger/qt/breakpointswindow.h",      GEN_DIR .. "osd/modules/debugger/qt/breakpointswindow.moc.c", { },       { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
128         { MAME_DIR .. "src/osd/modules/debugger/qt/deviceswindow.h",          GEN_DIR .. "osd/modules/debugger/qt/deviceswindow.moc.c", { },          { MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
129         { MAME_DIR .. "src/osd/modules/debugger/qt/deviceinformationwindow.h",  GEN_DIR .. "osd/modules/debugger/qt/deviceinformationwindow.moc.c", { },{ MOC .. "$(MOCINCPATH) $(<) -o $(@)" }},
130         
131      }
132     
102133      if _OPTIONS["targetos"]=="windows" then
103134         configuration { "mingw*" }
104135            buildoptions {
r245577r245578
107138         configuration { }
108139      elseif _OPTIONS["targetos"]=="macosx" then
109140         buildoptions {
110            "-F" .. string.gsub(os.outputof("qmake -query QT_INSTALL_LIBS"), '[\r\n]+', ''),
141            "-F" .. backtick("qmake -query QT_INSTALL_LIBS"),
111142         }
112143      else
113144         buildoptions {
114            string.gsub(os.outputof("pkg-config --cflags Qt"), '[\r\n]+', ' '),
145            backtick("pkg-config --cflags QtGui"),
115146         }
116147      end
117148   else
r245577r245578
146177   if _OPTIONS["NO_USE_MIDI"]~="1" then
147178      if _OPTIONS["targetos"]=="linux" then
148179         linkoptions {
149            string.gsub(os.outputof("pkg-config --libs alsa"), '[\r\n]+', ' '),
180            backtick("pkg-config --libs alsa"),
150181         }
151182      elseif _OPTIONS["targetos"]=="macosx" then
152183         links {
153            "CoreAudio.framework",
154184            "CoreMIDI.framework",
155185         }
156186      end
r245577r245578
168198         }
169199      elseif _OPTIONS["targetos"]=="macosx" then
170200         linkoptions {
171            "-F" .. string.gsub(os.outputof("qmake -query QT_INSTALL_LIBS"), '[\r\n]+', ''),
201            "-F" .. backtick("qmake -query QT_INSTALL_LIBS"),
172202         }
173203         links {
174204            "QtCore.framework",
r245577r245578
176206         }
177207      else
178208         linkoptions {
179            string.gsub(os.outputof("pkg-config --libs QtGui"), '[\r\n]+', ' '),
209            backtick("pkg-config --libs QtGui"),
180210         }
181211      end
182212   end
183213
214   if _OPTIONS["targetos"]=="windows" then
215      links {
216         "gdi32",
217         "dsound",
218         "dxguid",
219      }
220   elseif _OPTIONS["targetos"]=="macosx" then
221      links {
222         "AudioUnit.framework",
223         "CoreAudio.framework",
224         "CoreServices.framework",
225      }
226   end
227
184228end
185229
186230
trunk/scripts/src/osd/sdl.lua
r245577r245578
3838         }
3939      end
4040      linkoptions {
41         string.gsub(os.outputof("pkg-config --libs fontconfig"), '[\r\n]+', ' '),
41         backtick("pkg-config --libs fontconfig"),
4242      }
4343   end
4444
4545   if _OPTIONS["targetos"]=="windows" then
46      if _OPTIONS["SDL_LIBVER"]=="sdl2" then
47         links {
48            "SDL2.dll",
49         }
50      else
51         links {
52            "SDL.dll",
53         }
54      end
55
4656      configuration { "mingw*" }
4757         linkoptions{
4858            "-municode",
r245577r245578
5969         libdirs {
6070            path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x64")
6171         }
62      configuration { "vs*" }   
63         links {
64            "SDL2",
65         }
6672      configuration {}
6773   elseif _OPTIONS["targetos"]=="haiku" then
6874      links {
r245577r245578
102108}
103109
104110if not _OPTIONS["NO_X11"] then
105   if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="emscripten" or _OPTIONS["targetos"]=="os2" then
111   if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="asmjs" or _OPTIONS["targetos"]=="os2" then
106112      _OPTIONS["NO_X11"] = "1"
107113   else
108114      _OPTIONS["NO_X11"] = "0"
r245577r245578
193199   SDL_NETWORK         = "pcap"
194200elseif _OPTIONS["targetos"]=="haiku" then
195201   SYNC_IMPLEMENTATION = "ntc"
196elseif _OPTIONS["targetos"]=="emscripten" then
202elseif _OPTIONS["targetos"]=="asmjs" then
197203   SYNC_IMPLEMENTATION = "mini"
198204elseif _OPTIONS["targetos"]=="windows" then
199205   BASE_TARGETOS       = "win32"
r245577r245578
210216   SYNC_IMPLEMENTATION = "os2"
211217end
212218
219if _OPTIONS["SDL_LIBVER"]=="sdl" then
220   USE_BGFX = 0
221end
222
213223if BASE_TARGETOS=="unix" then
214224   if _OPTIONS["targetos"]=="macosx" then
215225      links {
r245577r245578
230240         end
231241      else
232242         linkoptions {
233            string.gsub(os.outputof(sdlconfigcmd() .. " --libs | sed 's/-lSDLmain//'"), '[\r\n]+', ' '),
243            backtick(sdlconfigcmd() .. " --libs | sed 's/-lSDLmain//'"),
234244         }
235245      end
236246   else
r245577r245578
250260         end
251261      end
252262      linkoptions {
253         string.gsub(os.outputof(sdlconfigcmd() .. " --libs"), '[\r\n]+', ' '),
263         backtick(sdlconfigcmd() .. " --libs"),
254264      }
255265      if _OPTIONS["targetos"]~="haiku" then
256266         links {
r245577r245578
271281   end
272282elseif BASE_TARGETOS=="os2" then
273283   linkoptions {
274      string.gsub(os.outputof(sdlconfigcmd() .. " --libs"), '[\r\n]+', ' '),
284      backtick(sdlconfigcmd() .. " --libs"),
275285   }
276286   links {
277287      "pthread"
278288   }
279289end
280290
281configuration { "mingw*" }
282      linkoptions {
283         "-static"
284      }
285291
286configuration { }
287
288
289292project ("osd_" .. _OPTIONS["osd"])
290293   uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
291294   kind "StaticLib"
r245577r245578
422425      dofile("sdl_cfg.lua")
423426
424427      includedirs {
428         MAME_DIR .. "src/osd",
425429         MAME_DIR .. "src/lib/util",
426430      }
431     
427432      targetdir(MAME_DIR)
428433
429434      links {
r245577r245578
431436         "ocore_" .. _OPTIONS["osd"],
432437      }
433438
434      includeosd()
435
436439      files {
437440         MAME_DIR .. "src/osd/sdl/testkeys.c",
438441      }
439442
440443      if _OPTIONS["targetos"]=="windows" then
444         if _OPTIONS["SDL_LIBVER"]=="sdl2" then
445            links {
446               "SDL2.dll",
447            }
448         else
449            links {
450               "SDL.dll",
451            }
452         end
441453         linkoptions{
442454            "-municode",
443455         }
trunk/scripts/src/osd/sdl_cfg.lua
r245577r245578
4444
4545if _OPTIONS["NO_USE_MIDI"]~="1" and _OPTIONS["targetos"]=="linux" then
4646   buildoptions {
47      string.gsub(os.outputof("pkg-config --cflags alsa"), '[\r\n]+', ' '),
47      backtick("pkg-config --cflags alsa"),
4848   }
4949end
5050
r245577r245578
8383            "MACOSX_USE_LIBSDL",
8484         }
8585         buildoptions {
86            string.gsub(os.outputof(sdlconfigcmd() .. " --cflags | sed 's:/SDL::'"), '[\r\n]+', ' '),
86            backtick(sdlconfigcmd() .. " --cflags | sed 's:/SDL::'"),
8787         }
8888      end
8989   else
9090      buildoptions {
91         string.gsub(os.outputof(sdlconfigcmd() .. " --cflags"), '[\r\n]+', ' '),
91         backtick(sdlconfigcmd() .. " --cflags"),
9292      }
93      if _OPTIONS["targetos"]~="emscripten" then
93      if _OPTIONS["targetos"]~="asmjs" then
9494         buildoptions {
95            string.gsub(os.outputof("pkg-config --cflags fontconfig"), '[\r\n]+', ' '),
95            backtick("pkg-config --cflags fontconfig"),
9696         }
9797      end
9898   end
r245577r245578
105105      "main=utf8_main",
106106   }
107107
108   configuration { "Debug" }
109      defines {
110         "MALLOC_DEBUG",
111      }
108112   configuration { "vs*" }
109113      includedirs {
110114         path.join(_OPTIONS["SDL_INSTALL_ROOT"],"include")
r245577r245578
127131   }
128132elseif _OPTIONS["targetos"]=="os2" then
129133   buildoptions {
130      string.gsub(os.outputof(sdlconfigcmd() .. " --cflags"), '[\r\n]+', ' '),
134      backtick(sdlconfigcmd() .. " --cflags"),
131135   }
132136end
trunk/scripts/src/osd/windows.lua
r245577r245578
2121      }
2222   end
2323
24   local rcfile = MAME_DIR .. "src/" .. _target .. "/osd/windows/" .. _target ..".rc"
2524
26   if os.isfile(rcfile) then
27      files {
28         rcfile,
25   if _OPTIONS["USE_SDL"] == "1" then
26      links {
27         "SDL.dll",
2928      }
30   else
31      files {
32         MAME_DIR .. "src/osd/windows/mame.rc",
33      }
3429   end
30
31   links {
32      "comctl32",
33      "comdlg32",
34   }
3535end
3636
3737
r245577r245578
4040   description = "Minimum DirectInput version to support",
4141   allowed = {
4242      { "7",  "Support DirectInput 7 or later"  },
43      { "8",  "Support DirectInput 8 or later" },
43      { "8",  "Support DirectInput 8 or later" },
4444   },
4545}
4646
r245577r245578
4848   _OPTIONS["DIRECTINPUT"] = "8"
4949end
5050
51newoption {
52   trigger = "USE_SDL",
53   description = "Enable SDL sound output",
54   allowed = {
55      { "0",  "Disable SDL sound output"  },
56      { "1",  "Enable SDL sound output"   },
57   },
58}
5159
60if not _OPTIONS["USE_SDL"] then
61   _OPTIONS["USE_SDL"] = "0"
62end
63
64newoption {
65   trigger = "CYGWIN_BUILD",
66   description = "Build with Cygwin tools",
67   allowed = {
68      { "0",  "Build with MinGW tools"   },
69      { "1",  "Build with Cygwin tools"  },
70   },
71}
72
73if not _OPTIONS["CYGWIN_BUILD"] then
74   _OPTIONS["CYGWIN_BUILD"] = "0"
75end
76
77
78if _OPTIONS["CYGWIN_BUILD"] == "1" then
79   buildoptions {
80      "-mmo-cygwin",
81   }
82   linkoptions {
83      "-mno-cygwin",
84   }
85end
86
87
5288project ("osd_" .. _OPTIONS["osd"])
5389   uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
5490   kind "StaticLib"
r245577r245578
157193      MAME_DIR .. "src/osd/modules/lib/osdlib_win32.c",
158194   }
159195
160   if _OPTIONS["NOASM"]=="1" then
196   if _OPTIONS["NOASM"] == "1" then
161197      files {
162198         MAME_DIR .. "src/osd/modules/sync/work_mini.c",
163199      }
r245577r245578
187223         "ocore_" .. _OPTIONS["osd"],
188224      }
189225
190      includeosd()
191
226      includedirs {
227         MAME_DIR .. "src/osd",
228      }
229     
192230      files {
193231         MAME_DIR .. "src/osd/windows/ledutil.c",
194232      }
trunk/scripts/src/osd/windows_cfg.lua
r245577r245578
22   "UNICODE",
33   "_UNICODE",
44   "OSD_WINDOWS",
5   "USE_SDL=0",
65   "main=utf8_main",
76   "_WIN32_WINNT=0x0501",
87}
98
9configuration { "Debug" }
10   defines {
11      "MALLOC_DEBUG",
12   }
13
1014configuration { "vs*" }
1115   flags {
1216      "Unicode",
r245577r245578
2024      "OSD_NET_USE_PCAP",
2125   }
2226end
27
28if _OPTIONS["USE_SDL"]=="1" then
29   defines {
30      "SDLMAME_SDL2=0",
31      "USE_XINPUT=0",
32      "USE_SDL=1",
33      "USE_SDL_SOUND",
34   }
35else
36   defines {
37      "USE_SDL=0",
38   }
39end
trunk/scripts/src/sound.lua
r245577r245578
969969if (SOUNDS["VOTRAX"]~=null) then
970970   files {
971971      MAME_DIR .. "src/emu/sound/votrax.c",
972      MAME_DIR .. "src/emu/sound/samples.c",
973972   }
974973end
975974
trunk/scripts/src/tools.lua
r245577r245578
2121}
2222
2323includedirs {
24   MAME_DIR .. "src/osd",
2425   MAME_DIR .. "src/lib/util",
2526}
2627
27includeosd()
28
2928files {
3029   MAME_DIR .. "src/tools/romcmp.c",
3130}
r245577r245578
5554}
5655
5756includedirs {
57   MAME_DIR .. "src/osd",
5858   MAME_DIR .. "src/lib/util",
5959   MAME_DIR .. "3rdparty",
6060}
6161
62includeosd()
63
6462files {
6563   MAME_DIR .. "src/tools/chdman.c",
6664   MAME_DIR .. "src/version.c",
r245577r245578
8987}
9088
9189includedirs {
90   MAME_DIR .. "src/osd",
9291   MAME_DIR .. "src/lib/util",
9392}
9493
95includeosd()
96
9794files {
9895   MAME_DIR .. "src/tools/jedutil.c",
9996}
r245577r245578
125122}
126123
127124includedirs {
125   MAME_DIR .. "src/osd",
128126   MAME_DIR .. "src/emu",
129127   MAME_DIR .. "src/lib/util",
130128   MAME_DIR .. "3rdparty",
131129}
132130
133includeosd()
134
135131files {
136132   MAME_DIR .. "src/tools/unidasm.c",
137133}
r245577r245578
162158}
163159
164160includedirs {
161   MAME_DIR .. "src/osd",
165162   MAME_DIR .. "src/lib/util",
166163   MAME_DIR .. "3rdparty",
167164}
168165
169includeosd()
170
171166files {
172167   MAME_DIR .. "src/tools/ldresample.c",
173168}
r245577r245578
197192}
198193
199194includedirs {
195   MAME_DIR .. "src/osd",
200196   MAME_DIR .. "src/lib/util",
201197   MAME_DIR .. "3rdparty",
202198}
203199
204includeosd()
205
206200files {
207201   MAME_DIR .. "src/tools/ldverify.c",
208202}
r245577r245578
230224}
231225
232226includedirs {
227   MAME_DIR .. "src/osd",
233228   MAME_DIR .. "src/lib/util",
234229}
235230
236includeosd()
237
238231files {
239232   MAME_DIR .. "src/tools/regrep.c",
240233}
r245577r245578
262255}
263256
264257includedirs {
258   MAME_DIR .. "src/osd",
265259   MAME_DIR .. "src/lib/util",
266260}
267261
268includeosd()
269
270262files {
271263   MAME_DIR .. "src/tools/srcclean.c",
272264}
r245577r245578
294286}
295287
296288includedirs {
289   MAME_DIR .. "src/osd",
297290   MAME_DIR .. "src/lib/util",
298291}
299292
300includeosd()
301
302293files {
303294   MAME_DIR .. "src/tools/src2html.c",
304295}
r245577r245578
328319}
329320
330321includedirs {
322   MAME_DIR .. "src/osd",
331323   MAME_DIR .. "src/lib/util",
332324}
333325
334includeosd()
335
336326files {
337327   MAME_DIR .. "src/tools/split.c",
338328}
r245577r245578
360350}
361351
362352includedirs {
353   MAME_DIR .. "src/osd",
363354   MAME_DIR .. "src/lib/util",
364355}
365356
366includeosd()
367
368357files {
369358   MAME_DIR .. "src/tools/pngcmp.c",
370359}
r245577r245578
394383}
395384
396385includedirs {
386   MAME_DIR .. "src/osd",
397387   MAME_DIR .. "src/lib/util",
398388   MAME_DIR .. "src/emu",
399389}
400390
401includeosd()
402
403391files {
404392   MAME_DIR .. "src/tools/nltool.c",
405393}
r245577r245578
432420}
433421
434422includedirs {
423   MAME_DIR .. "src/osd",
435424   MAME_DIR .. "src/lib",   
436425   MAME_DIR .. "src/lib/util",
437426}
438427
439includeosd()
440
441428files {
442429   MAME_DIR .. "src/mess/tools/castool/main.c",
443430}
r245577r245578
469456}
470457
471458includedirs {
459   MAME_DIR .. "src/osd",
472460   MAME_DIR .. "src/lib",   
473461   MAME_DIR .. "src/lib/util",
474462}
475463
476includeosd()
477
478464files {
479465   MAME_DIR .. "src/mess/tools/floptool/main.c",
480466}
r245577r245578
506492}
507493
508494includedirs {
495   MAME_DIR .. "src/osd",
509496   MAME_DIR .. "src/lib",   
510497   MAME_DIR .. "src/lib/util",
511498   MAME_DIR .. "3rdparty/zlib",
512499   MAME_DIR .. "src/mess/tools/imgtool",   
513500}
514501
515includeosd()
516
517502files {
518503   MAME_DIR .. "src/mess/tools/imgtool/main.c",
519504   MAME_DIR .. "src/mess/tools/imgtool/stream.c",
trunk/scripts/target/ldplayer/ldplayer.lua
r245577r245578
6262   }
6363   
6464   includedirs {
65      MAME_DIR .. "src/osd",
6566      MAME_DIR .. "src/emu",
6667      MAME_DIR .. "src/mame",
6768      MAME_DIR .. "src/lib",
r245577r245578
7172      GEN_DIR  .. "mame/layout",
7273   }   
7374
74   includeosd()
75
7675   files{
7776      MAME_DIR .. "src/emu/drivers/emudummy.c",
7877   }
78
79   dependency {
80      { MAME_DIR .. "src/emu/drivers/emudummy.c", GEN_DIR .. "ldplayer/layout/pr8210.lh" },
81   }
82
83   custombuildtask {
84      layoutbuildtask("ldplayer/layout", "pr8210"),
85   }     
7986end
8087
8188function linkProjects_ldplayer_ldplayer(_target, _subtarget)
trunk/scripts/target/mame/mame.lua
r245577r245578
764764   }
765765   
766766   includedirs {
767      MAME_DIR .. "src/osd",
767768      MAME_DIR .. "src/emu",
768769      MAME_DIR .. "src/mame",
769770      MAME_DIR .. "src/lib",
r245577r245578
772773      MAME_DIR .. "3rdparty/zlib",
773774      GEN_DIR  .. "mame/layout",
774775   }
775
776   includeosd()
777776end
778777   
779778function createProjects_mame_mame(_target, _subtarget)
trunk/scripts/target/mame/tiny.lua
r245577r245578
8686   }
8787   
8888   includedirs {
89      MAME_DIR .. "src/osd",
8990      MAME_DIR .. "src/emu",
9091      MAME_DIR .. "src/mame",
9192      MAME_DIR .. "src/lib",
r245577r245578
9596      GEN_DIR  .. "mame/layout",
9697   }   
9798
98   includeosd()
99
10099   files{
101100      MAME_DIR .. "src/mame/machine/ticket.c",
102101      MAME_DIR .. "src/mame/drivers/carpolo.c",
r245577r245578
137136      MAME_DIR .. "src/mame/drivers/looping.c",
138137      MAME_DIR .. "src/mame/drivers/supertnk.c",
139138   }
139   
140   --------------------------------------------------
141   -- layout dependencies
142   --------------------------------------------------
143
144   dependency {
145      { MAME_DIR .. "src/mame/drivers/astrocde.c", GEN_DIR .. "mame/layout/gorf.lh" },
146      { MAME_DIR .. "src/mame/drivers/astrocde.c", GEN_DIR .. "mame/layout/seawolf2.lh" },
147      { MAME_DIR .. "src/mame/drivers/astrocde.c", GEN_DIR .. "mame/layout/spacezap.lh" },
148      { MAME_DIR .. "src/mame/drivers/astrocde.c", GEN_DIR .. "mame/layout/tenpindx.lh" },
149      { MAME_DIR .. "src/mame/drivers/circus.c", GEN_DIR .. "mame/layout/circus.lh" },
150      { MAME_DIR .. "src/mame/drivers/circus.c", GEN_DIR .. "mame/layout/crash.lh" },   
151   }
152
153   custombuildtask {
154      layoutbuildtask("mame/layout", "crash"),
155      layoutbuildtask("mame/layout", "circus"),
156      layoutbuildtask("mame/layout", "tenpindx"),
157      layoutbuildtask("mame/layout", "spacezap"),
158      layoutbuildtask("mame/layout", "seawolf2"),
159      layoutbuildtask("mame/layout", "gorf"),
160   }   
140161end
141162
142163function linkProjects_mame_tiny(_target, _subtarget)
trunk/scripts/target/mess/mess.lua
r245577r245578
856856   }
857857   
858858   includedirs {
859      MAME_DIR .. "src/osd",
859860      MAME_DIR .. "src/emu",
860861      MAME_DIR .. "src/mess",
861862      MAME_DIR .. "src/mame",
r245577r245578
865866      MAME_DIR .. "3rdparty/zlib",
866867      GEN_DIR  .. "mess/layout",
867868      GEN_DIR  .. "mame/layout",
868      GEN_DIR .. "emu/cpu/m68000",
869      MAME_DIR .. "src/emu/cpu/m68000",
869870   }
870
871   includeosd()
872871end
873872   
874873function createProjects_mess_mess(_target, _subtarget)
r245577r245578
25072506   MAME_DIR .. "src/mess/drivers/ymmu100.c",   
25082507   MAME_DIR .. "src/mess/drivers/fb01.c",     
25092508}
2509dependency {
2510   { MAME_DIR .. "src/mess/drivers/ymmu100.c",    GEN_DIR .. "mess/drivers/ymmu100.inc" },
2511}
2512custombuildtask {
2513   { MAME_DIR .. "src/mess/drivers/ymmu100.ppm", GEN_DIR .. "mess/drivers/ymmu100.inc",  {  MAME_DIR .. "src/build/file2str.py" }, {"@echo Converting src/drivers/ymmu100.ppm...", "python $(1) $(<) $(@) ymmu100_bkg UINT8" }},
2514}
25102515
25112516createMESSProjects(_target, _subtarget, "zenith")
25122517files {           
trunk/scripts/target/mess/tiny.lua
r245577r245578
1717   }
1818   
1919   includedirs {
20      MAME_DIR .. "src/osd",
2021      MAME_DIR .. "src/emu",
2122      MAME_DIR .. "src/mess",
2223      MAME_DIR .. "src/lib",
r245577r245578
2627      GEN_DIR  .. "mess/layout",
2728   }   
2829
29   includeosd()
30
3130   files{
3231      MAME_DIR .. "src/mess/drivers/coleco.c",
3332      MAME_DIR .. "src/mess/machine/coleco.c",
trunk/scripts/toolchain.lua
r245577r245578
4949}
5050
5151newoption {
52   trigger = "xcode",
53   value = "xcode_target",
54   description = "Choose XCode target",
55   allowed = {
56      { "osx", "OSX" },
57      { "ios", "iOS" },
58   }
59}
60
61newoption {
5262   trigger = "with-android",
5363   value   = "#",
5464   description = "Set Android platform version (default: android-14).",
r245577r245578
319329      if ("vs2013-xp") == _OPTIONS["vs"] then
320330         premake.vstudio.toolset = ("v120_xp")
321331         location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp")
332      end   
333   elseif _ACTION == "xcode4" then
334
335      if "osx" == _OPTIONS["xcode"] then
336         premake.xcode.toolset = "macosx"
337         location (path.join(_buildDir, "projects", _ACTION .. "-osx"))
338
339      elseif "ios" == _OPTIONS["xcode"] then
340         premake.xcode.toolset = "iphoneos"
341         location (path.join(_buildDir, "projects", _ACTION .. "-ios"))
322342      end
323343   end
324344
r245577r245578
469489      objdir (_buildDir .. "android-arm" .. "/obj")
470490         libdirs {
471491            "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a",
492            "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib",
472493         }
473494         includedirs {
474495            "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include",
496            "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/include",
475497         }
476498         buildoptions {
477            "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
478499            "-mthumb",
479500            "-march=armv7-a",
480501            "-mfloat-abi=softfp",
r245577r245578
483504            "-Wundef",
484505         }
485506         linkoptions {
486            "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
487507            "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o",
488508            "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o",
489509            "-march=armv7-a",
r245577r245578
495515      objdir (_buildDir .. "android-mips" .. "/obj")
496516      libdirs {
497517         "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips",
518         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/",
498519      }
499520      includedirs {
500521         "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips/include",
522         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/include",
501523      }
502524      buildoptions {
503         "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips",
504525         "-Wunused-value",
505526         "-Wundef",
506527      }
507528      linkoptions {
508         "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips",
509529         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtbegin_so.o",
510530         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtend_so.o",
511531      }
r245577r245578
515535      objdir (_buildDir .. "android-x86" .. "/obj")
516536      libdirs {
517537         "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86",
538         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib",
518539      }
519540      includedirs {
520541         "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86/include",
542         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/include",
521543      }
522544      buildoptions {
523         "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
524545         "-march=i686",
525546         "-mtune=atom",
526547         "-mstackrealign",
r245577r245578
530551         "-Wundef",
531552      }
532553      linkoptions {
533         "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
534554         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o",
535555         "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o",
536556      }
trunk/src/emu/attotime.h
r245577r245578
9797      : seconds(secs),
9898         attoseconds(attos) { }
9999
100   attotime(const attotime& that)
101      : seconds(that.seconds),
102         attoseconds(that.attoseconds) { }
103
104   // assignment
105   attotime& operator=(const attotime& that)
106   {
107      this->seconds = that.seconds;
108      this->attoseconds = that.attoseconds;
109      return *this;
110   }
111
100112   // queries
101113   bool is_zero() const { return (seconds == 0 && attoseconds == 0); }
102114   bool is_never() const { return (seconds >= ATTOTIME_MAX_SECONDS); }
trunk/src/emu/bus/nes/nes_pcb.inc
r245577r245578
312312   { "unl_dance",        UNSUPPORTED_BOARD },
313313   { "bmc_hik_kof",      UNSUPPORTED_BOARD },
314314   { "onebus",           UNSUPPORTED_BOARD },
315   { "coolboy",           UNSUPPORTED_BOARD },
315   { "coolboy",          UNSUPPORTED_BOARD },
316   { "btl_900218",       UNSUPPORTED_BOARD },   // pirate The Lord of King, to be emulated soon
316317   { "a9746",            UNSUPPORTED_BOARD },
317318   { "dance2k",          UNSUPPORTED_BOARD },
318319   { "pec586",           UNSUPPORTED_BOARD },
trunk/src/emu/cpu/m68000/m68kops.c
r0r245578
1#include "emu.h"
2#include "m68kcpu.h"
3extern void m68040_fpu_op0(m68000_base_device *m68k);
4extern void m68040_fpu_op1(m68000_base_device *m68k);
5extern void m68881_mmu_ops(m68000_base_device *m68k);
6extern void m68881_ftrap(m68000_base_device *m68k);
7
8/* ======================================================================== */
9/* ========================= INSTRUCTION HANDLERS ========================= */
10/* ======================================================================== */
11
12
13void m68000_base_device_ops::m68k_op_1010(m68000_base_device* mc68kcpu)
14{
15   m68ki_exception_1010(mc68kcpu);
16}
17
18
19void m68000_base_device_ops::m68k_op_1111(m68000_base_device* mc68kcpu)
20{
21   m68ki_exception_1111(mc68kcpu);
22}
23
24
25void m68000_base_device_ops::m68k_op_040fpu0_32(m68000_base_device* mc68kcpu)
26{
27   if((mc68kcpu)->has_fpu)
28   {
29      m68040_fpu_op0(mc68kcpu);
30      return;
31   }
32   m68ki_exception_1111(mc68kcpu);
33}
34
35
36void m68000_base_device_ops::m68k_op_040fpu1_32(m68000_base_device* mc68kcpu)
37{
38   if((mc68kcpu)->has_fpu)
39   {
40      m68040_fpu_op1(mc68kcpu);
41      return;
42   }
43   m68ki_exception_1111(mc68kcpu);
44}
45
46
47void m68000_base_device_ops::m68k_op_abcd_8_rr(m68000_base_device* mc68kcpu)
48{
49   UINT32* r_dst = &DX(mc68kcpu);
50   UINT32 src = DY(mc68kcpu);
51   UINT32 dst = *r_dst;
52   UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
53
54   (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
55
56   if(res > 9)
57      res += 6;
58   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
59   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
60   if((mc68kcpu)->c_flag)
61      res -= 0xa0;
62
63   (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
64   (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
65
66   res = MASK_OUT_ABOVE_8(res);
67   (mc68kcpu)->not_z_flag |= res;
68
69   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
70}
71
72
73void m68000_base_device_ops::m68k_op_abcd_8_mm_ax7(m68000_base_device* mc68kcpu)
74{
75   UINT32 src = OPER_AY_PD_8(mc68kcpu);
76   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
77   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
78   UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
79
80   (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
81
82   if(res > 9)
83      res += 6;
84   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
85   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
86   if((mc68kcpu)->c_flag)
87      res -= 0xa0;
88
89   (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
90   (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
91
92   res = MASK_OUT_ABOVE_8(res);
93   (mc68kcpu)->not_z_flag |= res;
94
95   m68ki_write_8((mc68kcpu), ea, res);
96}
97
98
99void m68000_base_device_ops::m68k_op_abcd_8_mm_ay7(m68000_base_device* mc68kcpu)
100{
101   UINT32 src = OPER_A7_PD_8(mc68kcpu);
102   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
103   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
104   UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
105
106   (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
107
108   if(res > 9)
109      res += 6;
110   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
111   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
112   if((mc68kcpu)->c_flag)
113      res -= 0xa0;
114
115   (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
116   (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
117
118   res = MASK_OUT_ABOVE_8(res);
119   (mc68kcpu)->not_z_flag |= res;
120
121   m68ki_write_8((mc68kcpu), ea, res);
122}
123
124
125void m68000_base_device_ops::m68k_op_abcd_8_mm_axy7(m68000_base_device* mc68kcpu)
126{
127   UINT32 src = OPER_A7_PD_8(mc68kcpu);
128   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
129   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
130   UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
131
132   (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
133
134   if(res > 9)
135      res += 6;
136   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
137   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
138   if((mc68kcpu)->c_flag)
139      res -= 0xa0;
140
141   (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
142   (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
143
144   res = MASK_OUT_ABOVE_8(res);
145   (mc68kcpu)->not_z_flag |= res;
146
147   m68ki_write_8((mc68kcpu), ea, res);
148}
149
150
151void m68000_base_device_ops::m68k_op_abcd_8_mm(m68000_base_device* mc68kcpu)
152{
153   UINT32 src = OPER_AY_PD_8(mc68kcpu);
154   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
155   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
156   UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
157
158   (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
159
160   if(res > 9)
161      res += 6;
162   res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
163   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
164   if((mc68kcpu)->c_flag)
165      res -= 0xa0;
166
167   (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
168   (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
169
170   res = MASK_OUT_ABOVE_8(res);
171   (mc68kcpu)->not_z_flag |= res;
172
173   m68ki_write_8((mc68kcpu), ea, res);
174}
175
176
177void m68000_base_device_ops::m68k_op_add_8_er_d(m68000_base_device* mc68kcpu)
178{
179   UINT32* r_dst = &DX(mc68kcpu);
180   UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
181   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
182   UINT32 res = src + dst;
183
184   (mc68kcpu)->n_flag = NFLAG_8(res);
185   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
186   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
187   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
188
189   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
190}
191
192
193void m68000_base_device_ops::m68k_op_add_8_er_ai(m68000_base_device* mc68kcpu)
194{
195   UINT32* r_dst = &DX(mc68kcpu);
196   UINT32 src = OPER_AY_AI_8(mc68kcpu);
197   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
198   UINT32 res = src + dst;
199
200   (mc68kcpu)->n_flag = NFLAG_8(res);
201   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
202   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
203   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
204
205   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
206}
207
208
209void m68000_base_device_ops::m68k_op_add_8_er_pi(m68000_base_device* mc68kcpu)
210{
211   UINT32* r_dst = &DX(mc68kcpu);
212   UINT32 src = OPER_AY_PI_8(mc68kcpu);
213   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
214   UINT32 res = src + dst;
215
216   (mc68kcpu)->n_flag = NFLAG_8(res);
217   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
218   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
219   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
220
221   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
222}
223
224
225void m68000_base_device_ops::m68k_op_add_8_er_pi7(m68000_base_device* mc68kcpu)
226{
227   UINT32* r_dst = &DX(mc68kcpu);
228   UINT32 src = OPER_A7_PI_8(mc68kcpu);
229   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
230   UINT32 res = src + dst;
231
232   (mc68kcpu)->n_flag = NFLAG_8(res);
233   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
234   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
235   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
236
237   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
238}
239
240
241void m68000_base_device_ops::m68k_op_add_8_er_pd(m68000_base_device* mc68kcpu)
242{
243   UINT32* r_dst = &DX(mc68kcpu);
244   UINT32 src = OPER_AY_PD_8(mc68kcpu);
245   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
246   UINT32 res = src + dst;
247
248   (mc68kcpu)->n_flag = NFLAG_8(res);
249   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
250   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
251   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
252
253   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
254}
255
256
257void m68000_base_device_ops::m68k_op_add_8_er_pd7(m68000_base_device* mc68kcpu)
258{
259   UINT32* r_dst = &DX(mc68kcpu);
260   UINT32 src = OPER_A7_PD_8(mc68kcpu);
261   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
262   UINT32 res = src + dst;
263
264   (mc68kcpu)->n_flag = NFLAG_8(res);
265   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
266   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
267   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
268
269   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
270}
271
272
273void m68000_base_device_ops::m68k_op_add_8_er_di(m68000_base_device* mc68kcpu)
274{
275   UINT32* r_dst = &DX(mc68kcpu);
276   UINT32 src = OPER_AY_DI_8(mc68kcpu);
277   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
278   UINT32 res = src + dst;
279
280   (mc68kcpu)->n_flag = NFLAG_8(res);
281   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
282   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
283   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
284
285   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
286}
287
288
289void m68000_base_device_ops::m68k_op_add_8_er_ix(m68000_base_device* mc68kcpu)
290{
291   UINT32* r_dst = &DX(mc68kcpu);
292   UINT32 src = OPER_AY_IX_8(mc68kcpu);
293   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
294   UINT32 res = src + dst;
295
296   (mc68kcpu)->n_flag = NFLAG_8(res);
297   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
298   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
299   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
300
301   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
302}
303
304
305void m68000_base_device_ops::m68k_op_add_8_er_aw(m68000_base_device* mc68kcpu)
306{
307   UINT32* r_dst = &DX(mc68kcpu);
308   UINT32 src = OPER_AW_8(mc68kcpu);
309   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
310   UINT32 res = src + dst;
311
312   (mc68kcpu)->n_flag = NFLAG_8(res);
313   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
314   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
315   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
316
317   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
318}
319
320
321void m68000_base_device_ops::m68k_op_add_8_er_al(m68000_base_device* mc68kcpu)
322{
323   UINT32* r_dst = &DX(mc68kcpu);
324   UINT32 src = OPER_AL_8(mc68kcpu);
325   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
326   UINT32 res = src + dst;
327
328   (mc68kcpu)->n_flag = NFLAG_8(res);
329   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
330   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
331   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
332
333   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
334}
335
336
337void m68000_base_device_ops::m68k_op_add_8_er_pcdi(m68000_base_device* mc68kcpu)
338{
339   UINT32* r_dst = &DX(mc68kcpu);
340   UINT32 src = OPER_PCDI_8(mc68kcpu);
341   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
342   UINT32 res = src + dst;
343
344   (mc68kcpu)->n_flag = NFLAG_8(res);
345   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
346   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
347   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
348
349   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
350}
351
352
353void m68000_base_device_ops::m68k_op_add_8_er_pcix(m68000_base_device* mc68kcpu)
354{
355   UINT32* r_dst = &DX(mc68kcpu);
356   UINT32 src = OPER_PCIX_8(mc68kcpu);
357   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
358   UINT32 res = src + dst;
359
360   (mc68kcpu)->n_flag = NFLAG_8(res);
361   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
362   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
363   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
364
365   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
366}
367
368
369void m68000_base_device_ops::m68k_op_add_8_er_i(m68000_base_device* mc68kcpu)
370{
371   UINT32* r_dst = &DX(mc68kcpu);
372   UINT32 src = OPER_I_8(mc68kcpu);
373   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
374   UINT32 res = src + dst;
375
376   (mc68kcpu)->n_flag = NFLAG_8(res);
377   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
378   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
379   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
380
381   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
382}
383
384
385void m68000_base_device_ops::m68k_op_add_16_er_d(m68000_base_device* mc68kcpu)
386{
387   UINT32* r_dst = &DX(mc68kcpu);
388   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
389   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
390   UINT32 res = src + dst;
391
392   (mc68kcpu)->n_flag = NFLAG_16(res);
393   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
394   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
395   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
396
397   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
398}
399
400
401void m68000_base_device_ops::m68k_op_add_16_er_a(m68000_base_device* mc68kcpu)
402{
403   UINT32* r_dst = &DX(mc68kcpu);
404   UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
405   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
406   UINT32 res = src + dst;
407
408   (mc68kcpu)->n_flag = NFLAG_16(res);
409   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
410   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
411   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
412
413   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
414}
415
416
417void m68000_base_device_ops::m68k_op_add_16_er_ai(m68000_base_device* mc68kcpu)
418{
419   UINT32* r_dst = &DX(mc68kcpu);
420   UINT32 src = OPER_AY_AI_16(mc68kcpu);
421   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
422   UINT32 res = src + dst;
423
424   (mc68kcpu)->n_flag = NFLAG_16(res);
425   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
426   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
427   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
428
429   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
430}
431
432
433void m68000_base_device_ops::m68k_op_add_16_er_pi(m68000_base_device* mc68kcpu)
434{
435   UINT32* r_dst = &DX(mc68kcpu);
436   UINT32 src = OPER_AY_PI_16(mc68kcpu);
437   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
438   UINT32 res = src + dst;
439
440   (mc68kcpu)->n_flag = NFLAG_16(res);
441   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
442   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
443   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
444
445   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
446}
447
448
449void m68000_base_device_ops::m68k_op_add_16_er_pd(m68000_base_device* mc68kcpu)
450{
451   UINT32* r_dst = &DX(mc68kcpu);
452   UINT32 src = OPER_AY_PD_16(mc68kcpu);
453   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
454   UINT32 res = src + dst;
455
456   (mc68kcpu)->n_flag = NFLAG_16(res);
457   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
458   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
459   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
460
461   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
462}
463
464
465void m68000_base_device_ops::m68k_op_add_16_er_di(m68000_base_device* mc68kcpu)
466{
467   UINT32* r_dst = &DX(mc68kcpu);
468   UINT32 src = OPER_AY_DI_16(mc68kcpu);
469   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
470   UINT32 res = src + dst;
471
472   (mc68kcpu)->n_flag = NFLAG_16(res);
473   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
474   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
475   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
476
477   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
478}
479
480
481void m68000_base_device_ops::m68k_op_add_16_er_ix(m68000_base_device* mc68kcpu)
482{
483   UINT32* r_dst = &DX(mc68kcpu);
484   UINT32 src = OPER_AY_IX_16(mc68kcpu);
485   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
486   UINT32 res = src + dst;
487
488   (mc68kcpu)->n_flag = NFLAG_16(res);
489   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
490   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
491   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
492
493   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
494}
495
496
497void m68000_base_device_ops::m68k_op_add_16_er_aw(m68000_base_device* mc68kcpu)
498{
499   UINT32* r_dst = &DX(mc68kcpu);
500   UINT32 src = OPER_AW_16(mc68kcpu);
501   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
502   UINT32 res = src + dst;
503
504   (mc68kcpu)->n_flag = NFLAG_16(res);
505   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
506   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
507   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
508
509   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
510}
511
512
513void m68000_base_device_ops::m68k_op_add_16_er_al(m68000_base_device* mc68kcpu)
514{
515   UINT32* r_dst = &DX(mc68kcpu);
516   UINT32 src = OPER_AL_16(mc68kcpu);
517   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
518   UINT32 res = src + dst;
519
520   (mc68kcpu)->n_flag = NFLAG_16(res);
521   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
522   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
523   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
524
525   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
526}
527
528
529void m68000_base_device_ops::m68k_op_add_16_er_pcdi(m68000_base_device* mc68kcpu)
530{
531   UINT32* r_dst = &DX(mc68kcpu);
532   UINT32 src = OPER_PCDI_16(mc68kcpu);
533   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
534   UINT32 res = src + dst;
535
536   (mc68kcpu)->n_flag = NFLAG_16(res);
537   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
538   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
539   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
540
541   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
542}
543
544
545void m68000_base_device_ops::m68k_op_add_16_er_pcix(m68000_base_device* mc68kcpu)
546{
547   UINT32* r_dst = &DX(mc68kcpu);
548   UINT32 src = OPER_PCIX_16(mc68kcpu);
549   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
550   UINT32 res = src + dst;
551
552   (mc68kcpu)->n_flag = NFLAG_16(res);
553   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
554   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
555   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
556
557   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
558}
559
560
561void m68000_base_device_ops::m68k_op_add_16_er_i(m68000_base_device* mc68kcpu)
562{
563   UINT32* r_dst = &DX(mc68kcpu);
564   UINT32 src = OPER_I_16(mc68kcpu);
565   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
566   UINT32 res = src + dst;
567
568   (mc68kcpu)->n_flag = NFLAG_16(res);
569   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
570   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
571   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
572
573   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
574}
575
576
577void m68000_base_device_ops::m68k_op_add_32_er_d(m68000_base_device* mc68kcpu)
578{
579   UINT32* r_dst = &DX(mc68kcpu);
580   UINT32 src = DY(mc68kcpu);
581   UINT32 dst = *r_dst;
582   UINT32 res = src + dst;
583
584   (mc68kcpu)->n_flag = NFLAG_32(res);
585   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
586   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
587   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
588
589   *r_dst = (mc68kcpu)->not_z_flag;
590}
591
592
593void m68000_base_device_ops::m68k_op_add_32_er_a(m68000_base_device* mc68kcpu)
594{
595   UINT32* r_dst = &DX(mc68kcpu);
596   UINT32 src = AY(mc68kcpu);
597   UINT32 dst = *r_dst;
598   UINT32 res = src + dst;
599
600   (mc68kcpu)->n_flag = NFLAG_32(res);
601   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
602   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
603   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
604
605   *r_dst = (mc68kcpu)->not_z_flag;
606}
607
608
609void m68000_base_device_ops::m68k_op_add_32_er_ai(m68000_base_device* mc68kcpu)
610{
611   UINT32* r_dst = &DX(mc68kcpu);
612   UINT32 src = OPER_AY_AI_32(mc68kcpu);
613   UINT32 dst = *r_dst;
614   UINT32 res = src + dst;
615
616   (mc68kcpu)->n_flag = NFLAG_32(res);
617   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
618   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
619   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
620
621   *r_dst = (mc68kcpu)->not_z_flag;
622}
623
624
625void m68000_base_device_ops::m68k_op_add_32_er_pi(m68000_base_device* mc68kcpu)
626{
627   UINT32* r_dst = &DX(mc68kcpu);
628   UINT32 src = OPER_AY_PI_32(mc68kcpu);
629   UINT32 dst = *r_dst;
630   UINT32 res = src + dst;
631
632   (mc68kcpu)->n_flag = NFLAG_32(res);
633   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
634   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
635   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
636
637   *r_dst = (mc68kcpu)->not_z_flag;
638}
639
640
641void m68000_base_device_ops::m68k_op_add_32_er_pd(m68000_base_device* mc68kcpu)
642{
643   UINT32* r_dst = &DX(mc68kcpu);
644   UINT32 src = OPER_AY_PD_32(mc68kcpu);
645   UINT32 dst = *r_dst;
646   UINT32 res = src + dst;
647
648   (mc68kcpu)->n_flag = NFLAG_32(res);
649   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
650   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
651   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
652
653   *r_dst = (mc68kcpu)->not_z_flag;
654}
655
656
657void m68000_base_device_ops::m68k_op_add_32_er_di(m68000_base_device* mc68kcpu)
658{
659   UINT32* r_dst = &DX(mc68kcpu);
660   UINT32 src = OPER_AY_DI_32(mc68kcpu);
661   UINT32 dst = *r_dst;
662   UINT32 res = src + dst;
663
664   (mc68kcpu)->n_flag = NFLAG_32(res);
665   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
666   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
667   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
668
669   *r_dst = (mc68kcpu)->not_z_flag;
670}
671
672
673void m68000_base_device_ops::m68k_op_add_32_er_ix(m68000_base_device* mc68kcpu)
674{
675   UINT32* r_dst = &DX(mc68kcpu);
676   UINT32 src = OPER_AY_IX_32(mc68kcpu);
677   UINT32 dst = *r_dst;
678   UINT32 res = src + dst;
679
680   (mc68kcpu)->n_flag = NFLAG_32(res);
681   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
682   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
683   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
684
685   *r_dst = (mc68kcpu)->not_z_flag;
686}
687
688
689void m68000_base_device_ops::m68k_op_add_32_er_aw(m68000_base_device* mc68kcpu)
690{
691   UINT32* r_dst = &DX(mc68kcpu);
692   UINT32 src = OPER_AW_32(mc68kcpu);
693   UINT32 dst = *r_dst;
694   UINT32 res = src + dst;
695
696   (mc68kcpu)->n_flag = NFLAG_32(res);
697   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
698   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
699   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
700
701   *r_dst = (mc68kcpu)->not_z_flag;
702}
703
704
705void m68000_base_device_ops::m68k_op_add_32_er_al(m68000_base_device* mc68kcpu)
706{
707   UINT32* r_dst = &DX(mc68kcpu);
708   UINT32 src = OPER_AL_32(mc68kcpu);
709   UINT32 dst = *r_dst;
710   UINT32 res = src + dst;
711
712   (mc68kcpu)->n_flag = NFLAG_32(res);
713   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
714   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
715   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
716
717   *r_dst = (mc68kcpu)->not_z_flag;
718}
719
720
721void m68000_base_device_ops::m68k_op_add_32_er_pcdi(m68000_base_device* mc68kcpu)
722{
723   UINT32* r_dst = &DX(mc68kcpu);
724   UINT32 src = OPER_PCDI_32(mc68kcpu);
725   UINT32 dst = *r_dst;
726   UINT32 res = src + dst;
727
728   (mc68kcpu)->n_flag = NFLAG_32(res);
729   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
730   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
731   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
732
733   *r_dst = (mc68kcpu)->not_z_flag;
734}
735
736
737void m68000_base_device_ops::m68k_op_add_32_er_pcix(m68000_base_device* mc68kcpu)
738{
739   UINT32* r_dst = &DX(mc68kcpu);
740   UINT32 src = OPER_PCIX_32(mc68kcpu);
741   UINT32 dst = *r_dst;
742   UINT32 res = src + dst;
743
744   (mc68kcpu)->n_flag = NFLAG_32(res);
745   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
746   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
747   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
748
749   *r_dst = (mc68kcpu)->not_z_flag;
750}
751
752
753void m68000_base_device_ops::m68k_op_add_32_er_i(m68000_base_device* mc68kcpu)
754{
755   UINT32* r_dst = &DX(mc68kcpu);
756   UINT32 src = OPER_I_32(mc68kcpu);
757   UINT32 dst = *r_dst;
758   UINT32 res = src + dst;
759
760   (mc68kcpu)->n_flag = NFLAG_32(res);
761   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
762   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
763   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
764
765   *r_dst = (mc68kcpu)->not_z_flag;
766}
767
768
769void m68000_base_device_ops::m68k_op_add_8_re_ai(m68000_base_device* mc68kcpu)
770{
771   UINT32 ea = EA_AY_AI_8(mc68kcpu);
772   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
773   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
774   UINT32 res = src + dst;
775
776   (mc68kcpu)->n_flag = NFLAG_8(res);
777   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
778   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
779   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
780
781   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
782}
783
784
785void m68000_base_device_ops::m68k_op_add_8_re_pi(m68000_base_device* mc68kcpu)
786{
787   UINT32 ea = EA_AY_PI_8(mc68kcpu);
788   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
789   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
790   UINT32 res = src + dst;
791
792   (mc68kcpu)->n_flag = NFLAG_8(res);
793   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
794   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
795   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
796
797   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
798}
799
800
801void m68000_base_device_ops::m68k_op_add_8_re_pi7(m68000_base_device* mc68kcpu)
802{
803   UINT32 ea = EA_A7_PI_8(mc68kcpu);
804   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
805   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
806   UINT32 res = src + dst;
807
808   (mc68kcpu)->n_flag = NFLAG_8(res);
809   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
810   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
811   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
812
813   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
814}
815
816
817void m68000_base_device_ops::m68k_op_add_8_re_pd(m68000_base_device* mc68kcpu)
818{
819   UINT32 ea = EA_AY_PD_8(mc68kcpu);
820   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
821   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
822   UINT32 res = src + dst;
823
824   (mc68kcpu)->n_flag = NFLAG_8(res);
825   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
826   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
827   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
828
829   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
830}
831
832
833void m68000_base_device_ops::m68k_op_add_8_re_pd7(m68000_base_device* mc68kcpu)
834{
835   UINT32 ea = EA_A7_PD_8(mc68kcpu);
836   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
837   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
838   UINT32 res = src + dst;
839
840   (mc68kcpu)->n_flag = NFLAG_8(res);
841   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
842   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
843   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
844
845   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
846}
847
848
849void m68000_base_device_ops::m68k_op_add_8_re_di(m68000_base_device* mc68kcpu)
850{
851   UINT32 ea = EA_AY_DI_8(mc68kcpu);
852   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
853   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
854   UINT32 res = src + dst;
855
856   (mc68kcpu)->n_flag = NFLAG_8(res);
857   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
858   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
859   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
860
861   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
862}
863
864
865void m68000_base_device_ops::m68k_op_add_8_re_ix(m68000_base_device* mc68kcpu)
866{
867   UINT32 ea = EA_AY_IX_8(mc68kcpu);
868   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
869   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
870   UINT32 res = src + dst;
871
872   (mc68kcpu)->n_flag = NFLAG_8(res);
873   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
874   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
875   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
876
877   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
878}
879
880
881void m68000_base_device_ops::m68k_op_add_8_re_aw(m68000_base_device* mc68kcpu)
882{
883   UINT32 ea = EA_AW_8(mc68kcpu);
884   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
885   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
886   UINT32 res = src + dst;
887
888   (mc68kcpu)->n_flag = NFLAG_8(res);
889   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
890   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
891   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
892
893   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
894}
895
896
897void m68000_base_device_ops::m68k_op_add_8_re_al(m68000_base_device* mc68kcpu)
898{
899   UINT32 ea = EA_AL_8(mc68kcpu);
900   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
901   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
902   UINT32 res = src + dst;
903
904   (mc68kcpu)->n_flag = NFLAG_8(res);
905   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
906   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
907   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
908
909   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
910}
911
912
913void m68000_base_device_ops::m68k_op_add_16_re_ai(m68000_base_device* mc68kcpu)
914{
915   UINT32 ea = EA_AY_AI_16(mc68kcpu);
916   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
917   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
918   UINT32 res = src + dst;
919
920   (mc68kcpu)->n_flag = NFLAG_16(res);
921   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
922   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
923   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
924
925   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
926}
927
928
929void m68000_base_device_ops::m68k_op_add_16_re_pi(m68000_base_device* mc68kcpu)
930{
931   UINT32 ea = EA_AY_PI_16(mc68kcpu);
932   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
933   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
934   UINT32 res = src + dst;
935
936   (mc68kcpu)->n_flag = NFLAG_16(res);
937   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
938   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
939   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
940
941   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
942}
943
944
945void m68000_base_device_ops::m68k_op_add_16_re_pd(m68000_base_device* mc68kcpu)
946{
947   UINT32 ea = EA_AY_PD_16(mc68kcpu);
948   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
949   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
950   UINT32 res = src + dst;
951
952   (mc68kcpu)->n_flag = NFLAG_16(res);
953   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
954   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
955   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
956
957   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
958}
959
960
961void m68000_base_device_ops::m68k_op_add_16_re_di(m68000_base_device* mc68kcpu)
962{
963   UINT32 ea = EA_AY_DI_16(mc68kcpu);
964   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
965   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
966   UINT32 res = src + dst;
967
968   (mc68kcpu)->n_flag = NFLAG_16(res);
969   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
970   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
971   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
972
973   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
974}
975
976
977void m68000_base_device_ops::m68k_op_add_16_re_ix(m68000_base_device* mc68kcpu)
978{
979   UINT32 ea = EA_AY_IX_16(mc68kcpu);
980   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
981   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
982   UINT32 res = src + dst;
983
984   (mc68kcpu)->n_flag = NFLAG_16(res);
985   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
986   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
987   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
988
989   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
990}
991
992
993void m68000_base_device_ops::m68k_op_add_16_re_aw(m68000_base_device* mc68kcpu)
994{
995   UINT32 ea = EA_AW_16(mc68kcpu);
996   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
997   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
998   UINT32 res = src + dst;
999
1000   (mc68kcpu)->n_flag = NFLAG_16(res);
1001   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1002   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1003   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1004
1005   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1006}
1007
1008
1009void m68000_base_device_ops::m68k_op_add_16_re_al(m68000_base_device* mc68kcpu)
1010{
1011   UINT32 ea = EA_AL_16(mc68kcpu);
1012   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
1013   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1014   UINT32 res = src + dst;
1015
1016   (mc68kcpu)->n_flag = NFLAG_16(res);
1017   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1018   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1019   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1020
1021   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1022}
1023
1024
1025void m68000_base_device_ops::m68k_op_add_32_re_ai(m68000_base_device* mc68kcpu)
1026{
1027   UINT32 ea = EA_AY_AI_32(mc68kcpu);
1028   UINT32 src = DX(mc68kcpu);
1029   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1030   UINT32 res = src + dst;
1031
1032   (mc68kcpu)->n_flag = NFLAG_32(res);
1033   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1034   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1035   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1036
1037   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1038}
1039
1040
1041void m68000_base_device_ops::m68k_op_add_32_re_pi(m68000_base_device* mc68kcpu)
1042{
1043   UINT32 ea = EA_AY_PI_32(mc68kcpu);
1044   UINT32 src = DX(mc68kcpu);
1045   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1046   UINT32 res = src + dst;
1047
1048   (mc68kcpu)->n_flag = NFLAG_32(res);
1049   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1050   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1051   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1052
1053   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1054}
1055
1056
1057void m68000_base_device_ops::m68k_op_add_32_re_pd(m68000_base_device* mc68kcpu)
1058{
1059   UINT32 ea = EA_AY_PD_32(mc68kcpu);
1060   UINT32 src = DX(mc68kcpu);
1061   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1062   UINT32 res = src + dst;
1063
1064   (mc68kcpu)->n_flag = NFLAG_32(res);
1065   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1066   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1067   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1068
1069   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1070}
1071
1072
1073void m68000_base_device_ops::m68k_op_add_32_re_di(m68000_base_device* mc68kcpu)
1074{
1075   UINT32 ea = EA_AY_DI_32(mc68kcpu);
1076   UINT32 src = DX(mc68kcpu);
1077   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1078   UINT32 res = src + dst;
1079
1080   (mc68kcpu)->n_flag = NFLAG_32(res);
1081   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1082   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1083   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1084
1085   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1086}
1087
1088
1089void m68000_base_device_ops::m68k_op_add_32_re_ix(m68000_base_device* mc68kcpu)
1090{
1091   UINT32 ea = EA_AY_IX_32(mc68kcpu);
1092   UINT32 src = DX(mc68kcpu);
1093   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1094   UINT32 res = src + dst;
1095
1096   (mc68kcpu)->n_flag = NFLAG_32(res);
1097   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1098   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1099   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1100
1101   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1102}
1103
1104
1105void m68000_base_device_ops::m68k_op_add_32_re_aw(m68000_base_device* mc68kcpu)
1106{
1107   UINT32 ea = EA_AW_32(mc68kcpu);
1108   UINT32 src = DX(mc68kcpu);
1109   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1110   UINT32 res = src + dst;
1111
1112   (mc68kcpu)->n_flag = NFLAG_32(res);
1113   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1114   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1115   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1116
1117   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1118}
1119
1120
1121void m68000_base_device_ops::m68k_op_add_32_re_al(m68000_base_device* mc68kcpu)
1122{
1123   UINT32 ea = EA_AL_32(mc68kcpu);
1124   UINT32 src = DX(mc68kcpu);
1125   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1126   UINT32 res = src + dst;
1127
1128   (mc68kcpu)->n_flag = NFLAG_32(res);
1129   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1130   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1131   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1132
1133   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1134}
1135
1136
1137void m68000_base_device_ops::m68k_op_adda_16_d(m68000_base_device* mc68kcpu)
1138{
1139   UINT32* r_dst = &AX(mc68kcpu);
1140
1141   *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY(mc68kcpu)));
1142}
1143
1144
1145void m68000_base_device_ops::m68k_op_adda_16_a(m68000_base_device* mc68kcpu)
1146{
1147   UINT32* r_dst = &AX(mc68kcpu);
1148
1149   *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY(mc68kcpu)));
1150}
1151
1152
1153void m68000_base_device_ops::m68k_op_adda_16_ai(m68000_base_device* mc68kcpu)
1154{
1155   UINT32* r_dst = &AX(mc68kcpu);
1156   UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
1157
1158   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1159}
1160
1161
1162void m68000_base_device_ops::m68k_op_adda_16_pi(m68000_base_device* mc68kcpu)
1163{
1164   UINT32* r_dst = &AX(mc68kcpu);
1165   UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
1166
1167   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1168}
1169
1170
1171void m68000_base_device_ops::m68k_op_adda_16_pd(m68000_base_device* mc68kcpu)
1172{
1173   UINT32* r_dst = &AX(mc68kcpu);
1174   UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
1175
1176   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1177}
1178
1179
1180void m68000_base_device_ops::m68k_op_adda_16_di(m68000_base_device* mc68kcpu)
1181{
1182   UINT32* r_dst = &AX(mc68kcpu);
1183   UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
1184
1185   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1186}
1187
1188
1189void m68000_base_device_ops::m68k_op_adda_16_ix(m68000_base_device* mc68kcpu)
1190{
1191   UINT32* r_dst = &AX(mc68kcpu);
1192   UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
1193
1194   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1195}
1196
1197
1198void m68000_base_device_ops::m68k_op_adda_16_aw(m68000_base_device* mc68kcpu)
1199{
1200   UINT32* r_dst = &AX(mc68kcpu);
1201   UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
1202
1203   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1204}
1205
1206
1207void m68000_base_device_ops::m68k_op_adda_16_al(m68000_base_device* mc68kcpu)
1208{
1209   UINT32* r_dst = &AX(mc68kcpu);
1210   UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
1211
1212   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1213}
1214
1215
1216void m68000_base_device_ops::m68k_op_adda_16_pcdi(m68000_base_device* mc68kcpu)
1217{
1218   UINT32* r_dst = &AX(mc68kcpu);
1219   UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
1220
1221   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1222}
1223
1224
1225void m68000_base_device_ops::m68k_op_adda_16_pcix(m68000_base_device* mc68kcpu)
1226{
1227   UINT32* r_dst = &AX(mc68kcpu);
1228   UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
1229
1230   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1231}
1232
1233
1234void m68000_base_device_ops::m68k_op_adda_16_i(m68000_base_device* mc68kcpu)
1235{
1236   UINT32* r_dst = &AX(mc68kcpu);
1237   UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
1238
1239   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1240}
1241
1242
1243void m68000_base_device_ops::m68k_op_adda_32_d(m68000_base_device* mc68kcpu)
1244{
1245   UINT32* r_dst = &AX(mc68kcpu);
1246
1247   *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY(mc68kcpu));
1248}
1249
1250
1251void m68000_base_device_ops::m68k_op_adda_32_a(m68000_base_device* mc68kcpu)
1252{
1253   UINT32* r_dst = &AX(mc68kcpu);
1254
1255   *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY(mc68kcpu));
1256}
1257
1258
1259void m68000_base_device_ops::m68k_op_adda_32_ai(m68000_base_device* mc68kcpu)
1260{
1261   UINT32* r_dst = &AX(mc68kcpu);
1262   UINT32 src = OPER_AY_AI_32(mc68kcpu);
1263
1264   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1265}
1266
1267
1268void m68000_base_device_ops::m68k_op_adda_32_pi(m68000_base_device* mc68kcpu)
1269{
1270   UINT32* r_dst = &AX(mc68kcpu);
1271   UINT32 src = OPER_AY_PI_32(mc68kcpu);
1272
1273   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1274}
1275
1276
1277void m68000_base_device_ops::m68k_op_adda_32_pd(m68000_base_device* mc68kcpu)
1278{
1279   UINT32* r_dst = &AX(mc68kcpu);
1280   UINT32 src = OPER_AY_PD_32(mc68kcpu);
1281
1282   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1283}
1284
1285
1286void m68000_base_device_ops::m68k_op_adda_32_di(m68000_base_device* mc68kcpu)
1287{
1288   UINT32* r_dst = &AX(mc68kcpu);
1289   UINT32 src = OPER_AY_DI_32(mc68kcpu);
1290
1291   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1292}
1293
1294
1295void m68000_base_device_ops::m68k_op_adda_32_ix(m68000_base_device* mc68kcpu)
1296{
1297   UINT32* r_dst = &AX(mc68kcpu);
1298   UINT32 src = OPER_AY_IX_32(mc68kcpu);
1299
1300   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1301}
1302
1303
1304void m68000_base_device_ops::m68k_op_adda_32_aw(m68000_base_device* mc68kcpu)
1305{
1306   UINT32* r_dst = &AX(mc68kcpu);
1307   UINT32 src = OPER_AW_32(mc68kcpu);
1308
1309   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1310}
1311
1312
1313void m68000_base_device_ops::m68k_op_adda_32_al(m68000_base_device* mc68kcpu)
1314{
1315   UINT32* r_dst = &AX(mc68kcpu);
1316   UINT32 src = OPER_AL_32(mc68kcpu);
1317
1318   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1319}
1320
1321
1322void m68000_base_device_ops::m68k_op_adda_32_pcdi(m68000_base_device* mc68kcpu)
1323{
1324   UINT32* r_dst = &AX(mc68kcpu);
1325   UINT32 src = OPER_PCDI_32(mc68kcpu);
1326
1327   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1328}
1329
1330
1331void m68000_base_device_ops::m68k_op_adda_32_pcix(m68000_base_device* mc68kcpu)
1332{
1333   UINT32* r_dst = &AX(mc68kcpu);
1334   UINT32 src = OPER_PCIX_32(mc68kcpu);
1335
1336   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1337}
1338
1339
1340void m68000_base_device_ops::m68k_op_adda_32_i(m68000_base_device* mc68kcpu)
1341{
1342   UINT32* r_dst = &AX(mc68kcpu);
1343   UINT32 src = OPER_I_32(mc68kcpu);
1344
1345   *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
1346}
1347
1348
1349void m68000_base_device_ops::m68k_op_addi_8_d(m68000_base_device* mc68kcpu)
1350{
1351   UINT32* r_dst = &DY(mc68kcpu);
1352   UINT32 src = OPER_I_8(mc68kcpu);
1353   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
1354   UINT32 res = src + dst;
1355
1356   (mc68kcpu)->n_flag = NFLAG_8(res);
1357   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1358   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1359   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1360
1361   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
1362}
1363
1364
1365void m68000_base_device_ops::m68k_op_addi_8_ai(m68000_base_device* mc68kcpu)
1366{
1367   UINT32 src = OPER_I_8(mc68kcpu);
1368   UINT32 ea = EA_AY_AI_8(mc68kcpu);
1369   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1370   UINT32 res = src + dst;
1371
1372   (mc68kcpu)->n_flag = NFLAG_8(res);
1373   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1374   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1375   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1376
1377   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1378}
1379
1380
1381void m68000_base_device_ops::m68k_op_addi_8_pi(m68000_base_device* mc68kcpu)
1382{
1383   UINT32 src = OPER_I_8(mc68kcpu);
1384   UINT32 ea = EA_AY_PI_8(mc68kcpu);
1385   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1386   UINT32 res = src + dst;
1387
1388   (mc68kcpu)->n_flag = NFLAG_8(res);
1389   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1390   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1391   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1392
1393   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1394}
1395
1396
1397void m68000_base_device_ops::m68k_op_addi_8_pi7(m68000_base_device* mc68kcpu)
1398{
1399   UINT32 src = OPER_I_8(mc68kcpu);
1400   UINT32 ea = EA_A7_PI_8(mc68kcpu);
1401   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1402   UINT32 res = src + dst;
1403
1404   (mc68kcpu)->n_flag = NFLAG_8(res);
1405   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1406   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1407   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1408
1409   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1410}
1411
1412
1413void m68000_base_device_ops::m68k_op_addi_8_pd(m68000_base_device* mc68kcpu)
1414{
1415   UINT32 src = OPER_I_8(mc68kcpu);
1416   UINT32 ea = EA_AY_PD_8(mc68kcpu);
1417   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1418   UINT32 res = src + dst;
1419
1420   (mc68kcpu)->n_flag = NFLAG_8(res);
1421   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1422   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1423   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1424
1425   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1426}
1427
1428
1429void m68000_base_device_ops::m68k_op_addi_8_pd7(m68000_base_device* mc68kcpu)
1430{
1431   UINT32 src = OPER_I_8(mc68kcpu);
1432   UINT32 ea = EA_A7_PD_8(mc68kcpu);
1433   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1434   UINT32 res = src + dst;
1435
1436   (mc68kcpu)->n_flag = NFLAG_8(res);
1437   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1438   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1439   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1440
1441   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1442}
1443
1444
1445void m68000_base_device_ops::m68k_op_addi_8_di(m68000_base_device* mc68kcpu)
1446{
1447   UINT32 src = OPER_I_8(mc68kcpu);
1448   UINT32 ea = EA_AY_DI_8(mc68kcpu);
1449   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1450   UINT32 res = src + dst;
1451
1452   (mc68kcpu)->n_flag = NFLAG_8(res);
1453   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1454   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1455   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1456
1457   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1458}
1459
1460
1461void m68000_base_device_ops::m68k_op_addi_8_ix(m68000_base_device* mc68kcpu)
1462{
1463   UINT32 src = OPER_I_8(mc68kcpu);
1464   UINT32 ea = EA_AY_IX_8(mc68kcpu);
1465   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1466   UINT32 res = src + dst;
1467
1468   (mc68kcpu)->n_flag = NFLAG_8(res);
1469   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1470   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1471   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1472
1473   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1474}
1475
1476
1477void m68000_base_device_ops::m68k_op_addi_8_aw(m68000_base_device* mc68kcpu)
1478{
1479   UINT32 src = OPER_I_8(mc68kcpu);
1480   UINT32 ea = EA_AW_8(mc68kcpu);
1481   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1482   UINT32 res = src + dst;
1483
1484   (mc68kcpu)->n_flag = NFLAG_8(res);
1485   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1486   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1487   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1488
1489   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1490}
1491
1492
1493void m68000_base_device_ops::m68k_op_addi_8_al(m68000_base_device* mc68kcpu)
1494{
1495   UINT32 src = OPER_I_8(mc68kcpu);
1496   UINT32 ea = EA_AL_8(mc68kcpu);
1497   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1498   UINT32 res = src + dst;
1499
1500   (mc68kcpu)->n_flag = NFLAG_8(res);
1501   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1502   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1503   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1504
1505   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1506}
1507
1508
1509void m68000_base_device_ops::m68k_op_addi_16_d(m68000_base_device* mc68kcpu)
1510{
1511   UINT32* r_dst = &DY(mc68kcpu);
1512   UINT32 src = OPER_I_16(mc68kcpu);
1513   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
1514   UINT32 res = src + dst;
1515
1516   (mc68kcpu)->n_flag = NFLAG_16(res);
1517   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1518   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1519   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1520
1521   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
1522}
1523
1524
1525void m68000_base_device_ops::m68k_op_addi_16_ai(m68000_base_device* mc68kcpu)
1526{
1527   UINT32 src = OPER_I_16(mc68kcpu);
1528   UINT32 ea = EA_AY_AI_16(mc68kcpu);
1529   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1530   UINT32 res = src + dst;
1531
1532   (mc68kcpu)->n_flag = NFLAG_16(res);
1533   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1534   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1535   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1536
1537   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1538}
1539
1540
1541void m68000_base_device_ops::m68k_op_addi_16_pi(m68000_base_device* mc68kcpu)
1542{
1543   UINT32 src = OPER_I_16(mc68kcpu);
1544   UINT32 ea = EA_AY_PI_16(mc68kcpu);
1545   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1546   UINT32 res = src + dst;
1547
1548   (mc68kcpu)->n_flag = NFLAG_16(res);
1549   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1550   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1551   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1552
1553   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1554}
1555
1556
1557void m68000_base_device_ops::m68k_op_addi_16_pd(m68000_base_device* mc68kcpu)
1558{
1559   UINT32 src = OPER_I_16(mc68kcpu);
1560   UINT32 ea = EA_AY_PD_16(mc68kcpu);
1561   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1562   UINT32 res = src + dst;
1563
1564   (mc68kcpu)->n_flag = NFLAG_16(res);
1565   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1566   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1567   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1568
1569   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1570}
1571
1572
1573void m68000_base_device_ops::m68k_op_addi_16_di(m68000_base_device* mc68kcpu)
1574{
1575   UINT32 src = OPER_I_16(mc68kcpu);
1576   UINT32 ea = EA_AY_DI_16(mc68kcpu);
1577   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1578   UINT32 res = src + dst;
1579
1580   (mc68kcpu)->n_flag = NFLAG_16(res);
1581   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1582   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1583   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1584
1585   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1586}
1587
1588
1589void m68000_base_device_ops::m68k_op_addi_16_ix(m68000_base_device* mc68kcpu)
1590{
1591   UINT32 src = OPER_I_16(mc68kcpu);
1592   UINT32 ea = EA_AY_IX_16(mc68kcpu);
1593   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1594   UINT32 res = src + dst;
1595
1596   (mc68kcpu)->n_flag = NFLAG_16(res);
1597   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1598   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1599   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1600
1601   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1602}
1603
1604
1605void m68000_base_device_ops::m68k_op_addi_16_aw(m68000_base_device* mc68kcpu)
1606{
1607   UINT32 src = OPER_I_16(mc68kcpu);
1608   UINT32 ea = EA_AW_16(mc68kcpu);
1609   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1610   UINT32 res = src + dst;
1611
1612   (mc68kcpu)->n_flag = NFLAG_16(res);
1613   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1614   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1615   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1616
1617   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1618}
1619
1620
1621void m68000_base_device_ops::m68k_op_addi_16_al(m68000_base_device* mc68kcpu)
1622{
1623   UINT32 src = OPER_I_16(mc68kcpu);
1624   UINT32 ea = EA_AL_16(mc68kcpu);
1625   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1626   UINT32 res = src + dst;
1627
1628   (mc68kcpu)->n_flag = NFLAG_16(res);
1629   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1630   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1631   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1632
1633   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1634}
1635
1636
1637void m68000_base_device_ops::m68k_op_addi_32_d(m68000_base_device* mc68kcpu)
1638{
1639   UINT32* r_dst = &DY(mc68kcpu);
1640   UINT32 src = OPER_I_32(mc68kcpu);
1641   UINT32 dst = *r_dst;
1642   UINT32 res = src + dst;
1643
1644   (mc68kcpu)->n_flag = NFLAG_32(res);
1645   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1646   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1647   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1648
1649   *r_dst = (mc68kcpu)->not_z_flag;
1650}
1651
1652
1653void m68000_base_device_ops::m68k_op_addi_32_ai(m68000_base_device* mc68kcpu)
1654{
1655   UINT32 src = OPER_I_32(mc68kcpu);
1656   UINT32 ea = EA_AY_AI_32(mc68kcpu);
1657   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1658   UINT32 res = src + dst;
1659
1660   (mc68kcpu)->n_flag = NFLAG_32(res);
1661   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1662   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1663   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1664
1665   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1666}
1667
1668
1669void m68000_base_device_ops::m68k_op_addi_32_pi(m68000_base_device* mc68kcpu)
1670{
1671   UINT32 src = OPER_I_32(mc68kcpu);
1672   UINT32 ea = EA_AY_PI_32(mc68kcpu);
1673   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1674   UINT32 res = src + dst;
1675
1676   (mc68kcpu)->n_flag = NFLAG_32(res);
1677   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1678   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1679   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1680
1681   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1682}
1683
1684
1685void m68000_base_device_ops::m68k_op_addi_32_pd(m68000_base_device* mc68kcpu)
1686{
1687   UINT32 src = OPER_I_32(mc68kcpu);
1688   UINT32 ea = EA_AY_PD_32(mc68kcpu);
1689   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1690   UINT32 res = src + dst;
1691
1692   (mc68kcpu)->n_flag = NFLAG_32(res);
1693   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1694   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1695   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1696
1697   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1698}
1699
1700
1701void m68000_base_device_ops::m68k_op_addi_32_di(m68000_base_device* mc68kcpu)
1702{
1703   UINT32 src = OPER_I_32(mc68kcpu);
1704   UINT32 ea = EA_AY_DI_32(mc68kcpu);
1705   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1706   UINT32 res = src + dst;
1707
1708   (mc68kcpu)->n_flag = NFLAG_32(res);
1709   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1710   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1711   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1712
1713   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1714}
1715
1716
1717void m68000_base_device_ops::m68k_op_addi_32_ix(m68000_base_device* mc68kcpu)
1718{
1719   UINT32 src = OPER_I_32(mc68kcpu);
1720   UINT32 ea = EA_AY_IX_32(mc68kcpu);
1721   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1722   UINT32 res = src + dst;
1723
1724   (mc68kcpu)->n_flag = NFLAG_32(res);
1725   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1726   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1727   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1728
1729   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1730}
1731
1732
1733void m68000_base_device_ops::m68k_op_addi_32_aw(m68000_base_device* mc68kcpu)
1734{
1735   UINT32 src = OPER_I_32(mc68kcpu);
1736   UINT32 ea = EA_AW_32(mc68kcpu);
1737   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1738   UINT32 res = src + dst;
1739
1740   (mc68kcpu)->n_flag = NFLAG_32(res);
1741   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1742   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1743   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1744
1745   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1746}
1747
1748
1749void m68000_base_device_ops::m68k_op_addi_32_al(m68000_base_device* mc68kcpu)
1750{
1751   UINT32 src = OPER_I_32(mc68kcpu);
1752   UINT32 ea = EA_AL_32(mc68kcpu);
1753   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
1754   UINT32 res = src + dst;
1755
1756   (mc68kcpu)->n_flag = NFLAG_32(res);
1757   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
1758   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
1759   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
1760
1761   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1762}
1763
1764
1765void m68000_base_device_ops::m68k_op_addq_8_d(m68000_base_device* mc68kcpu)
1766{
1767   UINT32* r_dst = &DY(mc68kcpu);
1768   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1769   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
1770   UINT32 res = src + dst;
1771
1772   (mc68kcpu)->n_flag = NFLAG_8(res);
1773   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1774   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1775   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1776
1777   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
1778}
1779
1780
1781void m68000_base_device_ops::m68k_op_addq_8_ai(m68000_base_device* mc68kcpu)
1782{
1783   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1784   UINT32 ea = EA_AY_AI_8(mc68kcpu);
1785   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1786   UINT32 res = src + dst;
1787
1788   (mc68kcpu)->n_flag = NFLAG_8(res);
1789   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1790   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1791   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1792
1793   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1794}
1795
1796
1797void m68000_base_device_ops::m68k_op_addq_8_pi(m68000_base_device* mc68kcpu)
1798{
1799   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1800   UINT32 ea = EA_AY_PI_8(mc68kcpu);
1801   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1802   UINT32 res = src + dst;
1803
1804   (mc68kcpu)->n_flag = NFLAG_8(res);
1805   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1806   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1807   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1808
1809   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1810}
1811
1812
1813void m68000_base_device_ops::m68k_op_addq_8_pi7(m68000_base_device* mc68kcpu)
1814{
1815   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1816   UINT32 ea = EA_A7_PI_8(mc68kcpu);
1817   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1818   UINT32 res = src + dst;
1819
1820   (mc68kcpu)->n_flag = NFLAG_8(res);
1821   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1822   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1823   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1824
1825   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1826}
1827
1828
1829void m68000_base_device_ops::m68k_op_addq_8_pd(m68000_base_device* mc68kcpu)
1830{
1831   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1832   UINT32 ea = EA_AY_PD_8(mc68kcpu);
1833   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1834   UINT32 res = src + dst;
1835
1836   (mc68kcpu)->n_flag = NFLAG_8(res);
1837   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1838   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1839   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1840
1841   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1842}
1843
1844
1845void m68000_base_device_ops::m68k_op_addq_8_pd7(m68000_base_device* mc68kcpu)
1846{
1847   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1848   UINT32 ea = EA_A7_PD_8(mc68kcpu);
1849   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1850   UINT32 res = src + dst;
1851
1852   (mc68kcpu)->n_flag = NFLAG_8(res);
1853   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1854   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1855   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1856
1857   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1858}
1859
1860
1861void m68000_base_device_ops::m68k_op_addq_8_di(m68000_base_device* mc68kcpu)
1862{
1863   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1864   UINT32 ea = EA_AY_DI_8(mc68kcpu);
1865   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1866   UINT32 res = src + dst;
1867
1868   (mc68kcpu)->n_flag = NFLAG_8(res);
1869   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1870   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1871   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1872
1873   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1874}
1875
1876
1877void m68000_base_device_ops::m68k_op_addq_8_ix(m68000_base_device* mc68kcpu)
1878{
1879   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1880   UINT32 ea = EA_AY_IX_8(mc68kcpu);
1881   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1882   UINT32 res = src + dst;
1883
1884   (mc68kcpu)->n_flag = NFLAG_8(res);
1885   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1886   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1887   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1888
1889   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1890}
1891
1892
1893void m68000_base_device_ops::m68k_op_addq_8_aw(m68000_base_device* mc68kcpu)
1894{
1895   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1896   UINT32 ea = EA_AW_8(mc68kcpu);
1897   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1898   UINT32 res = src + dst;
1899
1900   (mc68kcpu)->n_flag = NFLAG_8(res);
1901   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1902   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1903   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1904
1905   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1906}
1907
1908
1909void m68000_base_device_ops::m68k_op_addq_8_al(m68000_base_device* mc68kcpu)
1910{
1911   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1912   UINT32 ea = EA_AL_8(mc68kcpu);
1913   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
1914   UINT32 res = src + dst;
1915
1916   (mc68kcpu)->n_flag = NFLAG_8(res);
1917   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
1918   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
1919   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
1920
1921   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1922}
1923
1924
1925void m68000_base_device_ops::m68k_op_addq_16_d(m68000_base_device* mc68kcpu)
1926{
1927   UINT32* r_dst = &DY(mc68kcpu);
1928   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1929   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
1930   UINT32 res = src + dst;
1931
1932   (mc68kcpu)->n_flag = NFLAG_16(res);
1933   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1934   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1935   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1936
1937   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
1938}
1939
1940
1941void m68000_base_device_ops::m68k_op_addq_16_a(m68000_base_device* mc68kcpu)
1942{
1943   UINT32* r_dst = &AY(mc68kcpu);
1944
1945   *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
1946}
1947
1948
1949void m68000_base_device_ops::m68k_op_addq_16_ai(m68000_base_device* mc68kcpu)
1950{
1951   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1952   UINT32 ea = EA_AY_AI_16(mc68kcpu);
1953   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1954   UINT32 res = src + dst;
1955
1956   (mc68kcpu)->n_flag = NFLAG_16(res);
1957   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1958   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1959   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1960
1961   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1962}
1963
1964
1965void m68000_base_device_ops::m68k_op_addq_16_pi(m68000_base_device* mc68kcpu)
1966{
1967   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1968   UINT32 ea = EA_AY_PI_16(mc68kcpu);
1969   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1970   UINT32 res = src + dst;
1971
1972   (mc68kcpu)->n_flag = NFLAG_16(res);
1973   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1974   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1975   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1976
1977   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1978}
1979
1980
1981void m68000_base_device_ops::m68k_op_addq_16_pd(m68000_base_device* mc68kcpu)
1982{
1983   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
1984   UINT32 ea = EA_AY_PD_16(mc68kcpu);
1985   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
1986   UINT32 res = src + dst;
1987
1988   (mc68kcpu)->n_flag = NFLAG_16(res);
1989   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
1990   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
1991   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
1992
1993   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
1994}
1995
1996
1997void m68000_base_device_ops::m68k_op_addq_16_di(m68000_base_device* mc68kcpu)
1998{
1999   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2000   UINT32 ea = EA_AY_DI_16(mc68kcpu);
2001   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
2002   UINT32 res = src + dst;
2003
2004   (mc68kcpu)->n_flag = NFLAG_16(res);
2005   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2006   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2007   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2008
2009   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2010}
2011
2012
2013void m68000_base_device_ops::m68k_op_addq_16_ix(m68000_base_device* mc68kcpu)
2014{
2015   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2016   UINT32 ea = EA_AY_IX_16(mc68kcpu);
2017   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
2018   UINT32 res = src + dst;
2019
2020   (mc68kcpu)->n_flag = NFLAG_16(res);
2021   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2022   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2023   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2024
2025   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2026}
2027
2028
2029void m68000_base_device_ops::m68k_op_addq_16_aw(m68000_base_device* mc68kcpu)
2030{
2031   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2032   UINT32 ea = EA_AW_16(mc68kcpu);
2033   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
2034   UINT32 res = src + dst;
2035
2036   (mc68kcpu)->n_flag = NFLAG_16(res);
2037   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2038   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2039   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2040
2041   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2042}
2043
2044
2045void m68000_base_device_ops::m68k_op_addq_16_al(m68000_base_device* mc68kcpu)
2046{
2047   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2048   UINT32 ea = EA_AL_16(mc68kcpu);
2049   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
2050   UINT32 res = src + dst;
2051
2052   (mc68kcpu)->n_flag = NFLAG_16(res);
2053   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2054   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2055   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2056
2057   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2058}
2059
2060
2061void m68000_base_device_ops::m68k_op_addq_32_d(m68000_base_device* mc68kcpu)
2062{
2063   UINT32* r_dst = &DY(mc68kcpu);
2064   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2065   UINT32 dst = *r_dst;
2066   UINT32 res = src + dst;
2067
2068   (mc68kcpu)->n_flag = NFLAG_32(res);
2069   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2070   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2071   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2072
2073   *r_dst = (mc68kcpu)->not_z_flag;
2074}
2075
2076
2077void m68000_base_device_ops::m68k_op_addq_32_a(m68000_base_device* mc68kcpu)
2078{
2079   UINT32* r_dst = &AY(mc68kcpu);
2080
2081   *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
2082}
2083
2084
2085void m68000_base_device_ops::m68k_op_addq_32_ai(m68000_base_device* mc68kcpu)
2086{
2087   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2088   UINT32 ea = EA_AY_AI_32(mc68kcpu);
2089   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2090   UINT32 res = src + dst;
2091
2092
2093   (mc68kcpu)->n_flag = NFLAG_32(res);
2094   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2095   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2096   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2097
2098   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2099}
2100
2101
2102void m68000_base_device_ops::m68k_op_addq_32_pi(m68000_base_device* mc68kcpu)
2103{
2104   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2105   UINT32 ea = EA_AY_PI_32(mc68kcpu);
2106   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2107   UINT32 res = src + dst;
2108
2109
2110   (mc68kcpu)->n_flag = NFLAG_32(res);
2111   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2112   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2113   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2114
2115   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2116}
2117
2118
2119void m68000_base_device_ops::m68k_op_addq_32_pd(m68000_base_device* mc68kcpu)
2120{
2121   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2122   UINT32 ea = EA_AY_PD_32(mc68kcpu);
2123   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2124   UINT32 res = src + dst;
2125
2126
2127   (mc68kcpu)->n_flag = NFLAG_32(res);
2128   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2129   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2130   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2131
2132   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2133}
2134
2135
2136void m68000_base_device_ops::m68k_op_addq_32_di(m68000_base_device* mc68kcpu)
2137{
2138   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2139   UINT32 ea = EA_AY_DI_32(mc68kcpu);
2140   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2141   UINT32 res = src + dst;
2142
2143
2144   (mc68kcpu)->n_flag = NFLAG_32(res);
2145   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2146   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2147   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2148
2149   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2150}
2151
2152
2153void m68000_base_device_ops::m68k_op_addq_32_ix(m68000_base_device* mc68kcpu)
2154{
2155   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2156   UINT32 ea = EA_AY_IX_32(mc68kcpu);
2157   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2158   UINT32 res = src + dst;
2159
2160
2161   (mc68kcpu)->n_flag = NFLAG_32(res);
2162   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2163   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2164   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2165
2166   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2167}
2168
2169
2170void m68000_base_device_ops::m68k_op_addq_32_aw(m68000_base_device* mc68kcpu)
2171{
2172   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2173   UINT32 ea = EA_AW_32(mc68kcpu);
2174   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2175   UINT32 res = src + dst;
2176
2177
2178   (mc68kcpu)->n_flag = NFLAG_32(res);
2179   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2180   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2181   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2182
2183   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2184}
2185
2186
2187void m68000_base_device_ops::m68k_op_addq_32_al(m68000_base_device* mc68kcpu)
2188{
2189   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
2190   UINT32 ea = EA_AL_32(mc68kcpu);
2191   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2192   UINT32 res = src + dst;
2193
2194
2195   (mc68kcpu)->n_flag = NFLAG_32(res);
2196   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2197   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2198   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
2199
2200   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2201}
2202
2203
2204void m68000_base_device_ops::m68k_op_addx_8_rr(m68000_base_device* mc68kcpu)
2205{
2206   UINT32* r_dst = &DX(mc68kcpu);
2207   UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
2208   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
2209   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2210
2211   (mc68kcpu)->n_flag = NFLAG_8(res);
2212   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
2213   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
2214
2215   res = MASK_OUT_ABOVE_8(res);
2216   (mc68kcpu)->not_z_flag |= res;
2217
2218   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2219}
2220
2221
2222void m68000_base_device_ops::m68k_op_addx_16_rr(m68000_base_device* mc68kcpu)
2223{
2224   UINT32* r_dst = &DX(mc68kcpu);
2225   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
2226   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
2227   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2228
2229   (mc68kcpu)->n_flag = NFLAG_16(res);
2230   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2231   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2232
2233   res = MASK_OUT_ABOVE_16(res);
2234   (mc68kcpu)->not_z_flag |= res;
2235
2236   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2237}
2238
2239
2240void m68000_base_device_ops::m68k_op_addx_32_rr(m68000_base_device* mc68kcpu)
2241{
2242   UINT32* r_dst = &DX(mc68kcpu);
2243   UINT32 src = DY(mc68kcpu);
2244   UINT32 dst = *r_dst;
2245   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2246
2247   (mc68kcpu)->n_flag = NFLAG_32(res);
2248   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2249   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2250
2251   res = MASK_OUT_ABOVE_32(res);
2252   (mc68kcpu)->not_z_flag |= res;
2253
2254   *r_dst = res;
2255}
2256
2257
2258void m68000_base_device_ops::m68k_op_addx_8_mm_ax7(m68000_base_device* mc68kcpu)
2259{
2260   UINT32 src = OPER_AY_PD_8(mc68kcpu);
2261   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
2262   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
2263   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2264
2265   (mc68kcpu)->n_flag = NFLAG_8(res);
2266   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
2267   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
2268
2269   res = MASK_OUT_ABOVE_8(res);
2270   (mc68kcpu)->not_z_flag |= res;
2271
2272   m68ki_write_8((mc68kcpu), ea, res);
2273}
2274
2275
2276void m68000_base_device_ops::m68k_op_addx_8_mm_ay7(m68000_base_device* mc68kcpu)
2277{
2278   UINT32 src = OPER_A7_PD_8(mc68kcpu);
2279   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
2280   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
2281   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2282
2283   (mc68kcpu)->n_flag = NFLAG_8(res);
2284   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
2285   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
2286
2287   res = MASK_OUT_ABOVE_8(res);
2288   (mc68kcpu)->not_z_flag |= res;
2289
2290   m68ki_write_8((mc68kcpu), ea, res);
2291}
2292
2293
2294void m68000_base_device_ops::m68k_op_addx_8_mm_axy7(m68000_base_device* mc68kcpu)
2295{
2296   UINT32 src = OPER_A7_PD_8(mc68kcpu);
2297   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
2298   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
2299   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2300
2301   (mc68kcpu)->n_flag = NFLAG_8(res);
2302   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
2303   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
2304
2305   res = MASK_OUT_ABOVE_8(res);
2306   (mc68kcpu)->not_z_flag |= res;
2307
2308   m68ki_write_8((mc68kcpu), ea, res);
2309}
2310
2311
2312void m68000_base_device_ops::m68k_op_addx_8_mm(m68000_base_device* mc68kcpu)
2313{
2314   UINT32 src = OPER_AY_PD_8(mc68kcpu);
2315   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
2316   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
2317   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2318
2319   (mc68kcpu)->n_flag = NFLAG_8(res);
2320   (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
2321   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
2322
2323   res = MASK_OUT_ABOVE_8(res);
2324   (mc68kcpu)->not_z_flag |= res;
2325
2326   m68ki_write_8((mc68kcpu), ea, res);
2327}
2328
2329
2330void m68000_base_device_ops::m68k_op_addx_16_mm(m68000_base_device* mc68kcpu)
2331{
2332   UINT32 src = OPER_AY_PD_16(mc68kcpu);
2333   UINT32 ea  = EA_AX_PD_16(mc68kcpu);
2334   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
2335   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2336
2337   (mc68kcpu)->n_flag = NFLAG_16(res);
2338   (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
2339   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
2340
2341   res = MASK_OUT_ABOVE_16(res);
2342   (mc68kcpu)->not_z_flag |= res;
2343
2344   m68ki_write_16((mc68kcpu), ea, res);
2345}
2346
2347
2348void m68000_base_device_ops::m68k_op_addx_32_mm(m68000_base_device* mc68kcpu)
2349{
2350   UINT32 src = OPER_AY_PD_32(mc68kcpu);
2351   UINT32 ea  = EA_AX_PD_32(mc68kcpu);
2352   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
2353   UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
2354
2355   (mc68kcpu)->n_flag = NFLAG_32(res);
2356   (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
2357   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
2358
2359   res = MASK_OUT_ABOVE_32(res);
2360   (mc68kcpu)->not_z_flag |= res;
2361
2362   m68ki_write_32((mc68kcpu), ea, res);
2363}
2364
2365
2366void m68000_base_device_ops::m68k_op_and_8_er_d(m68000_base_device* mc68kcpu)
2367{
2368   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffffff00));
2369
2370   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2371   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2372   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2373}
2374
2375
2376void m68000_base_device_ops::m68k_op_and_8_er_ai(m68000_base_device* mc68kcpu)
2377{
2378   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_AI_8(mc68kcpu) | 0xffffff00));
2379
2380   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2381   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2382   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2383}
2384
2385
2386void m68000_base_device_ops::m68k_op_and_8_er_pi(m68000_base_device* mc68kcpu)
2387{
2388   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_PI_8(mc68kcpu) | 0xffffff00));
2389
2390   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2391   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2393}
2394
2395
2396void m68000_base_device_ops::m68k_op_and_8_er_pi7(m68000_base_device* mc68kcpu)
2397{
2398   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_A7_PI_8(mc68kcpu) | 0xffffff00));
2399
2400   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2401   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2402   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2403}
2404
2405
2406void m68000_base_device_ops::m68k_op_and_8_er_pd(m68000_base_device* mc68kcpu)
2407{
2408   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_PD_8(mc68kcpu) | 0xffffff00));
2409
2410   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2411   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2412   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2413}
2414
2415
2416void m68000_base_device_ops::m68k_op_and_8_er_pd7(m68000_base_device* mc68kcpu)
2417{
2418   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_A7_PD_8(mc68kcpu) | 0xffffff00));
2419
2420   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2421   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2422   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2423}
2424
2425
2426void m68000_base_device_ops::m68k_op_and_8_er_di(m68000_base_device* mc68kcpu)
2427{
2428   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_DI_8(mc68kcpu) | 0xffffff00));
2429
2430   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2431   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2432   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2433}
2434
2435
2436void m68000_base_device_ops::m68k_op_and_8_er_ix(m68000_base_device* mc68kcpu)
2437{
2438   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_IX_8(mc68kcpu) | 0xffffff00));
2439
2440   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2441   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2442   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2443}
2444
2445
2446void m68000_base_device_ops::m68k_op_and_8_er_aw(m68000_base_device* mc68kcpu)
2447{
2448   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AW_8(mc68kcpu) | 0xffffff00));
2449
2450   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2451   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2452   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2453}
2454
2455
2456void m68000_base_device_ops::m68k_op_and_8_er_al(m68000_base_device* mc68kcpu)
2457{
2458   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AL_8(mc68kcpu) | 0xffffff00));
2459
2460   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2461   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2462   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2463}
2464
2465
2466void m68000_base_device_ops::m68k_op_and_8_er_pcdi(m68000_base_device* mc68kcpu)
2467{
2468   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_PCDI_8(mc68kcpu) | 0xffffff00));
2469
2470   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2471   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2472   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2473}
2474
2475
2476void m68000_base_device_ops::m68k_op_and_8_er_pcix(m68000_base_device* mc68kcpu)
2477{
2478   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_PCIX_8(mc68kcpu) | 0xffffff00));
2479
2480   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2481   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2482   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2483}
2484
2485
2486void m68000_base_device_ops::m68k_op_and_8_er_i(m68000_base_device* mc68kcpu)
2487{
2488   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_I_8(mc68kcpu) | 0xffffff00));
2489
2490   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
2491   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2492   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2493}
2494
2495
2496void m68000_base_device_ops::m68k_op_and_16_er_d(m68000_base_device* mc68kcpu)
2497{
2498   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffff0000));
2499
2500   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2501   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2502   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2503}
2504
2505
2506void m68000_base_device_ops::m68k_op_and_16_er_ai(m68000_base_device* mc68kcpu)
2507{
2508   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_AI_16(mc68kcpu) | 0xffff0000));
2509
2510   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2511   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2512   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2513}
2514
2515
2516void m68000_base_device_ops::m68k_op_and_16_er_pi(m68000_base_device* mc68kcpu)
2517{
2518   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_PI_16(mc68kcpu) | 0xffff0000));
2519
2520   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2521   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2522   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2523}
2524
2525
2526void m68000_base_device_ops::m68k_op_and_16_er_pd(m68000_base_device* mc68kcpu)
2527{
2528   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_PD_16(mc68kcpu) | 0xffff0000));
2529
2530   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2531   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2532   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2533}
2534
2535
2536void m68000_base_device_ops::m68k_op_and_16_er_di(m68000_base_device* mc68kcpu)
2537{
2538   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_DI_16(mc68kcpu) | 0xffff0000));
2539
2540   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2541   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2542   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2543}
2544
2545
2546void m68000_base_device_ops::m68k_op_and_16_er_ix(m68000_base_device* mc68kcpu)
2547{
2548   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_IX_16(mc68kcpu) | 0xffff0000));
2549
2550   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2551   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2552   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2553}
2554
2555
2556void m68000_base_device_ops::m68k_op_and_16_er_aw(m68000_base_device* mc68kcpu)
2557{
2558   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AW_16(mc68kcpu) | 0xffff0000));
2559
2560   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2561   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2562   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2563}
2564
2565
2566void m68000_base_device_ops::m68k_op_and_16_er_al(m68000_base_device* mc68kcpu)
2567{
2568   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AL_16(mc68kcpu) | 0xffff0000));
2569
2570   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2571   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2572   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2573}
2574
2575
2576void m68000_base_device_ops::m68k_op_and_16_er_pcdi(m68000_base_device* mc68kcpu)
2577{
2578   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_PCDI_16(mc68kcpu) | 0xffff0000));
2579
2580   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2581   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2582   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2583}
2584
2585
2586void m68000_base_device_ops::m68k_op_and_16_er_pcix(m68000_base_device* mc68kcpu)
2587{
2588   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_PCIX_16(mc68kcpu) | 0xffff0000));
2589
2590   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2591   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2592   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2593}
2594
2595
2596void m68000_base_device_ops::m68k_op_and_16_er_i(m68000_base_device* mc68kcpu)
2597{
2598   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_I_16(mc68kcpu) | 0xffff0000));
2599
2600   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
2601   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2602   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2603}
2604
2605
2606void m68000_base_device_ops::m68k_op_and_32_er_d(m68000_base_device* mc68kcpu)
2607{
2608   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= DY(mc68kcpu);
2609
2610   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2611   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2612   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2613}
2614
2615
2616void m68000_base_device_ops::m68k_op_and_32_er_ai(m68000_base_device* mc68kcpu)
2617{
2618   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_AI_32(mc68kcpu);
2619
2620   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2621   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2622   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2623}
2624
2625
2626void m68000_base_device_ops::m68k_op_and_32_er_pi(m68000_base_device* mc68kcpu)
2627{
2628   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_PI_32(mc68kcpu);
2629
2630   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2631   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2632   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2633}
2634
2635
2636void m68000_base_device_ops::m68k_op_and_32_er_pd(m68000_base_device* mc68kcpu)
2637{
2638   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_PD_32(mc68kcpu);
2639
2640   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2641   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2642   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2643}
2644
2645
2646void m68000_base_device_ops::m68k_op_and_32_er_di(m68000_base_device* mc68kcpu)
2647{
2648   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_DI_32(mc68kcpu);
2649
2650   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2651   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2652   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2653}
2654
2655
2656void m68000_base_device_ops::m68k_op_and_32_er_ix(m68000_base_device* mc68kcpu)
2657{
2658   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_IX_32(mc68kcpu);
2659
2660   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2661   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2662   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2663}
2664
2665
2666void m68000_base_device_ops::m68k_op_and_32_er_aw(m68000_base_device* mc68kcpu)
2667{
2668   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AW_32(mc68kcpu);
2669
2670   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2671   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2672   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2673}
2674
2675
2676void m68000_base_device_ops::m68k_op_and_32_er_al(m68000_base_device* mc68kcpu)
2677{
2678   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AL_32(mc68kcpu);
2679
2680   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2681   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2682   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2683}
2684
2685
2686void m68000_base_device_ops::m68k_op_and_32_er_pcdi(m68000_base_device* mc68kcpu)
2687{
2688   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_PCDI_32(mc68kcpu);
2689
2690   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2691   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2692   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2693}
2694
2695
2696void m68000_base_device_ops::m68k_op_and_32_er_pcix(m68000_base_device* mc68kcpu)
2697{
2698   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_PCIX_32(mc68kcpu);
2699
2700   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2701   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2702   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2703}
2704
2705
2706void m68000_base_device_ops::m68k_op_and_32_er_i(m68000_base_device* mc68kcpu)
2707{
2708   (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_I_32(mc68kcpu);
2709
2710   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
2711   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2712   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2713}
2714
2715
2716void m68000_base_device_ops::m68k_op_and_8_re_ai(m68000_base_device* mc68kcpu)
2717{
2718   UINT32 ea = EA_AY_AI_8(mc68kcpu);
2719   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2720
2721   (mc68kcpu)->n_flag = NFLAG_8(res);
2722   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2723   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2724   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2725
2726   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2727}
2728
2729
2730void m68000_base_device_ops::m68k_op_and_8_re_pi(m68000_base_device* mc68kcpu)
2731{
2732   UINT32 ea = EA_AY_PI_8(mc68kcpu);
2733   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2734
2735   (mc68kcpu)->n_flag = NFLAG_8(res);
2736   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2737   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2738   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2739
2740   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2741}
2742
2743
2744void m68000_base_device_ops::m68k_op_and_8_re_pi7(m68000_base_device* mc68kcpu)
2745{
2746   UINT32 ea = EA_A7_PI_8(mc68kcpu);
2747   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2748
2749   (mc68kcpu)->n_flag = NFLAG_8(res);
2750   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2751   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2752   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2753
2754   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2755}
2756
2757
2758void m68000_base_device_ops::m68k_op_and_8_re_pd(m68000_base_device* mc68kcpu)
2759{
2760   UINT32 ea = EA_AY_PD_8(mc68kcpu);
2761   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2762
2763   (mc68kcpu)->n_flag = NFLAG_8(res);
2764   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2765   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2766   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2767
2768   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2769}
2770
2771
2772void m68000_base_device_ops::m68k_op_and_8_re_pd7(m68000_base_device* mc68kcpu)
2773{
2774   UINT32 ea = EA_A7_PD_8(mc68kcpu);
2775   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2776
2777   (mc68kcpu)->n_flag = NFLAG_8(res);
2778   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2779   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2780   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2781
2782   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2783}
2784
2785
2786void m68000_base_device_ops::m68k_op_and_8_re_di(m68000_base_device* mc68kcpu)
2787{
2788   UINT32 ea = EA_AY_DI_8(mc68kcpu);
2789   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2790
2791   (mc68kcpu)->n_flag = NFLAG_8(res);
2792   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2793   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2794   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2795
2796   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2797}
2798
2799
2800void m68000_base_device_ops::m68k_op_and_8_re_ix(m68000_base_device* mc68kcpu)
2801{
2802   UINT32 ea = EA_AY_IX_8(mc68kcpu);
2803   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2804
2805   (mc68kcpu)->n_flag = NFLAG_8(res);
2806   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2807   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2808   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2809
2810   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2811}
2812
2813
2814void m68000_base_device_ops::m68k_op_and_8_re_aw(m68000_base_device* mc68kcpu)
2815{
2816   UINT32 ea = EA_AW_8(mc68kcpu);
2817   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2818
2819   (mc68kcpu)->n_flag = NFLAG_8(res);
2820   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2821   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2822   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2823
2824   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2825}
2826
2827
2828void m68000_base_device_ops::m68k_op_and_8_re_al(m68000_base_device* mc68kcpu)
2829{
2830   UINT32 ea = EA_AL_8(mc68kcpu);
2831   UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
2832
2833   (mc68kcpu)->n_flag = NFLAG_8(res);
2834   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2835   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2836   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
2837
2838   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2839}
2840
2841
2842void m68000_base_device_ops::m68k_op_and_16_re_ai(m68000_base_device* mc68kcpu)
2843{
2844   UINT32 ea = EA_AY_AI_16(mc68kcpu);
2845   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2846
2847   (mc68kcpu)->n_flag = NFLAG_16(res);
2848   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2849   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2850   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2851
2852   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2853}
2854
2855
2856void m68000_base_device_ops::m68k_op_and_16_re_pi(m68000_base_device* mc68kcpu)
2857{
2858   UINT32 ea = EA_AY_PI_16(mc68kcpu);
2859   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2860
2861   (mc68kcpu)->n_flag = NFLAG_16(res);
2862   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2863   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2864   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2865
2866   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2867}
2868
2869
2870void m68000_base_device_ops::m68k_op_and_16_re_pd(m68000_base_device* mc68kcpu)
2871{
2872   UINT32 ea = EA_AY_PD_16(mc68kcpu);
2873   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2874
2875   (mc68kcpu)->n_flag = NFLAG_16(res);
2876   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2877   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2878   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2879
2880   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2881}
2882
2883
2884void m68000_base_device_ops::m68k_op_and_16_re_di(m68000_base_device* mc68kcpu)
2885{
2886   UINT32 ea = EA_AY_DI_16(mc68kcpu);
2887   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2888
2889   (mc68kcpu)->n_flag = NFLAG_16(res);
2890   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2891   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2892   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2893
2894   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2895}
2896
2897
2898void m68000_base_device_ops::m68k_op_and_16_re_ix(m68000_base_device* mc68kcpu)
2899{
2900   UINT32 ea = EA_AY_IX_16(mc68kcpu);
2901   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2902
2903   (mc68kcpu)->n_flag = NFLAG_16(res);
2904   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2905   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2906   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2907
2908   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2909}
2910
2911
2912void m68000_base_device_ops::m68k_op_and_16_re_aw(m68000_base_device* mc68kcpu)
2913{
2914   UINT32 ea = EA_AW_16(mc68kcpu);
2915   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2916
2917   (mc68kcpu)->n_flag = NFLAG_16(res);
2918   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2919   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2920   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2921
2922   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2923}
2924
2925
2926void m68000_base_device_ops::m68k_op_and_16_re_al(m68000_base_device* mc68kcpu)
2927{
2928   UINT32 ea = EA_AL_16(mc68kcpu);
2929   UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
2930
2931   (mc68kcpu)->n_flag = NFLAG_16(res);
2932   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2933   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2934   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
2935
2936   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
2937}
2938
2939
2940void m68000_base_device_ops::m68k_op_and_32_re_ai(m68000_base_device* mc68kcpu)
2941{
2942   UINT32 ea = EA_AY_AI_32(mc68kcpu);
2943   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
2944
2945   (mc68kcpu)->n_flag = NFLAG_32(res);
2946   (mc68kcpu)->not_z_flag = res;
2947   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2948   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2949
2950   m68ki_write_32((mc68kcpu), ea, res);
2951}
2952
2953
2954void m68000_base_device_ops::m68k_op_and_32_re_pi(m68000_base_device* mc68kcpu)
2955{
2956   UINT32 ea = EA_AY_PI_32(mc68kcpu);
2957   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
2958
2959   (mc68kcpu)->n_flag = NFLAG_32(res);
2960   (mc68kcpu)->not_z_flag = res;
2961   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2962   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2963
2964   m68ki_write_32((mc68kcpu), ea, res);
2965}
2966
2967
2968void m68000_base_device_ops::m68k_op_and_32_re_pd(m68000_base_device* mc68kcpu)
2969{
2970   UINT32 ea = EA_AY_PD_32(mc68kcpu);
2971   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
2972
2973   (mc68kcpu)->n_flag = NFLAG_32(res);
2974   (mc68kcpu)->not_z_flag = res;
2975   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2976   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2977
2978   m68ki_write_32((mc68kcpu), ea, res);
2979}
2980
2981
2982void m68000_base_device_ops::m68k_op_and_32_re_di(m68000_base_device* mc68kcpu)
2983{
2984   UINT32 ea = EA_AY_DI_32(mc68kcpu);
2985   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
2986
2987   (mc68kcpu)->n_flag = NFLAG_32(res);
2988   (mc68kcpu)->not_z_flag = res;
2989   (mc68kcpu)->c_flag = CFLAG_CLEAR;
2990   (mc68kcpu)->v_flag = VFLAG_CLEAR;
2991
2992   m68ki_write_32((mc68kcpu), ea, res);
2993}
2994
2995
2996void m68000_base_device_ops::m68k_op_and_32_re_ix(m68000_base_device* mc68kcpu)
2997{
2998   UINT32 ea = EA_AY_IX_32(mc68kcpu);
2999   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
3000
3001   (mc68kcpu)->n_flag = NFLAG_32(res);
3002   (mc68kcpu)->not_z_flag = res;
3003   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3004   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3005
3006   m68ki_write_32((mc68kcpu), ea, res);
3007}
3008
3009
3010void m68000_base_device_ops::m68k_op_and_32_re_aw(m68000_base_device* mc68kcpu)
3011{
3012   UINT32 ea = EA_AW_32(mc68kcpu);
3013   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
3014
3015   (mc68kcpu)->n_flag = NFLAG_32(res);
3016   (mc68kcpu)->not_z_flag = res;
3017   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3018   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3019
3020   m68ki_write_32((mc68kcpu), ea, res);
3021}
3022
3023
3024void m68000_base_device_ops::m68k_op_and_32_re_al(m68000_base_device* mc68kcpu)
3025{
3026   UINT32 ea = EA_AL_32(mc68kcpu);
3027   UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
3028
3029   (mc68kcpu)->n_flag = NFLAG_32(res);
3030   (mc68kcpu)->not_z_flag = res;
3031   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3032   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3033
3034   m68ki_write_32((mc68kcpu), ea, res);
3035}
3036
3037
3038void m68000_base_device_ops::m68k_op_andi_8_d(m68000_base_device* mc68kcpu)
3039{
3040   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DY(mc68kcpu) &= (OPER_I_8(mc68kcpu) | 0xffffff00));
3041
3042   (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
3043   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3044   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3045}
3046
3047
3048void m68000_base_device_ops::m68k_op_andi_8_ai(m68000_base_device* mc68kcpu)
3049{
3050   UINT32 src = OPER_I_8(mc68kcpu);
3051   UINT32 ea = EA_AY_AI_8(mc68kcpu);
3052   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3053
3054   (mc68kcpu)->n_flag = NFLAG_8(res);
3055   (mc68kcpu)->not_z_flag = res;
3056   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3057   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3058
3059   m68ki_write_8((mc68kcpu), ea, res);
3060}
3061
3062
3063void m68000_base_device_ops::m68k_op_andi_8_pi(m68000_base_device* mc68kcpu)
3064{
3065   UINT32 src = OPER_I_8(mc68kcpu);
3066   UINT32 ea = EA_AY_PI_8(mc68kcpu);
3067   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3068
3069   (mc68kcpu)->n_flag = NFLAG_8(res);
3070   (mc68kcpu)->not_z_flag = res;
3071   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3072   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3073
3074   m68ki_write_8((mc68kcpu), ea, res);
3075}
3076
3077
3078void m68000_base_device_ops::m68k_op_andi_8_pi7(m68000_base_device* mc68kcpu)
3079{
3080   UINT32 src = OPER_I_8(mc68kcpu);
3081   UINT32 ea = EA_A7_PI_8(mc68kcpu);
3082   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3083
3084   (mc68kcpu)->n_flag = NFLAG_8(res);
3085   (mc68kcpu)->not_z_flag = res;
3086   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3087   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3088
3089   m68ki_write_8((mc68kcpu), ea, res);
3090}
3091
3092
3093void m68000_base_device_ops::m68k_op_andi_8_pd(m68000_base_device* mc68kcpu)
3094{
3095   UINT32 src = OPER_I_8(mc68kcpu);
3096   UINT32 ea = EA_AY_PD_8(mc68kcpu);
3097   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3098
3099   (mc68kcpu)->n_flag = NFLAG_8(res);
3100   (mc68kcpu)->not_z_flag = res;
3101   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3102   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3103
3104   m68ki_write_8((mc68kcpu), ea, res);
3105}
3106
3107
3108void m68000_base_device_ops::m68k_op_andi_8_pd7(m68000_base_device* mc68kcpu)
3109{
3110   UINT32 src = OPER_I_8(mc68kcpu);
3111   UINT32 ea = EA_A7_PD_8(mc68kcpu);
3112   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3113
3114   (mc68kcpu)->n_flag = NFLAG_8(res);
3115   (mc68kcpu)->not_z_flag = res;
3116   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3117   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3118
3119   m68ki_write_8((mc68kcpu), ea, res);
3120}
3121
3122
3123void m68000_base_device_ops::m68k_op_andi_8_di(m68000_base_device* mc68kcpu)
3124{
3125   UINT32 src = OPER_I_8(mc68kcpu);
3126   UINT32 ea = EA_AY_DI_8(mc68kcpu);
3127   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3128
3129   (mc68kcpu)->n_flag = NFLAG_8(res);
3130   (mc68kcpu)->not_z_flag = res;
3131   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3132   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3133
3134   m68ki_write_8((mc68kcpu), ea, res);
3135}
3136
3137
3138void m68000_base_device_ops::m68k_op_andi_8_ix(m68000_base_device* mc68kcpu)
3139{
3140   UINT32 src = OPER_I_8(mc68kcpu);
3141   UINT32 ea = EA_AY_IX_8(mc68kcpu);
3142   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3143
3144   (mc68kcpu)->n_flag = NFLAG_8(res);
3145   (mc68kcpu)->not_z_flag = res;
3146   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3147   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3148
3149   m68ki_write_8((mc68kcpu), ea, res);
3150}
3151
3152
3153void m68000_base_device_ops::m68k_op_andi_8_aw(m68000_base_device* mc68kcpu)
3154{
3155   UINT32 src = OPER_I_8(mc68kcpu);
3156   UINT32 ea = EA_AW_8(mc68kcpu);
3157   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3158
3159   (mc68kcpu)->n_flag = NFLAG_8(res);
3160   (mc68kcpu)->not_z_flag = res;
3161   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3162   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3163
3164   m68ki_write_8((mc68kcpu), ea, res);
3165}
3166
3167
3168void m68000_base_device_ops::m68k_op_andi_8_al(m68000_base_device* mc68kcpu)
3169{
3170   UINT32 src = OPER_I_8(mc68kcpu);
3171   UINT32 ea = EA_AL_8(mc68kcpu);
3172   UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
3173
3174   (mc68kcpu)->n_flag = NFLAG_8(res);
3175   (mc68kcpu)->not_z_flag = res;
3176   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3177   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3178
3179   m68ki_write_8((mc68kcpu), ea, res);
3180}
3181
3182
3183void m68000_base_device_ops::m68k_op_andi_16_d(m68000_base_device* mc68kcpu)
3184{
3185   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DY(mc68kcpu) &= (OPER_I_16(mc68kcpu) | 0xffff0000));
3186
3187   (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
3188   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3189   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3190}
3191
3192
3193void m68000_base_device_ops::m68k_op_andi_16_ai(m68000_base_device* mc68kcpu)
3194{
3195   UINT32 src = OPER_I_16(mc68kcpu);
3196   UINT32 ea = EA_AY_AI_16(mc68kcpu);
3197   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3198
3199   (mc68kcpu)->n_flag = NFLAG_16(res);
3200   (mc68kcpu)->not_z_flag = res;
3201   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3202   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3203
3204   m68ki_write_16((mc68kcpu), ea, res);
3205}
3206
3207
3208void m68000_base_device_ops::m68k_op_andi_16_pi(m68000_base_device* mc68kcpu)
3209{
3210   UINT32 src = OPER_I_16(mc68kcpu);
3211   UINT32 ea = EA_AY_PI_16(mc68kcpu);
3212   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3213
3214   (mc68kcpu)->n_flag = NFLAG_16(res);
3215   (mc68kcpu)->not_z_flag = res;
3216   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3217   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3218
3219   m68ki_write_16((mc68kcpu), ea, res);
3220}
3221
3222
3223void m68000_base_device_ops::m68k_op_andi_16_pd(m68000_base_device* mc68kcpu)
3224{
3225   UINT32 src = OPER_I_16(mc68kcpu);
3226   UINT32 ea = EA_AY_PD_16(mc68kcpu);
3227   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3228
3229   (mc68kcpu)->n_flag = NFLAG_16(res);
3230   (mc68kcpu)->not_z_flag = res;
3231   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3232   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3233
3234   m68ki_write_16((mc68kcpu), ea, res);
3235}
3236
3237
3238void m68000_base_device_ops::m68k_op_andi_16_di(m68000_base_device* mc68kcpu)
3239{
3240   UINT32 src = OPER_I_16(mc68kcpu);
3241   UINT32 ea = EA_AY_DI_16(mc68kcpu);
3242   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3243
3244   (mc68kcpu)->n_flag = NFLAG_16(res);
3245   (mc68kcpu)->not_z_flag = res;
3246   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3247   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3248
3249   m68ki_write_16((mc68kcpu), ea, res);
3250}
3251
3252
3253void m68000_base_device_ops::m68k_op_andi_16_ix(m68000_base_device* mc68kcpu)
3254{
3255   UINT32 src = OPER_I_16(mc68kcpu);
3256   UINT32 ea = EA_AY_IX_16(mc68kcpu);
3257   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3258
3259   (mc68kcpu)->n_flag = NFLAG_16(res);
3260   (mc68kcpu)->not_z_flag = res;
3261   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3262   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3263
3264   m68ki_write_16((mc68kcpu), ea, res);
3265}
3266
3267
3268void m68000_base_device_ops::m68k_op_andi_16_aw(m68000_base_device* mc68kcpu)
3269{
3270   UINT32 src = OPER_I_16(mc68kcpu);
3271   UINT32 ea = EA_AW_16(mc68kcpu);
3272   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3273
3274   (mc68kcpu)->n_flag = NFLAG_16(res);
3275   (mc68kcpu)->not_z_flag = res;
3276   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3277   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3278
3279   m68ki_write_16((mc68kcpu), ea, res);
3280}
3281
3282
3283void m68000_base_device_ops::m68k_op_andi_16_al(m68000_base_device* mc68kcpu)
3284{
3285   UINT32 src = OPER_I_16(mc68kcpu);
3286   UINT32 ea = EA_AL_16(mc68kcpu);
3287   UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
3288
3289   (mc68kcpu)->n_flag = NFLAG_16(res);
3290   (mc68kcpu)->not_z_flag = res;
3291   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3292   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3293
3294   m68ki_write_16((mc68kcpu), ea, res);
3295}
3296
3297
3298void m68000_base_device_ops::m68k_op_andi_32_d(m68000_base_device* mc68kcpu)
3299{
3300   (mc68kcpu)->not_z_flag = DY(mc68kcpu) &= (OPER_I_32(mc68kcpu));
3301
3302   (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
3303   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3304   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3305}
3306
3307
3308void m68000_base_device_ops::m68k_op_andi_32_ai(m68000_base_device* mc68kcpu)
3309{
3310   UINT32 src = OPER_I_32(mc68kcpu);
3311   UINT32 ea = EA_AY_AI_32(mc68kcpu);
3312   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3313
3314   (mc68kcpu)->n_flag = NFLAG_32(res);
3315   (mc68kcpu)->not_z_flag = res;
3316   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3317   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3318
3319   m68ki_write_32((mc68kcpu), ea, res);
3320}
3321
3322
3323void m68000_base_device_ops::m68k_op_andi_32_pi(m68000_base_device* mc68kcpu)
3324{
3325   UINT32 src = OPER_I_32(mc68kcpu);
3326   UINT32 ea = EA_AY_PI_32(mc68kcpu);
3327   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3328
3329   (mc68kcpu)->n_flag = NFLAG_32(res);
3330   (mc68kcpu)->not_z_flag = res;
3331   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3332   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3333
3334   m68ki_write_32((mc68kcpu), ea, res);
3335}
3336
3337
3338void m68000_base_device_ops::m68k_op_andi_32_pd(m68000_base_device* mc68kcpu)
3339{
3340   UINT32 src = OPER_I_32(mc68kcpu);
3341   UINT32 ea = EA_AY_PD_32(mc68kcpu);
3342   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3343
3344   (mc68kcpu)->n_flag = NFLAG_32(res);
3345   (mc68kcpu)->not_z_flag = res;
3346   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3347   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3348
3349   m68ki_write_32((mc68kcpu), ea, res);
3350}
3351
3352
3353void m68000_base_device_ops::m68k_op_andi_32_di(m68000_base_device* mc68kcpu)
3354{
3355   UINT32 src = OPER_I_32(mc68kcpu);
3356   UINT32 ea = EA_AY_DI_32(mc68kcpu);
3357   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3358
3359   (mc68kcpu)->n_flag = NFLAG_32(res);
3360   (mc68kcpu)->not_z_flag = res;
3361   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3362   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3363
3364   m68ki_write_32((mc68kcpu), ea, res);
3365}
3366
3367
3368void m68000_base_device_ops::m68k_op_andi_32_ix(m68000_base_device* mc68kcpu)
3369{
3370   UINT32 src = OPER_I_32(mc68kcpu);
3371   UINT32 ea = EA_AY_IX_32(mc68kcpu);
3372   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3373
3374   (mc68kcpu)->n_flag = NFLAG_32(res);
3375   (mc68kcpu)->not_z_flag = res;
3376   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3377   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3378
3379   m68ki_write_32((mc68kcpu), ea, res);
3380}
3381
3382
3383void m68000_base_device_ops::m68k_op_andi_32_aw(m68000_base_device* mc68kcpu)
3384{
3385   UINT32 src = OPER_I_32(mc68kcpu);
3386   UINT32 ea = EA_AW_32(mc68kcpu);
3387   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3388
3389   (mc68kcpu)->n_flag = NFLAG_32(res);
3390   (mc68kcpu)->not_z_flag = res;
3391   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3393
3394   m68ki_write_32((mc68kcpu), ea, res);
3395}
3396
3397
3398void m68000_base_device_ops::m68k_op_andi_32_al(m68000_base_device* mc68kcpu)
3399{
3400   UINT32 src = OPER_I_32(mc68kcpu);
3401   UINT32 ea = EA_AL_32(mc68kcpu);
3402   UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
3403
3404   (mc68kcpu)->n_flag = NFLAG_32(res);
3405   (mc68kcpu)->not_z_flag = res;
3406   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3407   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3408
3409   m68ki_write_32((mc68kcpu), ea, res);
3410}
3411
3412
3413void m68000_base_device_ops::m68k_op_andi_16_toc(m68000_base_device* mc68kcpu)
3414{
3415   m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) & OPER_I_16(mc68kcpu));
3416}
3417
3418
3419void m68000_base_device_ops::m68k_op_andi_16_tos(m68000_base_device* mc68kcpu)
3420{
3421   if((mc68kcpu)->s_flag)
3422   {
3423      UINT32 src = OPER_I_16(mc68kcpu);
3424      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
3425      m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) & src);
3426      return;
3427   }
3428   m68ki_exception_privilege_violation(mc68kcpu);
3429}
3430
3431
3432void m68000_base_device_ops::m68k_op_asr_8_s(m68000_base_device* mc68kcpu)
3433{
3434   UINT32* r_dst = &DY(mc68kcpu);
3435   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3436   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
3437   UINT32 res = src >> shift;
3438
3439   if(shift != 0)
3440      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3441
3442   if(GET_MSB_8(src))
3443      res |= m68ki_shift_8_table[shift];
3444
3445   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3446
3447   (mc68kcpu)->n_flag = NFLAG_8(res);
3448   (mc68kcpu)->not_z_flag = res;
3449   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3450   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
3451}
3452
3453
3454void m68000_base_device_ops::m68k_op_asr_16_s(m68000_base_device* mc68kcpu)
3455{
3456   UINT32* r_dst = &DY(mc68kcpu);
3457   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3458   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
3459   UINT32 res = src >> shift;
3460
3461   if(shift != 0)
3462      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3463
3464   if(GET_MSB_16(src))
3465      res |= m68ki_shift_16_table[shift];
3466
3467   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3468
3469   (mc68kcpu)->n_flag = NFLAG_16(res);
3470   (mc68kcpu)->not_z_flag = res;
3471   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3472   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
3473}
3474
3475
3476void m68000_base_device_ops::m68k_op_asr_32_s(m68000_base_device* mc68kcpu)
3477{
3478   UINT32* r_dst = &DY(mc68kcpu);
3479   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3480   UINT32 src = *r_dst;
3481   UINT32 res = src >> shift;
3482
3483   if(shift != 0)
3484      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3485
3486   if(GET_MSB_32(src))
3487      res |= m68ki_shift_32_table[shift];
3488
3489   *r_dst = res;
3490
3491   (mc68kcpu)->n_flag = NFLAG_32(res);
3492   (mc68kcpu)->not_z_flag = res;
3493   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3494   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
3495}
3496
3497
3498void m68000_base_device_ops::m68k_op_asr_8_r(m68000_base_device* mc68kcpu)
3499{
3500   UINT32* r_dst = &DY(mc68kcpu);
3501   UINT32 shift = DX(mc68kcpu) & 0x3f;
3502   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
3503   UINT32 res = src >> shift;
3504
3505   if(shift != 0)
3506   {
3507      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3508
3509      if(shift < 8)
3510      {
3511         if(GET_MSB_8(src))
3512            res |= m68ki_shift_8_table[shift];
3513
3514         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3515
3516         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
3517         (mc68kcpu)->n_flag = NFLAG_8(res);
3518         (mc68kcpu)->not_z_flag = res;
3519         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3520         return;
3521      }
3522
3523      if(GET_MSB_8(src))
3524      {
3525         *r_dst |= 0xff;
3526         (mc68kcpu)->c_flag = CFLAG_SET;
3527         (mc68kcpu)->x_flag = XFLAG_SET;
3528         (mc68kcpu)->n_flag = NFLAG_SET;
3529         (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
3530         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3531         return;
3532      }
3533
3534      *r_dst &= 0xffffff00;
3535      (mc68kcpu)->c_flag = CFLAG_CLEAR;
3536      (mc68kcpu)->x_flag = XFLAG_CLEAR;
3537      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3538      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3539      (mc68kcpu)->v_flag = VFLAG_CLEAR;
3540      return;
3541   }
3542
3543   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3544   (mc68kcpu)->n_flag = NFLAG_8(src);
3545   (mc68kcpu)->not_z_flag = src;
3546   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3547}
3548
3549
3550void m68000_base_device_ops::m68k_op_asr_16_r(m68000_base_device* mc68kcpu)
3551{
3552   UINT32* r_dst = &DY(mc68kcpu);
3553   UINT32 shift = DX(mc68kcpu) & 0x3f;
3554   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
3555   UINT32 res = src >> shift;
3556
3557   if(shift != 0)
3558   {
3559      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3560
3561      if(shift < 16)
3562      {
3563         if(GET_MSB_16(src))
3564            res |= m68ki_shift_16_table[shift];
3565
3566         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3567
3568         (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
3569         (mc68kcpu)->n_flag = NFLAG_16(res);
3570         (mc68kcpu)->not_z_flag = res;
3571         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3572         return;
3573      }
3574
3575      if(GET_MSB_16(src))
3576      {
3577         *r_dst |= 0xffff;
3578         (mc68kcpu)->c_flag = CFLAG_SET;
3579         (mc68kcpu)->x_flag = XFLAG_SET;
3580         (mc68kcpu)->n_flag = NFLAG_SET;
3581         (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
3582         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3583         return;
3584      }
3585
3586      *r_dst &= 0xffff0000;
3587      (mc68kcpu)->c_flag = CFLAG_CLEAR;
3588      (mc68kcpu)->x_flag = XFLAG_CLEAR;
3589      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3590      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3591      (mc68kcpu)->v_flag = VFLAG_CLEAR;
3592      return;
3593   }
3594
3595   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3596   (mc68kcpu)->n_flag = NFLAG_16(src);
3597   (mc68kcpu)->not_z_flag = src;
3598   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3599}
3600
3601
3602void m68000_base_device_ops::m68k_op_asr_32_r(m68000_base_device* mc68kcpu)
3603{
3604   UINT32* r_dst = &DY(mc68kcpu);
3605   UINT32 shift = DX(mc68kcpu) & 0x3f;
3606   UINT32 src = *r_dst;
3607   UINT32 res = src >> shift;
3608
3609   if(shift != 0)
3610   {
3611      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3612
3613      if(shift < 32)
3614      {
3615         if(GET_MSB_32(src))
3616            res |= m68ki_shift_32_table[shift];
3617
3618         *r_dst = res;
3619
3620         (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
3621         (mc68kcpu)->n_flag = NFLAG_32(res);
3622         (mc68kcpu)->not_z_flag = res;
3623         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3624         return;
3625      }
3626
3627      if(GET_MSB_32(src))
3628      {
3629         *r_dst = 0xffffffff;
3630         (mc68kcpu)->c_flag = CFLAG_SET;
3631         (mc68kcpu)->x_flag = XFLAG_SET;
3632         (mc68kcpu)->n_flag = NFLAG_SET;
3633         (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
3634         (mc68kcpu)->v_flag = VFLAG_CLEAR;
3635         return;
3636      }
3637
3638      *r_dst = 0;
3639      (mc68kcpu)->c_flag = CFLAG_CLEAR;
3640      (mc68kcpu)->x_flag = XFLAG_CLEAR;
3641      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3642      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3643      (mc68kcpu)->v_flag = VFLAG_CLEAR;
3644      return;
3645   }
3646
3647   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3648   (mc68kcpu)->n_flag = NFLAG_32(src);
3649   (mc68kcpu)->not_z_flag = src;
3650   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3651}
3652
3653
3654void m68000_base_device_ops::m68k_op_asr_16_ai(m68000_base_device* mc68kcpu)
3655{
3656   UINT32 ea = EA_AY_AI_16(mc68kcpu);
3657   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3658   UINT32 res = src >> 1;
3659
3660   if(GET_MSB_16(src))
3661      res |= 0x8000;
3662
3663   m68ki_write_16((mc68kcpu), ea, res);
3664
3665   (mc68kcpu)->n_flag = NFLAG_16(res);
3666   (mc68kcpu)->not_z_flag = res;
3667   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3668   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3669}
3670
3671
3672void m68000_base_device_ops::m68k_op_asr_16_pi(m68000_base_device* mc68kcpu)
3673{
3674   UINT32 ea = EA_AY_PI_16(mc68kcpu);
3675   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3676   UINT32 res = src >> 1;
3677
3678   if(GET_MSB_16(src))
3679      res |= 0x8000;
3680
3681   m68ki_write_16((mc68kcpu), ea, res);
3682
3683   (mc68kcpu)->n_flag = NFLAG_16(res);
3684   (mc68kcpu)->not_z_flag = res;
3685   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3686   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3687}
3688
3689
3690void m68000_base_device_ops::m68k_op_asr_16_pd(m68000_base_device* mc68kcpu)
3691{
3692   UINT32 ea = EA_AY_PD_16(mc68kcpu);
3693   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3694   UINT32 res = src >> 1;
3695
3696   if(GET_MSB_16(src))
3697      res |= 0x8000;
3698
3699   m68ki_write_16((mc68kcpu), ea, res);
3700
3701   (mc68kcpu)->n_flag = NFLAG_16(res);
3702   (mc68kcpu)->not_z_flag = res;
3703   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3704   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3705}
3706
3707
3708void m68000_base_device_ops::m68k_op_asr_16_di(m68000_base_device* mc68kcpu)
3709{
3710   UINT32 ea = EA_AY_DI_16(mc68kcpu);
3711   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3712   UINT32 res = src >> 1;
3713
3714   if(GET_MSB_16(src))
3715      res |= 0x8000;
3716
3717   m68ki_write_16((mc68kcpu), ea, res);
3718
3719   (mc68kcpu)->n_flag = NFLAG_16(res);
3720   (mc68kcpu)->not_z_flag = res;
3721   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3722   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3723}
3724
3725
3726void m68000_base_device_ops::m68k_op_asr_16_ix(m68000_base_device* mc68kcpu)
3727{
3728   UINT32 ea = EA_AY_IX_16(mc68kcpu);
3729   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3730   UINT32 res = src >> 1;
3731
3732   if(GET_MSB_16(src))
3733      res |= 0x8000;
3734
3735   m68ki_write_16((mc68kcpu), ea, res);
3736
3737   (mc68kcpu)->n_flag = NFLAG_16(res);
3738   (mc68kcpu)->not_z_flag = res;
3739   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3740   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3741}
3742
3743
3744void m68000_base_device_ops::m68k_op_asr_16_aw(m68000_base_device* mc68kcpu)
3745{
3746   UINT32 ea = EA_AW_16(mc68kcpu);
3747   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3748   UINT32 res = src >> 1;
3749
3750   if(GET_MSB_16(src))
3751      res |= 0x8000;
3752
3753   m68ki_write_16((mc68kcpu), ea, res);
3754
3755   (mc68kcpu)->n_flag = NFLAG_16(res);
3756   (mc68kcpu)->not_z_flag = res;
3757   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3758   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3759}
3760
3761
3762void m68000_base_device_ops::m68k_op_asr_16_al(m68000_base_device* mc68kcpu)
3763{
3764   UINT32 ea = EA_AL_16(mc68kcpu);
3765   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3766   UINT32 res = src >> 1;
3767
3768   if(GET_MSB_16(src))
3769      res |= 0x8000;
3770
3771   m68ki_write_16((mc68kcpu), ea, res);
3772
3773   (mc68kcpu)->n_flag = NFLAG_16(res);
3774   (mc68kcpu)->not_z_flag = res;
3775   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3776   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
3777}
3778
3779
3780void m68000_base_device_ops::m68k_op_asl_8_s(m68000_base_device* mc68kcpu)
3781{
3782   UINT32* r_dst = &DY(mc68kcpu);
3783   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3784   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
3785   UINT32 res = MASK_OUT_ABOVE_8(src << shift);
3786
3787   if(shift != 0)
3788      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3789
3790   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3791
3792   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
3793   (mc68kcpu)->n_flag = NFLAG_8(res);
3794   (mc68kcpu)->not_z_flag = res;
3795   src &= m68ki_shift_8_table[shift + 1];
3796   (mc68kcpu)->v_flag = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;
3797}
3798
3799
3800void m68000_base_device_ops::m68k_op_asl_16_s(m68000_base_device* mc68kcpu)
3801{
3802   UINT32* r_dst = &DY(mc68kcpu);
3803   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3804   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
3805   UINT32 res = MASK_OUT_ABOVE_16(src << shift);
3806
3807   if(shift != 0)
3808      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3809
3810   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3811
3812   (mc68kcpu)->n_flag = NFLAG_16(res);
3813   (mc68kcpu)->not_z_flag = res;
3814   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (8-shift);
3815   src &= m68ki_shift_16_table[shift + 1];
3816   (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
3817}
3818
3819
3820void m68000_base_device_ops::m68k_op_asl_32_s(m68000_base_device* mc68kcpu)
3821{
3822   UINT32* r_dst = &DY(mc68kcpu);
3823   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
3824   UINT32 src = *r_dst;
3825   UINT32 res = MASK_OUT_ABOVE_32(src << shift);
3826
3827   if(shift != 0)
3828      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3829
3830   *r_dst = res;
3831
3832   (mc68kcpu)->n_flag = NFLAG_32(res);
3833   (mc68kcpu)->not_z_flag = res;
3834   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (24-shift);
3835   src &= m68ki_shift_32_table[shift + 1];
3836   (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
3837}
3838
3839
3840void m68000_base_device_ops::m68k_op_asl_8_r(m68000_base_device* mc68kcpu)
3841{
3842   UINT32* r_dst = &DY(mc68kcpu);
3843   UINT32 shift = DX(mc68kcpu) & 0x3f;
3844   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
3845   UINT32 res = MASK_OUT_ABOVE_8(src << shift);
3846
3847   if(shift != 0)
3848   {
3849      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3850
3851      if(shift < 8)
3852      {
3853         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3854         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
3855         (mc68kcpu)->n_flag = NFLAG_8(res);
3856         (mc68kcpu)->not_z_flag = res;
3857         src &= m68ki_shift_8_table[shift + 1];
3858         (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7;
3859         return;
3860      }
3861
3862      *r_dst &= 0xffffff00;
3863      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 8 ? src & 1 : 0))<<8;
3864      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3865      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3866      (mc68kcpu)->v_flag = (!(src == 0))<<7;
3867      return;
3868   }
3869
3870   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3871   (mc68kcpu)->n_flag = NFLAG_8(src);
3872   (mc68kcpu)->not_z_flag = src;
3873   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3874}
3875
3876
3877void m68000_base_device_ops::m68k_op_asl_16_r(m68000_base_device* mc68kcpu)
3878{
3879   UINT32* r_dst = &DY(mc68kcpu);
3880   UINT32 shift = DX(mc68kcpu) & 0x3f;
3881   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
3882   UINT32 res = MASK_OUT_ABOVE_16(src << shift);
3883
3884   if(shift != 0)
3885   {
3886      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3887
3888      if(shift < 16)
3889      {
3890         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3891         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src << shift) >> 8;
3892         (mc68kcpu)->n_flag = NFLAG_16(res);
3893         (mc68kcpu)->not_z_flag = res;
3894         src &= m68ki_shift_16_table[shift + 1];
3895         (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
3896         return;
3897      }
3898
3899      *r_dst &= 0xffff0000;
3900      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 16 ? src & 1 : 0))<<8;
3901      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3902      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3903      (mc68kcpu)->v_flag = (!(src == 0))<<7;
3904      return;
3905   }
3906
3907   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3908   (mc68kcpu)->n_flag = NFLAG_16(src);
3909   (mc68kcpu)->not_z_flag = src;
3910   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3911}
3912
3913
3914void m68000_base_device_ops::m68k_op_asl_32_r(m68000_base_device* mc68kcpu)
3915{
3916   UINT32* r_dst = &DY(mc68kcpu);
3917   UINT32 shift = DX(mc68kcpu) & 0x3f;
3918   UINT32 src = *r_dst;
3919   UINT32 res = MASK_OUT_ABOVE_32(src << shift);
3920
3921   if(shift != 0)
3922   {
3923      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
3924
3925      if(shift < 32)
3926      {
3927         *r_dst = res;
3928         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src >> (32 - shift)) << 8;
3929         (mc68kcpu)->n_flag = NFLAG_32(res);
3930         (mc68kcpu)->not_z_flag = res;
3931         src &= m68ki_shift_32_table[shift + 1];
3932         (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
3933         return;
3934      }
3935
3936      *r_dst = 0;
3937      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 32 ? src & 1 : 0))<<8;
3938      (mc68kcpu)->n_flag = NFLAG_CLEAR;
3939      (mc68kcpu)->not_z_flag = ZFLAG_SET;
3940      (mc68kcpu)->v_flag = (!(src == 0))<<7;
3941      return;
3942   }
3943
3944   (mc68kcpu)->c_flag = CFLAG_CLEAR;
3945   (mc68kcpu)->n_flag = NFLAG_32(src);
3946   (mc68kcpu)->not_z_flag = src;
3947   (mc68kcpu)->v_flag = VFLAG_CLEAR;
3948}
3949
3950
3951void m68000_base_device_ops::m68k_op_asl_16_ai(m68000_base_device* mc68kcpu)
3952{
3953   UINT32 ea = EA_AY_AI_16(mc68kcpu);
3954   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3955   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
3956
3957   m68ki_write_16((mc68kcpu), ea, res);
3958
3959   (mc68kcpu)->n_flag = NFLAG_16(res);
3960   (mc68kcpu)->not_z_flag = res;
3961   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
3962   src &= 0xc000;
3963   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
3964}
3965
3966
3967void m68000_base_device_ops::m68k_op_asl_16_pi(m68000_base_device* mc68kcpu)
3968{
3969   UINT32 ea = EA_AY_PI_16(mc68kcpu);
3970   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3971   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
3972
3973   m68ki_write_16((mc68kcpu), ea, res);
3974
3975   (mc68kcpu)->n_flag = NFLAG_16(res);
3976   (mc68kcpu)->not_z_flag = res;
3977   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
3978   src &= 0xc000;
3979   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
3980}
3981
3982
3983void m68000_base_device_ops::m68k_op_asl_16_pd(m68000_base_device* mc68kcpu)
3984{
3985   UINT32 ea = EA_AY_PD_16(mc68kcpu);
3986   UINT32 src = m68ki_read_16((mc68kcpu), ea);
3987   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
3988
3989   m68ki_write_16((mc68kcpu), ea, res);
3990
3991   (mc68kcpu)->n_flag = NFLAG_16(res);
3992   (mc68kcpu)->not_z_flag = res;
3993   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
3994   src &= 0xc000;
3995   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
3996}
3997
3998
3999void m68000_base_device_ops::m68k_op_asl_16_di(m68000_base_device* mc68kcpu)
4000{
4001   UINT32 ea = EA_AY_DI_16(mc68kcpu);
4002   UINT32 src = m68ki_read_16((mc68kcpu), ea);
4003   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
4004
4005   m68ki_write_16((mc68kcpu), ea, res);
4006
4007   (mc68kcpu)->n_flag = NFLAG_16(res);
4008   (mc68kcpu)->not_z_flag = res;
4009   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
4010   src &= 0xc000;
4011   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
4012}
4013
4014
4015void m68000_base_device_ops::m68k_op_asl_16_ix(m68000_base_device* mc68kcpu)
4016{
4017   UINT32 ea = EA_AY_IX_16(mc68kcpu);
4018   UINT32 src = m68ki_read_16((mc68kcpu), ea);
4019   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
4020
4021   m68ki_write_16((mc68kcpu), ea, res);
4022
4023   (mc68kcpu)->n_flag = NFLAG_16(res);
4024   (mc68kcpu)->not_z_flag = res;
4025   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
4026   src &= 0xc000;
4027   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
4028}
4029
4030
4031void m68000_base_device_ops::m68k_op_asl_16_aw(m68000_base_device* mc68kcpu)
4032{
4033   UINT32 ea = EA_AW_16(mc68kcpu);
4034   UINT32 src = m68ki_read_16((mc68kcpu), ea);
4035   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
4036
4037   m68ki_write_16((mc68kcpu), ea, res);
4038
4039   (mc68kcpu)->n_flag = NFLAG_16(res);
4040   (mc68kcpu)->not_z_flag = res;
4041   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
4042   src &= 0xc000;
4043   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
4044}
4045
4046
4047void m68000_base_device_ops::m68k_op_asl_16_al(m68000_base_device* mc68kcpu)
4048{
4049   UINT32 ea = EA_AL_16(mc68kcpu);
4050   UINT32 src = m68ki_read_16((mc68kcpu), ea);
4051   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
4052
4053   m68ki_write_16((mc68kcpu), ea, res);
4054
4055   (mc68kcpu)->n_flag = NFLAG_16(res);
4056   (mc68kcpu)->not_z_flag = res;
4057   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
4058   src &= 0xc000;
4059   (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
4060}
4061
4062
4063void m68000_base_device_ops::m68k_op_bhi_8(m68000_base_device* mc68kcpu)
4064{
4065   if(COND_HI(mc68kcpu))
4066   {
4067      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4068      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4069      return;
4070   }
4071   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4072}
4073
4074
4075void m68000_base_device_ops::m68k_op_bls_8(m68000_base_device* mc68kcpu)
4076{
4077   if(COND_LS(mc68kcpu))
4078   {
4079      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4080      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4081      return;
4082   }
4083   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4084}
4085
4086
4087void m68000_base_device_ops::m68k_op_bcc_8(m68000_base_device* mc68kcpu)
4088{
4089   if(COND_CC(mc68kcpu))
4090   {
4091      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4092      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4093      return;
4094   }
4095   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4096}
4097
4098
4099void m68000_base_device_ops::m68k_op_bcs_8(m68000_base_device* mc68kcpu)
4100{
4101   if(COND_CS(mc68kcpu))
4102   {
4103      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4104      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4105      return;
4106   }
4107   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4108}
4109
4110
4111void m68000_base_device_ops::m68k_op_bne_8(m68000_base_device* mc68kcpu)
4112{
4113   if(COND_NE(mc68kcpu))
4114   {
4115      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4116      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4117      return;
4118   }
4119   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4120}
4121
4122
4123void m68000_base_device_ops::m68k_op_beq_8(m68000_base_device* mc68kcpu)
4124{
4125   if(COND_EQ(mc68kcpu))
4126   {
4127      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4128      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4129      return;
4130   }
4131   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4132}
4133
4134
4135void m68000_base_device_ops::m68k_op_bvc_8(m68000_base_device* mc68kcpu)
4136{
4137   if(COND_VC(mc68kcpu))
4138   {
4139      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4140      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4141      return;
4142   }
4143   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4144}
4145
4146
4147void m68000_base_device_ops::m68k_op_bvs_8(m68000_base_device* mc68kcpu)
4148{
4149   if(COND_VS(mc68kcpu))
4150   {
4151      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4152      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4153      return;
4154   }
4155   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4156}
4157
4158
4159void m68000_base_device_ops::m68k_op_bpl_8(m68000_base_device* mc68kcpu)
4160{
4161   if(COND_PL(mc68kcpu))
4162   {
4163      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4164      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4165      return;
4166   }
4167   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4168}
4169
4170
4171void m68000_base_device_ops::m68k_op_bmi_8(m68000_base_device* mc68kcpu)
4172{
4173   if(COND_MI(mc68kcpu))
4174   {
4175      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4176      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4177      return;
4178   }
4179   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4180}
4181
4182
4183void m68000_base_device_ops::m68k_op_bge_8(m68000_base_device* mc68kcpu)
4184{
4185   if(COND_GE(mc68kcpu))
4186   {
4187      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4188      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4189      return;
4190   }
4191   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4192}
4193
4194
4195void m68000_base_device_ops::m68k_op_blt_8(m68000_base_device* mc68kcpu)
4196{
4197   if(COND_LT(mc68kcpu))
4198   {
4199      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4200      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4201      return;
4202   }
4203   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4204}
4205
4206
4207void m68000_base_device_ops::m68k_op_bgt_8(m68000_base_device* mc68kcpu)
4208{
4209   if(COND_GT(mc68kcpu))
4210   {
4211      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4212      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4213      return;
4214   }
4215   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4216}
4217
4218
4219void m68000_base_device_ops::m68k_op_ble_8(m68000_base_device* mc68kcpu)
4220{
4221   if(COND_LE(mc68kcpu))
4222   {
4223      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4224      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4225      return;
4226   }
4227   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4228}
4229
4230
4231void m68000_base_device_ops::m68k_op_bhi_16(m68000_base_device* mc68kcpu)
4232{
4233   if(COND_HI(mc68kcpu))
4234   {
4235      UINT32 offset = OPER_I_16(mc68kcpu);
4236      REG_PC(mc68kcpu) -= 2;
4237      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4238      m68ki_branch_16((mc68kcpu), offset);
4239      return;
4240   }
4241   REG_PC(mc68kcpu) += 2;
4242   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4243}
4244
4245
4246void m68000_base_device_ops::m68k_op_bls_16(m68000_base_device* mc68kcpu)
4247{
4248   if(COND_LS(mc68kcpu))
4249   {
4250      UINT32 offset = OPER_I_16(mc68kcpu);
4251      REG_PC(mc68kcpu) -= 2;
4252      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4253      m68ki_branch_16((mc68kcpu), offset);
4254      return;
4255   }
4256   REG_PC(mc68kcpu) += 2;
4257   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4258}
4259
4260
4261void m68000_base_device_ops::m68k_op_bcc_16(m68000_base_device* mc68kcpu)
4262{
4263   if(COND_CC(mc68kcpu))
4264   {
4265      UINT32 offset = OPER_I_16(mc68kcpu);
4266      REG_PC(mc68kcpu) -= 2;
4267      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4268      m68ki_branch_16((mc68kcpu), offset);
4269      return;
4270   }
4271   REG_PC(mc68kcpu) += 2;
4272   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4273}
4274
4275
4276void m68000_base_device_ops::m68k_op_bcs_16(m68000_base_device* mc68kcpu)
4277{
4278   if(COND_CS(mc68kcpu))
4279   {
4280      UINT32 offset = OPER_I_16(mc68kcpu);
4281      REG_PC(mc68kcpu) -= 2;
4282      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4283      m68ki_branch_16((mc68kcpu), offset);
4284      return;
4285   }
4286   REG_PC(mc68kcpu) += 2;
4287   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4288}
4289
4290
4291void m68000_base_device_ops::m68k_op_bne_16(m68000_base_device* mc68kcpu)
4292{
4293   if(COND_NE(mc68kcpu))
4294   {
4295      UINT32 offset = OPER_I_16(mc68kcpu);
4296      REG_PC(mc68kcpu) -= 2;
4297      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4298      m68ki_branch_16((mc68kcpu), offset);
4299      return;
4300   }
4301   REG_PC(mc68kcpu) += 2;
4302   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4303}
4304
4305
4306void m68000_base_device_ops::m68k_op_beq_16(m68000_base_device* mc68kcpu)
4307{
4308   if(COND_EQ(mc68kcpu))
4309   {
4310      UINT32 offset = OPER_I_16(mc68kcpu);
4311      REG_PC(mc68kcpu) -= 2;
4312      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4313      m68ki_branch_16((mc68kcpu), offset);
4314      return;
4315   }
4316   REG_PC(mc68kcpu) += 2;
4317   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4318}
4319
4320
4321void m68000_base_device_ops::m68k_op_bvc_16(m68000_base_device* mc68kcpu)
4322{
4323   if(COND_VC(mc68kcpu))
4324   {
4325      UINT32 offset = OPER_I_16(mc68kcpu);
4326      REG_PC(mc68kcpu) -= 2;
4327      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4328      m68ki_branch_16((mc68kcpu), offset);
4329      return;
4330   }
4331   REG_PC(mc68kcpu) += 2;
4332   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4333}
4334
4335
4336void m68000_base_device_ops::m68k_op_bvs_16(m68000_base_device* mc68kcpu)
4337{
4338   if(COND_VS(mc68kcpu))
4339   {
4340      UINT32 offset = OPER_I_16(mc68kcpu);
4341      REG_PC(mc68kcpu) -= 2;
4342      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4343      m68ki_branch_16((mc68kcpu), offset);
4344      return;
4345   }
4346   REG_PC(mc68kcpu) += 2;
4347   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4348}
4349
4350
4351void m68000_base_device_ops::m68k_op_bpl_16(m68000_base_device* mc68kcpu)
4352{
4353   if(COND_PL(mc68kcpu))
4354   {
4355      UINT32 offset = OPER_I_16(mc68kcpu);
4356      REG_PC(mc68kcpu) -= 2;
4357      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4358      m68ki_branch_16((mc68kcpu), offset);
4359      return;
4360   }
4361   REG_PC(mc68kcpu) += 2;
4362   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4363}
4364
4365
4366void m68000_base_device_ops::m68k_op_bmi_16(m68000_base_device* mc68kcpu)
4367{
4368   if(COND_MI(mc68kcpu))
4369   {
4370      UINT32 offset = OPER_I_16(mc68kcpu);
4371      REG_PC(mc68kcpu) -= 2;
4372      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4373      m68ki_branch_16((mc68kcpu), offset);
4374      return;
4375   }
4376   REG_PC(mc68kcpu) += 2;
4377   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4378}
4379
4380
4381void m68000_base_device_ops::m68k_op_bge_16(m68000_base_device* mc68kcpu)
4382{
4383   if(COND_GE(mc68kcpu))
4384   {
4385      UINT32 offset = OPER_I_16(mc68kcpu);
4386      REG_PC(mc68kcpu) -= 2;
4387      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4388      m68ki_branch_16((mc68kcpu), offset);
4389      return;
4390   }
4391   REG_PC(mc68kcpu) += 2;
4392   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4393}
4394
4395
4396void m68000_base_device_ops::m68k_op_blt_16(m68000_base_device* mc68kcpu)
4397{
4398   if(COND_LT(mc68kcpu))
4399   {
4400      UINT32 offset = OPER_I_16(mc68kcpu);
4401      REG_PC(mc68kcpu) -= 2;
4402      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4403      m68ki_branch_16((mc68kcpu), offset);
4404      return;
4405   }
4406   REG_PC(mc68kcpu) += 2;
4407   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4408}
4409
4410
4411void m68000_base_device_ops::m68k_op_bgt_16(m68000_base_device* mc68kcpu)
4412{
4413   if(COND_GT(mc68kcpu))
4414   {
4415      UINT32 offset = OPER_I_16(mc68kcpu);
4416      REG_PC(mc68kcpu) -= 2;
4417      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4418      m68ki_branch_16((mc68kcpu), offset);
4419      return;
4420   }
4421   REG_PC(mc68kcpu) += 2;
4422   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4423}
4424
4425
4426void m68000_base_device_ops::m68k_op_ble_16(m68000_base_device* mc68kcpu)
4427{
4428   if(COND_LE(mc68kcpu))
4429   {
4430      UINT32 offset = OPER_I_16(mc68kcpu);
4431      REG_PC(mc68kcpu) -= 2;
4432      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4433      m68ki_branch_16((mc68kcpu), offset);
4434      return;
4435   }
4436   REG_PC(mc68kcpu) += 2;
4437   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
4438}
4439
4440
4441void m68000_base_device_ops::m68k_op_bhi_32(m68000_base_device* mc68kcpu)
4442{
4443   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4444   {
4445      if(COND_HI(mc68kcpu))
4446      {
4447         UINT32 offset = OPER_I_32(mc68kcpu);
4448         REG_PC(mc68kcpu) -= 4;
4449         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4450         m68ki_branch_32((mc68kcpu), offset);
4451         return;
4452      }
4453      REG_PC(mc68kcpu) += 4;
4454      return;
4455   }
4456   else
4457   {
4458      if(COND_HI(mc68kcpu))
4459      {
4460         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4461         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4462         return;
4463      }
4464      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4465   }
4466}
4467
4468
4469void m68000_base_device_ops::m68k_op_bls_32(m68000_base_device* mc68kcpu)
4470{
4471   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4472   {
4473      if(COND_LS(mc68kcpu))
4474      {
4475         UINT32 offset = OPER_I_32(mc68kcpu);
4476         REG_PC(mc68kcpu) -= 4;
4477         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4478         m68ki_branch_32((mc68kcpu), offset);
4479         return;
4480      }
4481      REG_PC(mc68kcpu) += 4;
4482      return;
4483   }
4484   else
4485   {
4486      if(COND_LS(mc68kcpu))
4487      {
4488         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4489         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4490         return;
4491      }
4492      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4493   }
4494}
4495
4496
4497void m68000_base_device_ops::m68k_op_bcc_32(m68000_base_device* mc68kcpu)
4498{
4499   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4500   {
4501      if(COND_CC(mc68kcpu))
4502      {
4503         UINT32 offset = OPER_I_32(mc68kcpu);
4504         REG_PC(mc68kcpu) -= 4;
4505         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4506         m68ki_branch_32((mc68kcpu), offset);
4507         return;
4508      }
4509      REG_PC(mc68kcpu) += 4;
4510      return;
4511   }
4512   else
4513   {
4514      if(COND_CC(mc68kcpu))
4515      {
4516         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4517         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4518         return;
4519      }
4520      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4521   }
4522}
4523
4524
4525void m68000_base_device_ops::m68k_op_bcs_32(m68000_base_device* mc68kcpu)
4526{
4527   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4528   {
4529      if(COND_CS(mc68kcpu))
4530      {
4531         UINT32 offset = OPER_I_32(mc68kcpu);
4532         REG_PC(mc68kcpu) -= 4;
4533         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4534         m68ki_branch_32((mc68kcpu), offset);
4535         return;
4536      }
4537      REG_PC(mc68kcpu) += 4;
4538      return;
4539   }
4540   else
4541   {
4542      if(COND_CS(mc68kcpu))
4543      {
4544         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4545         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4546         return;
4547      }
4548      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4549   }
4550}
4551
4552
4553void m68000_base_device_ops::m68k_op_bne_32(m68000_base_device* mc68kcpu)
4554{
4555   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4556   {
4557      if(COND_NE(mc68kcpu))
4558      {
4559         UINT32 offset = OPER_I_32(mc68kcpu);
4560         REG_PC(mc68kcpu) -= 4;
4561         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4562         m68ki_branch_32((mc68kcpu), offset);
4563         return;
4564      }
4565      REG_PC(mc68kcpu) += 4;
4566      return;
4567   }
4568   else
4569   {
4570      if(COND_NE(mc68kcpu))
4571      {
4572         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4573         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4574         return;
4575      }
4576      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4577   }
4578}
4579
4580
4581void m68000_base_device_ops::m68k_op_beq_32(m68000_base_device* mc68kcpu)
4582{
4583   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4584   {
4585      if(COND_EQ(mc68kcpu))
4586      {
4587         UINT32 offset = OPER_I_32(mc68kcpu);
4588         REG_PC(mc68kcpu) -= 4;
4589         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4590         m68ki_branch_32((mc68kcpu), offset);
4591         return;
4592      }
4593      REG_PC(mc68kcpu) += 4;
4594      return;
4595   }
4596   else
4597   {
4598      if(COND_EQ(mc68kcpu))
4599      {
4600         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4601         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4602         return;
4603      }
4604      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4605   }
4606}
4607
4608
4609void m68000_base_device_ops::m68k_op_bvc_32(m68000_base_device* mc68kcpu)
4610{
4611   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4612   {
4613      if(COND_VC(mc68kcpu))
4614      {
4615         UINT32 offset = OPER_I_32(mc68kcpu);
4616         REG_PC(mc68kcpu) -= 4;
4617         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4618         m68ki_branch_32((mc68kcpu), offset);
4619         return;
4620      }
4621      REG_PC(mc68kcpu) += 4;
4622      return;
4623   }
4624   else
4625   {
4626      if(COND_VC(mc68kcpu))
4627      {
4628         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4629         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4630         return;
4631      }
4632      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4633   }
4634}
4635
4636
4637void m68000_base_device_ops::m68k_op_bvs_32(m68000_base_device* mc68kcpu)
4638{
4639   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4640   {
4641      if(COND_VS(mc68kcpu))
4642      {
4643         UINT32 offset = OPER_I_32(mc68kcpu);
4644         REG_PC(mc68kcpu) -= 4;
4645         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4646         m68ki_branch_32((mc68kcpu), offset);
4647         return;
4648      }
4649      REG_PC(mc68kcpu) += 4;
4650      return;
4651   }
4652   else
4653   {
4654      if(COND_VS(mc68kcpu))
4655      {
4656         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4657         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4658         return;
4659      }
4660      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4661   }
4662}
4663
4664
4665void m68000_base_device_ops::m68k_op_bpl_32(m68000_base_device* mc68kcpu)
4666{
4667   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4668   {
4669      if(COND_PL(mc68kcpu))
4670      {
4671         UINT32 offset = OPER_I_32(mc68kcpu);
4672         REG_PC(mc68kcpu) -= 4;
4673         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4674         m68ki_branch_32((mc68kcpu), offset);
4675         return;
4676      }
4677      REG_PC(mc68kcpu) += 4;
4678      return;
4679   }
4680   else
4681   {
4682      if(COND_PL(mc68kcpu))
4683      {
4684         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4685         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4686         return;
4687      }
4688      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4689   }
4690}
4691
4692
4693void m68000_base_device_ops::m68k_op_bmi_32(m68000_base_device* mc68kcpu)
4694{
4695   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4696   {
4697      if(COND_MI(mc68kcpu))
4698      {
4699         UINT32 offset = OPER_I_32(mc68kcpu);
4700         REG_PC(mc68kcpu) -= 4;
4701         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4702         m68ki_branch_32((mc68kcpu), offset);
4703         return;
4704      }
4705      REG_PC(mc68kcpu) += 4;
4706      return;
4707   }
4708   else
4709   {
4710      if(COND_MI(mc68kcpu))
4711      {
4712         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4713         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4714         return;
4715      }
4716      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4717   }
4718}
4719
4720
4721void m68000_base_device_ops::m68k_op_bge_32(m68000_base_device* mc68kcpu)
4722{
4723   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4724   {
4725      if(COND_GE(mc68kcpu))
4726      {
4727         UINT32 offset = OPER_I_32(mc68kcpu);
4728         REG_PC(mc68kcpu) -= 4;
4729         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4730         m68ki_branch_32((mc68kcpu), offset);
4731         return;
4732      }
4733      REG_PC(mc68kcpu) += 4;
4734      return;
4735   }
4736   else
4737   {
4738      if(COND_GE(mc68kcpu))
4739      {
4740         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4741         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4742         return;
4743      }
4744      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4745   }
4746}
4747
4748
4749void m68000_base_device_ops::m68k_op_blt_32(m68000_base_device* mc68kcpu)
4750{
4751   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4752   {
4753      if(COND_LT(mc68kcpu))
4754      {
4755         UINT32 offset = OPER_I_32(mc68kcpu);
4756         REG_PC(mc68kcpu) -= 4;
4757         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4758         m68ki_branch_32((mc68kcpu), offset);
4759         return;
4760      }
4761      REG_PC(mc68kcpu) += 4;
4762      return;
4763   }
4764   else
4765   {
4766      if(COND_LT(mc68kcpu))
4767      {
4768         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4769         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4770         return;
4771      }
4772      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4773   }
4774}
4775
4776
4777void m68000_base_device_ops::m68k_op_bgt_32(m68000_base_device* mc68kcpu)
4778{
4779   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4780   {
4781      if(COND_GT(mc68kcpu))
4782      {
4783         UINT32 offset = OPER_I_32(mc68kcpu);
4784         REG_PC(mc68kcpu) -= 4;
4785         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4786         m68ki_branch_32((mc68kcpu), offset);
4787         return;
4788      }
4789      REG_PC(mc68kcpu) += 4;
4790      return;
4791   }
4792   else
4793   {
4794      if(COND_GT(mc68kcpu))
4795      {
4796         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4797         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4798         return;
4799      }
4800      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4801   }
4802}
4803
4804
4805void m68000_base_device_ops::m68k_op_ble_32(m68000_base_device* mc68kcpu)
4806{
4807   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
4808   {
4809      if(COND_LE(mc68kcpu))
4810      {
4811         UINT32 offset = OPER_I_32(mc68kcpu);
4812         REG_PC(mc68kcpu) -= 4;
4813         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4814         m68ki_branch_32((mc68kcpu), offset);
4815         return;
4816      }
4817      REG_PC(mc68kcpu) += 4;
4818      return;
4819   }
4820   else
4821   {
4822      if(COND_LE(mc68kcpu))
4823      {
4824         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
4825         m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
4826         return;
4827      }
4828      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
4829   }
4830}
4831
4832
4833void m68000_base_device_ops::m68k_op_bchg_32_r_d(m68000_base_device* mc68kcpu)
4834{
4835   UINT32* r_dst = &DY(mc68kcpu);
4836   UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
4837
4838   (mc68kcpu)->not_z_flag = *r_dst & mask;
4839   *r_dst ^= mask;
4840}
4841
4842
4843void m68000_base_device_ops::m68k_op_bchg_8_r_ai(m68000_base_device* mc68kcpu)
4844{
4845   UINT32 ea = EA_AY_AI_8(mc68kcpu);
4846   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4847   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4848
4849   (mc68kcpu)->not_z_flag = src & mask;
4850   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4851}
4852
4853
4854void m68000_base_device_ops::m68k_op_bchg_8_r_pi(m68000_base_device* mc68kcpu)
4855{
4856   UINT32 ea = EA_AY_PI_8(mc68kcpu);
4857   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4858   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4859
4860   (mc68kcpu)->not_z_flag = src & mask;
4861   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4862}
4863
4864
4865void m68000_base_device_ops::m68k_op_bchg_8_r_pi7(m68000_base_device* mc68kcpu)
4866{
4867   UINT32 ea = EA_A7_PI_8(mc68kcpu);
4868   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4869   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4870
4871   (mc68kcpu)->not_z_flag = src & mask;
4872   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4873}
4874
4875
4876void m68000_base_device_ops::m68k_op_bchg_8_r_pd(m68000_base_device* mc68kcpu)
4877{
4878   UINT32 ea = EA_AY_PD_8(mc68kcpu);
4879   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4880   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4881
4882   (mc68kcpu)->not_z_flag = src & mask;
4883   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4884}
4885
4886
4887void m68000_base_device_ops::m68k_op_bchg_8_r_pd7(m68000_base_device* mc68kcpu)
4888{
4889   UINT32 ea = EA_A7_PD_8(mc68kcpu);
4890   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4891   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4892
4893   (mc68kcpu)->not_z_flag = src & mask;
4894   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4895}
4896
4897
4898void m68000_base_device_ops::m68k_op_bchg_8_r_di(m68000_base_device* mc68kcpu)
4899{
4900   UINT32 ea = EA_AY_DI_8(mc68kcpu);
4901   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4902   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4903
4904   (mc68kcpu)->not_z_flag = src & mask;
4905   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4906}
4907
4908
4909void m68000_base_device_ops::m68k_op_bchg_8_r_ix(m68000_base_device* mc68kcpu)
4910{
4911   UINT32 ea = EA_AY_IX_8(mc68kcpu);
4912   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4913   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4914
4915   (mc68kcpu)->not_z_flag = src & mask;
4916   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4917}
4918
4919
4920void m68000_base_device_ops::m68k_op_bchg_8_r_aw(m68000_base_device* mc68kcpu)
4921{
4922   UINT32 ea = EA_AW_8(mc68kcpu);
4923   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4924   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4925
4926   (mc68kcpu)->not_z_flag = src & mask;
4927   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4928}
4929
4930
4931void m68000_base_device_ops::m68k_op_bchg_8_r_al(m68000_base_device* mc68kcpu)
4932{
4933   UINT32 ea = EA_AL_8(mc68kcpu);
4934   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4935   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
4936
4937   (mc68kcpu)->not_z_flag = src & mask;
4938   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4939}
4940
4941
4942void m68000_base_device_ops::m68k_op_bchg_32_s_d(m68000_base_device* mc68kcpu)
4943{
4944   UINT32* r_dst = &DY(mc68kcpu);
4945   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
4946
4947   (mc68kcpu)->not_z_flag = *r_dst & mask;
4948   *r_dst ^= mask;
4949}
4950
4951
4952void m68000_base_device_ops::m68k_op_bchg_8_s_ai(m68000_base_device* mc68kcpu)
4953{
4954   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
4955   UINT32 ea = EA_AY_AI_8(mc68kcpu);
4956   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4957
4958   (mc68kcpu)->not_z_flag = src & mask;
4959   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4960}
4961
4962
4963void m68000_base_device_ops::m68k_op_bchg_8_s_pi(m68000_base_device* mc68kcpu)
4964{
4965   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
4966   UINT32 ea = EA_AY_PI_8(mc68kcpu);
4967   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4968
4969   (mc68kcpu)->not_z_flag = src & mask;
4970   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4971}
4972
4973
4974void m68000_base_device_ops::m68k_op_bchg_8_s_pi7(m68000_base_device* mc68kcpu)
4975{
4976   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
4977   UINT32 ea = EA_A7_PI_8(mc68kcpu);
4978   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4979
4980   (mc68kcpu)->not_z_flag = src & mask;
4981   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4982}
4983
4984
4985void m68000_base_device_ops::m68k_op_bchg_8_s_pd(m68000_base_device* mc68kcpu)
4986{
4987   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
4988   UINT32 ea = EA_AY_PD_8(mc68kcpu);
4989   UINT32 src = m68ki_read_8((mc68kcpu), ea);
4990
4991   (mc68kcpu)->not_z_flag = src & mask;
4992   m68ki_write_8((mc68kcpu), ea, src ^ mask);
4993}
4994
4995
4996void m68000_base_device_ops::m68k_op_bchg_8_s_pd7(m68000_base_device* mc68kcpu)
4997{
4998   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
4999   UINT32 ea = EA_A7_PD_8(mc68kcpu);
5000   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5001
5002   (mc68kcpu)->not_z_flag = src & mask;
5003   m68ki_write_8((mc68kcpu), ea, src ^ mask);
5004}
5005
5006
5007void m68000_base_device_ops::m68k_op_bchg_8_s_di(m68000_base_device* mc68kcpu)
5008{
5009   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5010   UINT32 ea = EA_AY_DI_8(mc68kcpu);
5011   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5012
5013   (mc68kcpu)->not_z_flag = src & mask;
5014   m68ki_write_8((mc68kcpu), ea, src ^ mask);
5015}
5016
5017
5018void m68000_base_device_ops::m68k_op_bchg_8_s_ix(m68000_base_device* mc68kcpu)
5019{
5020   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5021   UINT32 ea = EA_AY_IX_8(mc68kcpu);
5022   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5023
5024   (mc68kcpu)->not_z_flag = src & mask;
5025   m68ki_write_8((mc68kcpu), ea, src ^ mask);
5026}
5027
5028
5029void m68000_base_device_ops::m68k_op_bchg_8_s_aw(m68000_base_device* mc68kcpu)
5030{
5031   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5032   UINT32 ea = EA_AW_8(mc68kcpu);
5033   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5034
5035   (mc68kcpu)->not_z_flag = src & mask;
5036   m68ki_write_8((mc68kcpu), ea, src ^ mask);
5037}
5038
5039
5040void m68000_base_device_ops::m68k_op_bchg_8_s_al(m68000_base_device* mc68kcpu)
5041{
5042   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5043   UINT32 ea = EA_AL_8(mc68kcpu);
5044   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5045
5046   (mc68kcpu)->not_z_flag = src & mask;
5047   m68ki_write_8((mc68kcpu), ea, src ^ mask);
5048}
5049
5050
5051void m68000_base_device_ops::m68k_op_bclr_32_r_d(m68000_base_device* mc68kcpu)
5052{
5053   UINT32* r_dst = &DY(mc68kcpu);
5054   UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
5055
5056   (mc68kcpu)->not_z_flag = *r_dst & mask;
5057   *r_dst &= ~mask;
5058}
5059
5060
5061void m68000_base_device_ops::m68k_op_bclr_8_r_ai(m68000_base_device* mc68kcpu)
5062{
5063   UINT32 ea = EA_AY_AI_8(mc68kcpu);
5064   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5065   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5066
5067   (mc68kcpu)->not_z_flag = src & mask;
5068   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5069}
5070
5071
5072void m68000_base_device_ops::m68k_op_bclr_8_r_pi(m68000_base_device* mc68kcpu)
5073{
5074   UINT32 ea = EA_AY_PI_8(mc68kcpu);
5075   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5076   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5077
5078   (mc68kcpu)->not_z_flag = src & mask;
5079   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5080}
5081
5082
5083void m68000_base_device_ops::m68k_op_bclr_8_r_pi7(m68000_base_device* mc68kcpu)
5084{
5085   UINT32 ea = EA_A7_PI_8(mc68kcpu);
5086   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5087   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5088
5089   (mc68kcpu)->not_z_flag = src & mask;
5090   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5091}
5092
5093
5094void m68000_base_device_ops::m68k_op_bclr_8_r_pd(m68000_base_device* mc68kcpu)
5095{
5096   UINT32 ea = EA_AY_PD_8(mc68kcpu);
5097   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5098   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5099
5100   (mc68kcpu)->not_z_flag = src & mask;
5101   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5102}
5103
5104
5105void m68000_base_device_ops::m68k_op_bclr_8_r_pd7(m68000_base_device* mc68kcpu)
5106{
5107   UINT32 ea = EA_A7_PD_8(mc68kcpu);
5108   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5109   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5110
5111   (mc68kcpu)->not_z_flag = src & mask;
5112   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5113}
5114
5115
5116void m68000_base_device_ops::m68k_op_bclr_8_r_di(m68000_base_device* mc68kcpu)
5117{
5118   UINT32 ea = EA_AY_DI_8(mc68kcpu);
5119   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5120   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5121
5122   (mc68kcpu)->not_z_flag = src & mask;
5123   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5124}
5125
5126
5127void m68000_base_device_ops::m68k_op_bclr_8_r_ix(m68000_base_device* mc68kcpu)
5128{
5129   UINT32 ea = EA_AY_IX_8(mc68kcpu);
5130   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5131   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5132
5133   (mc68kcpu)->not_z_flag = src & mask;
5134   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5135}
5136
5137
5138void m68000_base_device_ops::m68k_op_bclr_8_r_aw(m68000_base_device* mc68kcpu)
5139{
5140   UINT32 ea = EA_AW_8(mc68kcpu);
5141   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5142   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5143
5144   (mc68kcpu)->not_z_flag = src & mask;
5145   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5146}
5147
5148
5149void m68000_base_device_ops::m68k_op_bclr_8_r_al(m68000_base_device* mc68kcpu)
5150{
5151   UINT32 ea = EA_AL_8(mc68kcpu);
5152   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5153   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
5154
5155   (mc68kcpu)->not_z_flag = src & mask;
5156   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5157}
5158
5159
5160void m68000_base_device_ops::m68k_op_bclr_32_s_d(m68000_base_device* mc68kcpu)
5161{
5162   UINT32* r_dst = &DY(mc68kcpu);
5163   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
5164
5165   (mc68kcpu)->not_z_flag = *r_dst & mask;
5166   *r_dst &= ~mask;
5167}
5168
5169
5170void m68000_base_device_ops::m68k_op_bclr_8_s_ai(m68000_base_device* mc68kcpu)
5171{
5172   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5173   UINT32 ea = EA_AY_AI_8(mc68kcpu);
5174   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5175
5176   (mc68kcpu)->not_z_flag = src & mask;
5177   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5178}
5179
5180
5181void m68000_base_device_ops::m68k_op_bclr_8_s_pi(m68000_base_device* mc68kcpu)
5182{
5183   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5184   UINT32 ea = EA_AY_PI_8(mc68kcpu);
5185   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5186
5187   (mc68kcpu)->not_z_flag = src & mask;
5188   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5189}
5190
5191
5192void m68000_base_device_ops::m68k_op_bclr_8_s_pi7(m68000_base_device* mc68kcpu)
5193{
5194   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5195   UINT32 ea = EA_A7_PI_8(mc68kcpu);
5196   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5197
5198   (mc68kcpu)->not_z_flag = src & mask;
5199   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5200}
5201
5202
5203void m68000_base_device_ops::m68k_op_bclr_8_s_pd(m68000_base_device* mc68kcpu)
5204{
5205   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5206   UINT32 ea = EA_AY_PD_8(mc68kcpu);
5207   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5208
5209   (mc68kcpu)->not_z_flag = src & mask;
5210   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5211}
5212
5213
5214void m68000_base_device_ops::m68k_op_bclr_8_s_pd7(m68000_base_device* mc68kcpu)
5215{
5216   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5217   UINT32 ea = EA_A7_PD_8(mc68kcpu);
5218   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5219
5220   (mc68kcpu)->not_z_flag = src & mask;
5221   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5222}
5223
5224
5225void m68000_base_device_ops::m68k_op_bclr_8_s_di(m68000_base_device* mc68kcpu)
5226{
5227   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5228   UINT32 ea = EA_AY_DI_8(mc68kcpu);
5229   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5230
5231   (mc68kcpu)->not_z_flag = src & mask;
5232   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5233}
5234
5235
5236void m68000_base_device_ops::m68k_op_bclr_8_s_ix(m68000_base_device* mc68kcpu)
5237{
5238   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5239   UINT32 ea = EA_AY_IX_8(mc68kcpu);
5240   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5241
5242   (mc68kcpu)->not_z_flag = src & mask;
5243   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5244}
5245
5246
5247void m68000_base_device_ops::m68k_op_bclr_8_s_aw(m68000_base_device* mc68kcpu)
5248{
5249   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5250   UINT32 ea = EA_AW_8(mc68kcpu);
5251   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5252
5253   (mc68kcpu)->not_z_flag = src & mask;
5254   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5255}
5256
5257
5258void m68000_base_device_ops::m68k_op_bclr_8_s_al(m68000_base_device* mc68kcpu)
5259{
5260   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
5261   UINT32 ea = EA_AL_8(mc68kcpu);
5262   UINT32 src = m68ki_read_8((mc68kcpu), ea);
5263
5264   (mc68kcpu)->not_z_flag = src & mask;
5265   m68ki_write_8((mc68kcpu), ea, src & ~mask);
5266}
5267
5268
5269void m68000_base_device_ops::m68k_op_bfchg_32_d(m68000_base_device* mc68kcpu)
5270{
5271   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5272   {
5273      UINT32 word2 = OPER_I_16(mc68kcpu);
5274      UINT32 offset = (word2>>6)&31;
5275      UINT32 width = word2;
5276      UINT32* data = &DY(mc68kcpu);
5277      UINT64 mask;
5278
5279
5280      if(BIT_B(word2))
5281         offset = REG_D(mc68kcpu)[offset&7];
5282      if(BIT_5(word2))
5283         width = REG_D(mc68kcpu)[width&7];
5284
5285      offset &= 31;
5286      width = ((width-1) & 31) + 1;
5287
5288      mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5289      mask = ROR_32(mask, offset);
5290
5291      (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
5292      (mc68kcpu)->not_z_flag = *data & mask;
5293      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5294      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5295
5296      *data ^= mask;
5297
5298      return;
5299   }
5300   m68ki_exception_illegal(mc68kcpu);
5301}
5302
5303
5304void m68000_base_device_ops::m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu)
5305{
5306   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5307   {
5308      UINT32 word2 = OPER_I_16(mc68kcpu);
5309      INT32 offset = (word2>>6)&31;
5310      UINT32 width = word2;
5311      UINT32 mask_base;
5312      UINT32 data_long;
5313      UINT32 mask_long;
5314      UINT32 data_byte = 0;
5315      UINT32 mask_byte = 0;
5316      UINT32 ea = EA_AY_AI_8(mc68kcpu);
5317
5318
5319      if(BIT_B(word2))
5320         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5321      if(BIT_5(word2))
5322         width = REG_D(mc68kcpu)[width&7];
5323
5324      /* Offset is signed so we have to use ugly math =( */
5325      ea += offset / 8;
5326      offset %= 8;
5327      if(offset < 0)
5328      {
5329         offset += 8;
5330         ea--;
5331      }
5332      width = ((width-1) & 31) + 1;
5333
5334      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5335      mask_long = mask_base >> offset;
5336
5337      data_long = m68ki_read_32((mc68kcpu), ea);
5338      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5339      (mc68kcpu)->not_z_flag = data_long & mask_long;
5340      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5341      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5342
5343      m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
5344
5345      if((width + offset) > 32)
5346      {
5347         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5348         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5349         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5350         m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
5351      }
5352      return;
5353   }
5354   m68ki_exception_illegal(mc68kcpu);
5355}
5356
5357
5358void m68000_base_device_ops::m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu)
5359{
5360   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5361   {
5362      UINT32 word2 = OPER_I_16(mc68kcpu);
5363      INT32 offset = (word2>>6)&31;
5364      UINT32 width = word2;
5365      UINT32 mask_base;
5366      UINT32 data_long;
5367      UINT32 mask_long;
5368      UINT32 data_byte = 0;
5369      UINT32 mask_byte = 0;
5370      UINT32 ea = EA_AY_DI_8(mc68kcpu);
5371
5372
5373      if(BIT_B(word2))
5374         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5375      if(BIT_5(word2))
5376         width = REG_D(mc68kcpu)[width&7];
5377
5378      /* Offset is signed so we have to use ugly math =( */
5379      ea += offset / 8;
5380      offset %= 8;
5381      if(offset < 0)
5382      {
5383         offset += 8;
5384         ea--;
5385      }
5386      width = ((width-1) & 31) + 1;
5387
5388      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5389      mask_long = mask_base >> offset;
5390
5391      data_long = m68ki_read_32((mc68kcpu), ea);
5392      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5393      (mc68kcpu)->not_z_flag = data_long & mask_long;
5394      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5395      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5396
5397      m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
5398
5399      if((width + offset) > 32)
5400      {
5401         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5402         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5403         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5404         m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
5405      }
5406      return;
5407   }
5408   m68ki_exception_illegal(mc68kcpu);
5409}
5410
5411
5412void m68000_base_device_ops::m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu)
5413{
5414   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5415   {
5416      UINT32 word2 = OPER_I_16(mc68kcpu);
5417      INT32 offset = (word2>>6)&31;
5418      UINT32 width = word2;
5419      UINT32 mask_base;
5420      UINT32 data_long;
5421      UINT32 mask_long;
5422      UINT32 data_byte = 0;
5423      UINT32 mask_byte = 0;
5424      UINT32 ea = EA_AY_IX_8(mc68kcpu);
5425
5426
5427      if(BIT_B(word2))
5428         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5429      if(BIT_5(word2))
5430         width = REG_D(mc68kcpu)[width&7];
5431
5432      /* Offset is signed so we have to use ugly math =( */
5433      ea += offset / 8;
5434      offset %= 8;
5435      if(offset < 0)
5436      {
5437         offset += 8;
5438         ea--;
5439      }
5440      width = ((width-1) & 31) + 1;
5441
5442      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5443      mask_long = mask_base >> offset;
5444
5445      data_long = m68ki_read_32((mc68kcpu), ea);
5446      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5447      (mc68kcpu)->not_z_flag = data_long & mask_long;
5448      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5449      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5450
5451      m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
5452
5453      if((width + offset) > 32)
5454      {
5455         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5456         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5457         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5458         m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
5459      }
5460      return;
5461   }
5462   m68ki_exception_illegal(mc68kcpu);
5463}
5464
5465
5466void m68000_base_device_ops::m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu)
5467{
5468   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5469   {
5470      UINT32 word2 = OPER_I_16(mc68kcpu);
5471      INT32 offset = (word2>>6)&31;
5472      UINT32 width = word2;
5473      UINT32 mask_base;
5474      UINT32 data_long;
5475      UINT32 mask_long;
5476      UINT32 data_byte = 0;
5477      UINT32 mask_byte = 0;
5478      UINT32 ea = EA_AW_8(mc68kcpu);
5479
5480
5481      if(BIT_B(word2))
5482         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5483      if(BIT_5(word2))
5484         width = REG_D(mc68kcpu)[width&7];
5485
5486      /* Offset is signed so we have to use ugly math =( */
5487      ea += offset / 8;
5488      offset %= 8;
5489      if(offset < 0)
5490      {
5491         offset += 8;
5492         ea--;
5493      }
5494      width = ((width-1) & 31) + 1;
5495
5496      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5497      mask_long = mask_base >> offset;
5498
5499      data_long = m68ki_read_32((mc68kcpu), ea);
5500      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5501      (mc68kcpu)->not_z_flag = data_long & mask_long;
5502      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5503      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5504
5505      m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
5506
5507      if((width + offset) > 32)
5508      {
5509         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5510         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5511         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5512         m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
5513      }
5514      return;
5515   }
5516   m68ki_exception_illegal(mc68kcpu);
5517}
5518
5519
5520void m68000_base_device_ops::m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu)
5521{
5522   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5523   {
5524      UINT32 word2 = OPER_I_16(mc68kcpu);
5525      INT32 offset = (word2>>6)&31;
5526      UINT32 width = word2;
5527      UINT32 mask_base;
5528      UINT32 data_long;
5529      UINT32 mask_long;
5530      UINT32 data_byte = 0;
5531      UINT32 mask_byte = 0;
5532      UINT32 ea = EA_AL_8(mc68kcpu);
5533
5534
5535      if(BIT_B(word2))
5536         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5537      if(BIT_5(word2))
5538         width = REG_D(mc68kcpu)[width&7];
5539
5540      /* Offset is signed so we have to use ugly math =( */
5541      ea += offset / 8;
5542      offset %= 8;
5543      if(offset < 0)
5544      {
5545         offset += 8;
5546         ea--;
5547      }
5548      width = ((width-1) & 31) + 1;
5549
5550      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5551      mask_long = mask_base >> offset;
5552
5553      data_long = m68ki_read_32((mc68kcpu), ea);
5554      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5555      (mc68kcpu)->not_z_flag = data_long & mask_long;
5556      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5557      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5558
5559      m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
5560
5561      if((width + offset) > 32)
5562      {
5563         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5564         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5565         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5566         m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
5567      }
5568      return;
5569   }
5570   m68ki_exception_illegal(mc68kcpu);
5571}
5572
5573
5574void m68000_base_device_ops::m68k_op_bfclr_32_d(m68000_base_device* mc68kcpu)
5575{
5576   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5577   {
5578      UINT32 word2 = OPER_I_16(mc68kcpu);
5579      UINT32 offset = (word2>>6)&31;
5580      UINT32 width = word2;
5581      UINT32* data = &DY(mc68kcpu);
5582      UINT64 mask;
5583
5584
5585      if(BIT_B(word2))
5586         offset = REG_D(mc68kcpu)[offset&7];
5587      if(BIT_5(word2))
5588         width = REG_D(mc68kcpu)[width&7];
5589
5590
5591      offset &= 31;
5592      width = ((width-1) & 31) + 1;
5593
5594
5595      mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5596      mask = ROR_32(mask, offset);
5597
5598      (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
5599      (mc68kcpu)->not_z_flag = *data & mask;
5600      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5601      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5602
5603      *data &= ~mask;
5604
5605      return;
5606   }
5607   m68ki_exception_illegal(mc68kcpu);
5608}
5609
5610
5611void m68000_base_device_ops::m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu)
5612{
5613   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5614   {
5615      UINT32 word2 = OPER_I_16(mc68kcpu);
5616      INT32 offset = (word2>>6)&31;
5617      UINT32 width = word2;
5618      UINT32 mask_base;
5619      UINT32 data_long;
5620      UINT32 mask_long;
5621      UINT32 data_byte = 0;
5622      UINT32 mask_byte = 0;
5623      UINT32 ea = EA_AY_AI_8(mc68kcpu);
5624
5625
5626      if(BIT_B(word2))
5627         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5628      if(BIT_5(word2))
5629         width = REG_D(mc68kcpu)[width&7];
5630
5631      /* Offset is signed so we have to use ugly math =( */
5632      ea += offset / 8;
5633      offset %= 8;
5634      if(offset < 0)
5635      {
5636         offset += 8;
5637         ea--;
5638      }
5639      width = ((width-1) & 31) + 1;
5640
5641      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5642      mask_long = mask_base >> offset;
5643
5644      data_long = m68ki_read_32((mc68kcpu), ea);
5645      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5646      (mc68kcpu)->not_z_flag = data_long & mask_long;
5647      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5648      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5649
5650      m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
5651
5652      if((width + offset) > 32)
5653      {
5654         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5655         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5656         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5657         m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
5658      }
5659      return;
5660   }
5661   m68ki_exception_illegal(mc68kcpu);
5662}
5663
5664
5665void m68000_base_device_ops::m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu)
5666{
5667   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5668   {
5669      UINT32 word2 = OPER_I_16(mc68kcpu);
5670      INT32 offset = (word2>>6)&31;
5671      UINT32 width = word2;
5672      UINT32 mask_base;
5673      UINT32 data_long;
5674      UINT32 mask_long;
5675      UINT32 data_byte = 0;
5676      UINT32 mask_byte = 0;
5677      UINT32 ea = EA_AY_DI_8(mc68kcpu);
5678
5679
5680      if(BIT_B(word2))
5681         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5682      if(BIT_5(word2))
5683         width = REG_D(mc68kcpu)[width&7];
5684
5685      /* Offset is signed so we have to use ugly math =( */
5686      ea += offset / 8;
5687      offset %= 8;
5688      if(offset < 0)
5689      {
5690         offset += 8;
5691         ea--;
5692      }
5693      width = ((width-1) & 31) + 1;
5694
5695      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5696      mask_long = mask_base >> offset;
5697
5698      data_long = m68ki_read_32((mc68kcpu), ea);
5699      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5700      (mc68kcpu)->not_z_flag = data_long & mask_long;
5701      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5702      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5703
5704      m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
5705
5706      if((width + offset) > 32)
5707      {
5708         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5709         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5710         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5711         m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
5712      }
5713      return;
5714   }
5715   m68ki_exception_illegal(mc68kcpu);
5716}
5717
5718
5719void m68000_base_device_ops::m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu)
5720{
5721   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5722   {
5723      UINT32 word2 = OPER_I_16(mc68kcpu);
5724      INT32 offset = (word2>>6)&31;
5725      UINT32 width = word2;
5726      UINT32 mask_base;
5727      UINT32 data_long;
5728      UINT32 mask_long;
5729      UINT32 data_byte = 0;
5730      UINT32 mask_byte = 0;
5731      UINT32 ea = EA_AY_IX_8(mc68kcpu);
5732
5733
5734      if(BIT_B(word2))
5735         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5736      if(BIT_5(word2))
5737         width = REG_D(mc68kcpu)[width&7];
5738
5739      /* Offset is signed so we have to use ugly math =( */
5740      ea += offset / 8;
5741      offset %= 8;
5742      if(offset < 0)
5743      {
5744         offset += 8;
5745         ea--;
5746      }
5747      width = ((width-1) & 31) + 1;
5748
5749      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5750      mask_long = mask_base >> offset;
5751
5752      data_long = m68ki_read_32((mc68kcpu), ea);
5753      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5754      (mc68kcpu)->not_z_flag = data_long & mask_long;
5755      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5756      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5757
5758      m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
5759
5760      if((width + offset) > 32)
5761      {
5762         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5763         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5764         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5765         m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
5766      }
5767      return;
5768   }
5769   m68ki_exception_illegal(mc68kcpu);
5770}
5771
5772
5773void m68000_base_device_ops::m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu)
5774{
5775   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5776   {
5777      UINT32 word2 = OPER_I_16(mc68kcpu);
5778      INT32 offset = (word2>>6)&31;
5779      UINT32 width = word2;
5780      UINT32 mask_base;
5781      UINT32 data_long;
5782      UINT32 mask_long;
5783      UINT32 data_byte = 0;
5784      UINT32 mask_byte = 0;
5785      UINT32 ea = EA_AW_8(mc68kcpu);
5786
5787
5788      if(BIT_B(word2))
5789         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5790      if(BIT_5(word2))
5791         width = REG_D(mc68kcpu)[width&7];
5792
5793      /* Offset is signed so we have to use ugly math =( */
5794      ea += offset / 8;
5795      offset %= 8;
5796      if(offset < 0)
5797      {
5798         offset += 8;
5799         ea--;
5800      }
5801      width = ((width-1) & 31) + 1;
5802
5803      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5804      mask_long = mask_base >> offset;
5805
5806      data_long = m68ki_read_32((mc68kcpu), ea);
5807      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5808      (mc68kcpu)->not_z_flag = data_long & mask_long;
5809      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5810      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5811
5812      m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
5813
5814      if((width + offset) > 32)
5815      {
5816         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5817         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5818         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5819         m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
5820      }
5821      return;
5822   }
5823   m68ki_exception_illegal(mc68kcpu);
5824}
5825
5826
5827void m68000_base_device_ops::m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu)
5828{
5829   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5830   {
5831      UINT32 word2 = OPER_I_16(mc68kcpu);
5832      INT32 offset = (word2>>6)&31;
5833      UINT32 width = word2;
5834      UINT32 mask_base;
5835      UINT32 data_long;
5836      UINT32 mask_long;
5837      UINT32 data_byte = 0;
5838      UINT32 mask_byte = 0;
5839      UINT32 ea = EA_AL_8(mc68kcpu);
5840
5841
5842      if(BIT_B(word2))
5843         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5844      if(BIT_5(word2))
5845         width = REG_D(mc68kcpu)[width&7];
5846
5847      /* Offset is signed so we have to use ugly math =( */
5848      ea += offset / 8;
5849      offset %= 8;
5850      if(offset < 0)
5851      {
5852         offset += 8;
5853         ea--;
5854      }
5855      width = ((width-1) & 31) + 1;
5856
5857      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
5858      mask_long = mask_base >> offset;
5859
5860      data_long = m68ki_read_32((mc68kcpu), ea);
5861      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
5862      (mc68kcpu)->not_z_flag = data_long & mask_long;
5863      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5864      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5865
5866      m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
5867
5868      if((width + offset) > 32)
5869      {
5870         mask_byte = MASK_OUT_ABOVE_8(mask_base);
5871         data_byte = m68ki_read_8((mc68kcpu), ea+4);
5872         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
5873         m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
5874      }
5875      return;
5876   }
5877   m68ki_exception_illegal(mc68kcpu);
5878}
5879
5880
5881void m68000_base_device_ops::m68k_op_bfexts_32_d(m68000_base_device* mc68kcpu)
5882{
5883   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5884   {
5885      UINT32 word2 = OPER_I_16(mc68kcpu);
5886      UINT32 offset = (word2>>6)&31;
5887      UINT32 width = word2;
5888      UINT64 data = DY(mc68kcpu);
5889
5890
5891      if(BIT_B(word2))
5892         offset = REG_D(mc68kcpu)[offset&7];
5893      if(BIT_5(word2))
5894         width = REG_D(mc68kcpu)[width&7];
5895
5896      offset &= 31;
5897      width = ((width-1) & 31) + 1;
5898
5899      data = ROL_32(data, offset);
5900      (mc68kcpu)->n_flag = NFLAG_32(data);
5901      data = MAKE_INT_32(data) >> (32 - width);
5902
5903      (mc68kcpu)->not_z_flag = data;
5904      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5905      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5906
5907      REG_D(mc68kcpu)[(word2>>12)&7] = data;
5908
5909      return;
5910   }
5911   m68ki_exception_illegal(mc68kcpu);
5912}
5913
5914
5915void m68000_base_device_ops::m68k_op_bfexts_32_ai(m68000_base_device* mc68kcpu)
5916{
5917   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5918   {
5919      UINT32 word2 = OPER_I_16(mc68kcpu);
5920      INT32 offset = (word2>>6)&31;
5921      UINT32 width = word2;
5922      UINT32 data;
5923      UINT32 ea = EA_AY_AI_8(mc68kcpu);
5924
5925
5926      if(BIT_B(word2))
5927         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5928      if(BIT_5(word2))
5929         width = REG_D(mc68kcpu)[width&7];
5930
5931      if(BIT_B(word2))
5932      {
5933         /* Offset is signed so we have to use ugly math =( */
5934         ea += offset / 8;
5935         offset %= 8;
5936         if(offset < 0)
5937         {
5938            offset += 8;
5939            ea--;
5940         }
5941      }
5942      width = ((width-1) & 31) + 1;
5943
5944      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
5945            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
5946
5947      data = MASK_OUT_ABOVE_32(data<<offset);
5948
5949      if((offset+width) > 32)
5950         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
5951
5952      (mc68kcpu)->n_flag = NFLAG_32(data);
5953      data  = MAKE_INT_32(data) >> (32 - width);
5954
5955      (mc68kcpu)->not_z_flag = data;
5956      (mc68kcpu)->v_flag = VFLAG_CLEAR;
5957      (mc68kcpu)->c_flag = CFLAG_CLEAR;
5958
5959      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
5960
5961      return;
5962   }
5963   m68ki_exception_illegal(mc68kcpu);
5964}
5965
5966
5967void m68000_base_device_ops::m68k_op_bfexts_32_di(m68000_base_device* mc68kcpu)
5968{
5969   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
5970   {
5971      UINT32 word2 = OPER_I_16(mc68kcpu);
5972      INT32 offset = (word2>>6)&31;
5973      UINT32 width = word2;
5974      UINT32 data;
5975      UINT32 ea = EA_AY_DI_8(mc68kcpu);
5976
5977
5978      if(BIT_B(word2))
5979         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
5980      if(BIT_5(word2))
5981         width = REG_D(mc68kcpu)[width&7];
5982
5983      if(BIT_B(word2))
5984      {
5985         /* Offset is signed so we have to use ugly math =( */
5986         ea += offset / 8;
5987         offset %= 8;
5988         if(offset < 0)
5989         {
5990            offset += 8;
5991            ea--;
5992         }
5993      }
5994      width = ((width-1) & 31) + 1;
5995
5996      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
5997            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
5998
5999      data = MASK_OUT_ABOVE_32(data<<offset);
6000
6001      if((offset+width) > 32)
6002         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6003
6004      (mc68kcpu)->n_flag = NFLAG_32(data);
6005      data  = MAKE_INT_32(data) >> (32 - width);
6006
6007      (mc68kcpu)->not_z_flag = data;
6008      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6009      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6010
6011      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6012
6013      return;
6014   }
6015   m68ki_exception_illegal(mc68kcpu);
6016}
6017
6018
6019void m68000_base_device_ops::m68k_op_bfexts_32_ix(m68000_base_device* mc68kcpu)
6020{
6021   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6022   {
6023      UINT32 word2 = OPER_I_16(mc68kcpu);
6024      INT32 offset = (word2>>6)&31;
6025      UINT32 width = word2;
6026      UINT32 data;
6027      UINT32 ea = EA_AY_IX_8(mc68kcpu);
6028
6029
6030      if(BIT_B(word2))
6031         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6032      if(BIT_5(word2))
6033         width = REG_D(mc68kcpu)[width&7];
6034
6035      if(BIT_B(word2))
6036      {
6037         /* Offset is signed so we have to use ugly math =( */
6038         ea += offset / 8;
6039         offset %= 8;
6040         if(offset < 0)
6041         {
6042            offset += 8;
6043            ea--;
6044         }
6045      }
6046      width = ((width-1) & 31) + 1;
6047
6048      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6049            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6050
6051      data = MASK_OUT_ABOVE_32(data<<offset);
6052
6053      if((offset+width) > 32)
6054         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6055
6056      (mc68kcpu)->n_flag = NFLAG_32(data);
6057      data  = MAKE_INT_32(data) >> (32 - width);
6058
6059      (mc68kcpu)->not_z_flag = data;
6060      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6061      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6062
6063      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6064
6065      return;
6066   }
6067   m68ki_exception_illegal(mc68kcpu);
6068}
6069
6070
6071void m68000_base_device_ops::m68k_op_bfexts_32_aw(m68000_base_device* mc68kcpu)
6072{
6073   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6074   {
6075      UINT32 word2 = OPER_I_16(mc68kcpu);
6076      INT32 offset = (word2>>6)&31;
6077      UINT32 width = word2;
6078      UINT32 data;
6079      UINT32 ea = EA_AW_8(mc68kcpu);
6080
6081
6082      if(BIT_B(word2))
6083         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6084      if(BIT_5(word2))
6085         width = REG_D(mc68kcpu)[width&7];
6086
6087      if(BIT_B(word2))
6088      {
6089         /* Offset is signed so we have to use ugly math =( */
6090         ea += offset / 8;
6091         offset %= 8;
6092         if(offset < 0)
6093         {
6094            offset += 8;
6095            ea--;
6096         }
6097      }
6098      width = ((width-1) & 31) + 1;
6099
6100      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6101            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6102
6103      data = MASK_OUT_ABOVE_32(data<<offset);
6104
6105      if((offset+width) > 32)
6106         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6107
6108      (mc68kcpu)->n_flag = NFLAG_32(data);
6109      data  = MAKE_INT_32(data) >> (32 - width);
6110
6111      (mc68kcpu)->not_z_flag = data;
6112      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6113      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6114
6115      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6116
6117      return;
6118   }
6119   m68ki_exception_illegal(mc68kcpu);
6120}
6121
6122
6123void m68000_base_device_ops::m68k_op_bfexts_32_al(m68000_base_device* mc68kcpu)
6124{
6125   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6126   {
6127      UINT32 word2 = OPER_I_16(mc68kcpu);
6128      INT32 offset = (word2>>6)&31;
6129      UINT32 width = word2;
6130      UINT32 data;
6131      UINT32 ea = EA_AL_8(mc68kcpu);
6132
6133
6134      if(BIT_B(word2))
6135         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6136      if(BIT_5(word2))
6137         width = REG_D(mc68kcpu)[width&7];
6138
6139      if(BIT_B(word2))
6140      {
6141         /* Offset is signed so we have to use ugly math =( */
6142         ea += offset / 8;
6143         offset %= 8;
6144         if(offset < 0)
6145         {
6146            offset += 8;
6147            ea--;
6148         }
6149      }
6150      width = ((width-1) & 31) + 1;
6151
6152      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6153            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6154
6155      data = MASK_OUT_ABOVE_32(data<<offset);
6156
6157      if((offset+width) > 32)
6158         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6159
6160      (mc68kcpu)->n_flag = NFLAG_32(data);
6161      data  = MAKE_INT_32(data) >> (32 - width);
6162
6163      (mc68kcpu)->not_z_flag = data;
6164      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6165      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6166
6167      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6168
6169      return;
6170   }
6171   m68ki_exception_illegal(mc68kcpu);
6172}
6173
6174
6175void m68000_base_device_ops::m68k_op_bfexts_32_pcdi(m68000_base_device* mc68kcpu)
6176{
6177   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6178   {
6179      UINT32 word2 = OPER_I_16(mc68kcpu);
6180      INT32 offset = (word2>>6)&31;
6181      UINT32 width = word2;
6182      UINT32 data;
6183      UINT32 ea = EA_PCDI_8(mc68kcpu);
6184
6185
6186      if(BIT_B(word2))
6187         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6188      if(BIT_5(word2))
6189         width = REG_D(mc68kcpu)[width&7];
6190
6191      if(BIT_B(word2))
6192      {
6193         /* Offset is signed so we have to use ugly math =( */
6194         ea += offset / 8;
6195         offset %= 8;
6196         if(offset < 0)
6197         {
6198            offset += 8;
6199            ea--;
6200         }
6201      }
6202      width = ((width-1) & 31) + 1;
6203
6204      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6205            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6206
6207      data = MASK_OUT_ABOVE_32(data<<offset);
6208
6209      if((offset+width) > 32)
6210         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6211
6212      (mc68kcpu)->n_flag = NFLAG_32(data);
6213      data  = MAKE_INT_32(data) >> (32 - width);
6214
6215      (mc68kcpu)->not_z_flag = data;
6216      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6217      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6218
6219      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6220
6221      return;
6222   }
6223   m68ki_exception_illegal(mc68kcpu);
6224}
6225
6226
6227void m68000_base_device_ops::m68k_op_bfexts_32_pcix(m68000_base_device* mc68kcpu)
6228{
6229   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6230   {
6231      UINT32 word2 = OPER_I_16(mc68kcpu);
6232      INT32 offset = (word2>>6)&31;
6233      UINT32 width = word2;
6234      UINT32 data;
6235      UINT32 ea = EA_PCIX_8(mc68kcpu);
6236
6237
6238      if(BIT_B(word2))
6239         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6240      if(BIT_5(word2))
6241         width = REG_D(mc68kcpu)[width&7];
6242
6243      if(BIT_B(word2))
6244      {
6245         /* Offset is signed so we have to use ugly math =( */
6246         ea += offset / 8;
6247         offset %= 8;
6248         if(offset < 0)
6249         {
6250            offset += 8;
6251            ea--;
6252         }
6253      }
6254      width = ((width-1) & 31) + 1;
6255
6256      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6257            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6258
6259      data = MASK_OUT_ABOVE_32(data<<offset);
6260
6261      if((offset+width) > 32)
6262         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6263
6264      (mc68kcpu)->n_flag = NFLAG_32(data);
6265      data  = MAKE_INT_32(data) >> (32 - width);
6266
6267      (mc68kcpu)->not_z_flag = data;
6268      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6269      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6270
6271      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6272
6273      return;
6274   }
6275   m68ki_exception_illegal(mc68kcpu);
6276}
6277
6278
6279void m68000_base_device_ops::m68k_op_bfextu_32_d(m68000_base_device* mc68kcpu)
6280{
6281   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6282   {
6283      UINT32 word2 = OPER_I_16(mc68kcpu);
6284      UINT32 offset = (word2>>6)&31;
6285      UINT32 width = word2;
6286      UINT64 data = DY(mc68kcpu);
6287
6288
6289      if(BIT_B(word2))
6290         offset = REG_D(mc68kcpu)[offset&7];
6291      if(BIT_5(word2))
6292         width = REG_D(mc68kcpu)[width&7];
6293
6294      offset &= 31;
6295      width = ((width-1) & 31) + 1;
6296
6297      data = ROL_32(data, offset);
6298      (mc68kcpu)->n_flag = NFLAG_32(data);
6299      data >>= 32 - width;
6300
6301      (mc68kcpu)->not_z_flag = data;
6302      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6303      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6304
6305      REG_D(mc68kcpu)[(word2>>12)&7] = data;
6306
6307      return;
6308   }
6309   m68ki_exception_illegal(mc68kcpu);
6310}
6311
6312
6313void m68000_base_device_ops::m68k_op_bfextu_32_ai(m68000_base_device* mc68kcpu)
6314{
6315   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6316   {
6317      UINT32 word2 = OPER_I_16(mc68kcpu);
6318      INT32 offset = (word2>>6)&31;
6319      UINT32 width = word2;
6320      UINT32 data;
6321      UINT32 ea = EA_AY_AI_8(mc68kcpu);
6322
6323
6324      if(BIT_B(word2))
6325      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6326      if(BIT_5(word2))
6327         width = REG_D(mc68kcpu)[width&7];
6328
6329      if(BIT_B(word2))
6330      {
6331         /* Offset is signed so we have to use ugly math =( */
6332         ea += offset / 8;
6333         offset %= 8;
6334         if(offset < 0)
6335         {
6336            offset += 8;
6337            ea--;
6338         }
6339      }
6340      width = ((width-1) & 31) + 1;
6341
6342      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6343            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6344      data = MASK_OUT_ABOVE_32(data<<offset);
6345
6346      if((offset+width) > 32)
6347         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6348
6349      (mc68kcpu)->n_flag = NFLAG_32(data);
6350      data  >>= (32 - width);
6351
6352      (mc68kcpu)->not_z_flag = data;
6353      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6354      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6355
6356      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6357
6358      return;
6359   }
6360   m68ki_exception_illegal(mc68kcpu);
6361}
6362
6363
6364void m68000_base_device_ops::m68k_op_bfextu_32_di(m68000_base_device* mc68kcpu)
6365{
6366   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6367   {
6368      UINT32 word2 = OPER_I_16(mc68kcpu);
6369      INT32 offset = (word2>>6)&31;
6370      UINT32 width = word2;
6371      UINT32 data;
6372      UINT32 ea = EA_AY_DI_8(mc68kcpu);
6373
6374
6375      if(BIT_B(word2))
6376      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6377      if(BIT_5(word2))
6378         width = REG_D(mc68kcpu)[width&7];
6379
6380      if(BIT_B(word2))
6381      {
6382         /* Offset is signed so we have to use ugly math =( */
6383         ea += offset / 8;
6384         offset %= 8;
6385         if(offset < 0)
6386         {
6387            offset += 8;
6388            ea--;
6389         }
6390      }
6391      width = ((width-1) & 31) + 1;
6392
6393      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6394            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6395      data = MASK_OUT_ABOVE_32(data<<offset);
6396
6397      if((offset+width) > 32)
6398         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6399
6400      (mc68kcpu)->n_flag = NFLAG_32(data);
6401      data  >>= (32 - width);
6402
6403      (mc68kcpu)->not_z_flag = data;
6404      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6405      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6406
6407      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6408
6409      return;
6410   }
6411   m68ki_exception_illegal(mc68kcpu);
6412}
6413
6414
6415void m68000_base_device_ops::m68k_op_bfextu_32_ix(m68000_base_device* mc68kcpu)
6416{
6417   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6418   {
6419      UINT32 word2 = OPER_I_16(mc68kcpu);
6420      INT32 offset = (word2>>6)&31;
6421      UINT32 width = word2;
6422      UINT32 data;
6423      UINT32 ea = EA_AY_IX_8(mc68kcpu);
6424
6425
6426      if(BIT_B(word2))
6427      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6428      if(BIT_5(word2))
6429         width = REG_D(mc68kcpu)[width&7];
6430
6431      if(BIT_B(word2))
6432      {
6433         /* Offset is signed so we have to use ugly math =( */
6434         ea += offset / 8;
6435         offset %= 8;
6436         if(offset < 0)
6437         {
6438            offset += 8;
6439            ea--;
6440         }
6441      }
6442      width = ((width-1) & 31) + 1;
6443
6444      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6445            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6446      data = MASK_OUT_ABOVE_32(data<<offset);
6447
6448      if((offset+width) > 32)
6449         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6450
6451      (mc68kcpu)->n_flag = NFLAG_32(data);
6452      data  >>= (32 - width);
6453
6454      (mc68kcpu)->not_z_flag = data;
6455      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6456      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6457
6458      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6459
6460      return;
6461   }
6462   m68ki_exception_illegal(mc68kcpu);
6463}
6464
6465
6466void m68000_base_device_ops::m68k_op_bfextu_32_aw(m68000_base_device* mc68kcpu)
6467{
6468   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6469   {
6470      UINT32 word2 = OPER_I_16(mc68kcpu);
6471      INT32 offset = (word2>>6)&31;
6472      UINT32 width = word2;
6473      UINT32 data;
6474      UINT32 ea = EA_AW_8(mc68kcpu);
6475
6476
6477      if(BIT_B(word2))
6478      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6479      if(BIT_5(word2))
6480         width = REG_D(mc68kcpu)[width&7];
6481
6482      if(BIT_B(word2))
6483      {
6484         /* Offset is signed so we have to use ugly math =( */
6485         ea += offset / 8;
6486         offset %= 8;
6487         if(offset < 0)
6488         {
6489            offset += 8;
6490            ea--;
6491         }
6492      }
6493      width = ((width-1) & 31) + 1;
6494
6495      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6496            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6497      data = MASK_OUT_ABOVE_32(data<<offset);
6498
6499      if((offset+width) > 32)
6500         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6501
6502      (mc68kcpu)->n_flag = NFLAG_32(data);
6503      data  >>= (32 - width);
6504
6505      (mc68kcpu)->not_z_flag = data;
6506      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6507      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6508
6509      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6510
6511      return;
6512   }
6513   m68ki_exception_illegal(mc68kcpu);
6514}
6515
6516
6517void m68000_base_device_ops::m68k_op_bfextu_32_al(m68000_base_device* mc68kcpu)
6518{
6519   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6520   {
6521      UINT32 word2 = OPER_I_16(mc68kcpu);
6522      INT32 offset = (word2>>6)&31;
6523      UINT32 width = word2;
6524      UINT32 data;
6525      UINT32 ea = EA_AL_8(mc68kcpu);
6526
6527
6528      if(BIT_B(word2))
6529      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6530      if(BIT_5(word2))
6531         width = REG_D(mc68kcpu)[width&7];
6532
6533      if(BIT_B(word2))
6534      {
6535         /* Offset is signed so we have to use ugly math =( */
6536         ea += offset / 8;
6537         offset %= 8;
6538         if(offset < 0)
6539         {
6540            offset += 8;
6541            ea--;
6542         }
6543      }
6544      width = ((width-1) & 31) + 1;
6545
6546      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6547            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6548      data = MASK_OUT_ABOVE_32(data<<offset);
6549
6550      if((offset+width) > 32)
6551         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6552
6553      (mc68kcpu)->n_flag = NFLAG_32(data);
6554      data  >>= (32 - width);
6555
6556      (mc68kcpu)->not_z_flag = data;
6557      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6558      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6559
6560      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6561
6562      return;
6563   }
6564   m68ki_exception_illegal(mc68kcpu);
6565}
6566
6567
6568void m68000_base_device_ops::m68k_op_bfextu_32_pcdi(m68000_base_device* mc68kcpu)
6569{
6570   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6571   {
6572      UINT32 word2 = OPER_I_16(mc68kcpu);
6573      INT32 offset = (word2>>6)&31;
6574      UINT32 width = word2;
6575      UINT32 data;
6576      UINT32 ea = EA_PCDI_8(mc68kcpu);
6577
6578
6579      if(BIT_B(word2))
6580      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6581      if(BIT_5(word2))
6582         width = REG_D(mc68kcpu)[width&7];
6583
6584      if(BIT_B(word2))
6585      {
6586         /* Offset is signed so we have to use ugly math =( */
6587         ea += offset / 8;
6588         offset %= 8;
6589         if(offset < 0)
6590         {
6591            offset += 8;
6592            ea--;
6593         }
6594      }
6595      width = ((width-1) & 31) + 1;
6596
6597      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6598            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6599      data = MASK_OUT_ABOVE_32(data<<offset);
6600
6601      if((offset+width) > 32)
6602         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6603
6604      (mc68kcpu)->n_flag = NFLAG_32(data);
6605      data  >>= (32 - width);
6606
6607      (mc68kcpu)->not_z_flag = data;
6608      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6609      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6610
6611      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6612
6613      return;
6614   }
6615   m68ki_exception_illegal(mc68kcpu);
6616}
6617
6618
6619void m68000_base_device_ops::m68k_op_bfextu_32_pcix(m68000_base_device* mc68kcpu)
6620{
6621   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6622   {
6623      UINT32 word2 = OPER_I_16(mc68kcpu);
6624      INT32 offset = (word2>>6)&31;
6625      UINT32 width = word2;
6626      UINT32 data;
6627      UINT32 ea = EA_PCIX_8(mc68kcpu);
6628
6629
6630      if(BIT_B(word2))
6631      offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6632      if(BIT_5(word2))
6633         width = REG_D(mc68kcpu)[width&7];
6634
6635      if(BIT_B(word2))
6636      {
6637         /* Offset is signed so we have to use ugly math =( */
6638         ea += offset / 8;
6639         offset %= 8;
6640         if(offset < 0)
6641         {
6642            offset += 8;
6643            ea--;
6644         }
6645      }
6646      width = ((width-1) & 31) + 1;
6647
6648      data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
6649            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6650      data = MASK_OUT_ABOVE_32(data<<offset);
6651
6652      if((offset+width) > 32)
6653         data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
6654
6655      (mc68kcpu)->n_flag = NFLAG_32(data);
6656      data  >>= (32 - width);
6657
6658      (mc68kcpu)->not_z_flag = data;
6659      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6660      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6661
6662      REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
6663
6664      return;
6665   }
6666   m68ki_exception_illegal(mc68kcpu);
6667}
6668
6669
6670void m68000_base_device_ops::m68k_op_bfffo_32_d(m68000_base_device* mc68kcpu)
6671{
6672   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6673   {
6674      UINT32 word2 = OPER_I_16(mc68kcpu);
6675      UINT32 offset = (word2>>6)&31;
6676      UINT32 width = word2;
6677      UINT64 data = DY(mc68kcpu);
6678      UINT32 bit;
6679
6680
6681      if(BIT_B(word2))
6682         offset = REG_D(mc68kcpu)[offset&7];
6683      if(BIT_5(word2))
6684         width = REG_D(mc68kcpu)[width&7];
6685
6686      offset &= 31;
6687      width = ((width-1) & 31) + 1;
6688
6689      data = ROL_32(data, offset);
6690      (mc68kcpu)->n_flag = NFLAG_32(data);
6691      data >>= 32 - width;
6692
6693      (mc68kcpu)->not_z_flag = data;
6694      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6695      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6696
6697      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6698         offset++;
6699
6700      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6701
6702      return;
6703   }
6704   m68ki_exception_illegal(mc68kcpu);
6705}
6706
6707
6708void m68000_base_device_ops::m68k_op_bfffo_32_ai(m68000_base_device* mc68kcpu)
6709{
6710   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6711   {
6712      UINT32 word2 = OPER_I_16(mc68kcpu);
6713      INT32 offset = (word2>>6)&31;
6714      INT32 local_offset;
6715      UINT32 width = word2;
6716      UINT32 data;
6717      UINT32 bit;
6718      UINT32 ea = EA_AY_AI_8(mc68kcpu);
6719
6720
6721      if(BIT_B(word2))
6722         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6723      if(BIT_5(word2))
6724         width = REG_D(mc68kcpu)[width&7];
6725
6726      /* Offset is signed so we have to use ugly math =( */
6727      ea += offset / 8;
6728      local_offset = offset % 8;
6729      if(local_offset < 0)
6730      {
6731         local_offset += 8;
6732         ea--;
6733      }
6734      width = ((width-1) & 31) + 1;
6735
6736      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6737      data = MASK_OUT_ABOVE_32(data<<local_offset);
6738
6739      if((local_offset+width) > 32)
6740         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
6741
6742      (mc68kcpu)->n_flag = NFLAG_32(data);
6743      data  >>= (32 - width);
6744
6745      (mc68kcpu)->not_z_flag = data;
6746      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6747      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6748
6749      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6750         offset++;
6751
6752      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6753
6754      return;
6755   }
6756   m68ki_exception_illegal(mc68kcpu);
6757}
6758
6759
6760void m68000_base_device_ops::m68k_op_bfffo_32_di(m68000_base_device* mc68kcpu)
6761{
6762   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6763   {
6764      UINT32 word2 = OPER_I_16(mc68kcpu);
6765      INT32 offset = (word2>>6)&31;
6766      INT32 local_offset;
6767      UINT32 width = word2;
6768      UINT32 data;
6769      UINT32 bit;
6770      UINT32 ea = EA_AY_DI_8(mc68kcpu);
6771
6772
6773      if(BIT_B(word2))
6774         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6775      if(BIT_5(word2))
6776         width = REG_D(mc68kcpu)[width&7];
6777
6778      /* Offset is signed so we have to use ugly math =( */
6779      ea += offset / 8;
6780      local_offset = offset % 8;
6781      if(local_offset < 0)
6782      {
6783         local_offset += 8;
6784         ea--;
6785      }
6786      width = ((width-1) & 31) + 1;
6787
6788      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6789      data = MASK_OUT_ABOVE_32(data<<local_offset);
6790
6791      if((local_offset+width) > 32)
6792         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
6793
6794      (mc68kcpu)->n_flag = NFLAG_32(data);
6795      data  >>= (32 - width);
6796
6797      (mc68kcpu)->not_z_flag = data;
6798      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6799      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6800
6801      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6802         offset++;
6803
6804      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6805
6806      return;
6807   }
6808   m68ki_exception_illegal(mc68kcpu);
6809}
6810
6811
6812void m68000_base_device_ops::m68k_op_bfffo_32_ix(m68000_base_device* mc68kcpu)
6813{
6814   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6815   {
6816      UINT32 word2 = OPER_I_16(mc68kcpu);
6817      INT32 offset = (word2>>6)&31;
6818      INT32 local_offset;
6819      UINT32 width = word2;
6820      UINT32 data;
6821      UINT32 bit;
6822      UINT32 ea = EA_AY_IX_8(mc68kcpu);
6823
6824
6825      if(BIT_B(word2))
6826         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6827      if(BIT_5(word2))
6828         width = REG_D(mc68kcpu)[width&7];
6829
6830      /* Offset is signed so we have to use ugly math =( */
6831      ea += offset / 8;
6832      local_offset = offset % 8;
6833      if(local_offset < 0)
6834      {
6835         local_offset += 8;
6836         ea--;
6837      }
6838      width = ((width-1) & 31) + 1;
6839
6840      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6841      data = MASK_OUT_ABOVE_32(data<<local_offset);
6842
6843      if((local_offset+width) > 32)
6844         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
6845
6846      (mc68kcpu)->n_flag = NFLAG_32(data);
6847      data  >>= (32 - width);
6848
6849      (mc68kcpu)->not_z_flag = data;
6850      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6851      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6852
6853      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6854         offset++;
6855
6856      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6857
6858      return;
6859   }
6860   m68ki_exception_illegal(mc68kcpu);
6861}
6862
6863
6864void m68000_base_device_ops::m68k_op_bfffo_32_aw(m68000_base_device* mc68kcpu)
6865{
6866   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6867   {
6868      UINT32 word2 = OPER_I_16(mc68kcpu);
6869      INT32 offset = (word2>>6)&31;
6870      INT32 local_offset;
6871      UINT32 width = word2;
6872      UINT32 data;
6873      UINT32 bit;
6874      UINT32 ea = EA_AW_8(mc68kcpu);
6875
6876
6877      if(BIT_B(word2))
6878         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6879      if(BIT_5(word2))
6880         width = REG_D(mc68kcpu)[width&7];
6881
6882      /* Offset is signed so we have to use ugly math =( */
6883      ea += offset / 8;
6884      local_offset = offset % 8;
6885      if(local_offset < 0)
6886      {
6887         local_offset += 8;
6888         ea--;
6889      }
6890      width = ((width-1) & 31) + 1;
6891
6892      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6893      data = MASK_OUT_ABOVE_32(data<<local_offset);
6894
6895      if((local_offset+width) > 32)
6896         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
6897
6898      (mc68kcpu)->n_flag = NFLAG_32(data);
6899      data  >>= (32 - width);
6900
6901      (mc68kcpu)->not_z_flag = data;
6902      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6903      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6904
6905      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6906         offset++;
6907
6908      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6909
6910      return;
6911   }
6912   m68ki_exception_illegal(mc68kcpu);
6913}
6914
6915
6916void m68000_base_device_ops::m68k_op_bfffo_32_al(m68000_base_device* mc68kcpu)
6917{
6918   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6919   {
6920      UINT32 word2 = OPER_I_16(mc68kcpu);
6921      INT32 offset = (word2>>6)&31;
6922      INT32 local_offset;
6923      UINT32 width = word2;
6924      UINT32 data;
6925      UINT32 bit;
6926      UINT32 ea = EA_AL_8(mc68kcpu);
6927
6928
6929      if(BIT_B(word2))
6930         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6931      if(BIT_5(word2))
6932         width = REG_D(mc68kcpu)[width&7];
6933
6934      /* Offset is signed so we have to use ugly math =( */
6935      ea += offset / 8;
6936      local_offset = offset % 8;
6937      if(local_offset < 0)
6938      {
6939         local_offset += 8;
6940         ea--;
6941      }
6942      width = ((width-1) & 31) + 1;
6943
6944      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6945      data = MASK_OUT_ABOVE_32(data<<local_offset);
6946
6947      if((local_offset+width) > 32)
6948         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
6949
6950      (mc68kcpu)->n_flag = NFLAG_32(data);
6951      data  >>= (32 - width);
6952
6953      (mc68kcpu)->not_z_flag = data;
6954      (mc68kcpu)->v_flag = VFLAG_CLEAR;
6955      (mc68kcpu)->c_flag = CFLAG_CLEAR;
6956
6957      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
6958         offset++;
6959
6960      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
6961
6962      return;
6963   }
6964   m68ki_exception_illegal(mc68kcpu);
6965}
6966
6967
6968void m68000_base_device_ops::m68k_op_bfffo_32_pcdi(m68000_base_device* mc68kcpu)
6969{
6970   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
6971   {
6972      UINT32 word2 = OPER_I_16(mc68kcpu);
6973      INT32 offset = (word2>>6)&31;
6974      INT32 local_offset;
6975      UINT32 width = word2;
6976      UINT32 data;
6977      UINT32 bit;
6978      UINT32 ea = EA_PCDI_8(mc68kcpu);
6979
6980
6981      if(BIT_B(word2))
6982         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
6983      if(BIT_5(word2))
6984         width = REG_D(mc68kcpu)[width&7];
6985
6986      /* Offset is signed so we have to use ugly math =( */
6987      ea += offset / 8;
6988      local_offset = offset % 8;
6989      if(local_offset < 0)
6990      {
6991         local_offset += 8;
6992         ea--;
6993      }
6994      width = ((width-1) & 31) + 1;
6995
6996      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
6997      data = MASK_OUT_ABOVE_32(data<<local_offset);
6998
6999      if((local_offset+width) > 32)
7000         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
7001
7002      (mc68kcpu)->n_flag = NFLAG_32(data);
7003      data  >>= (32 - width);
7004
7005      (mc68kcpu)->not_z_flag = data;
7006      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7007      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7008
7009      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
7010         offset++;
7011
7012      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
7013
7014      return;
7015   }
7016   m68ki_exception_illegal(mc68kcpu);
7017}
7018
7019
7020void m68000_base_device_ops::m68k_op_bfffo_32_pcix(m68000_base_device* mc68kcpu)
7021{
7022   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7023   {
7024      UINT32 word2 = OPER_I_16(mc68kcpu);
7025      INT32 offset = (word2>>6)&31;
7026      INT32 local_offset;
7027      UINT32 width = word2;
7028      UINT32 data;
7029      UINT32 bit;
7030      UINT32 ea = EA_PCIX_8(mc68kcpu);
7031
7032
7033      if(BIT_B(word2))
7034         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7035      if(BIT_5(word2))
7036         width = REG_D(mc68kcpu)[width&7];
7037
7038      /* Offset is signed so we have to use ugly math =( */
7039      ea += offset / 8;
7040      local_offset = offset % 8;
7041      if(local_offset < 0)
7042      {
7043         local_offset += 8;
7044         ea--;
7045      }
7046      width = ((width-1) & 31) + 1;
7047
7048      data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7049      data = MASK_OUT_ABOVE_32(data<<local_offset);
7050
7051      if((local_offset+width) > 32)
7052         data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
7053
7054      (mc68kcpu)->n_flag = NFLAG_32(data);
7055      data  >>= (32 - width);
7056
7057      (mc68kcpu)->not_z_flag = data;
7058      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7059      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7060
7061      for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
7062         offset++;
7063
7064      REG_D(mc68kcpu)[(word2>>12)&7] = offset;
7065
7066      return;
7067   }
7068   m68ki_exception_illegal(mc68kcpu);
7069}
7070
7071
7072void m68000_base_device_ops::m68k_op_bfins_32_d(m68000_base_device* mc68kcpu)
7073{
7074   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7075   {
7076      UINT32 word2 = OPER_I_16(mc68kcpu);
7077      UINT32 offset = (word2>>6)&31;
7078      UINT32 width = word2;
7079      UINT32* data = &DY(mc68kcpu);
7080      UINT64 mask;
7081      UINT64 insert = REG_D(mc68kcpu)[(word2>>12)&7];
7082
7083
7084      if(BIT_B(word2))
7085         offset = REG_D(mc68kcpu)[offset&7];
7086      if(BIT_5(word2))
7087         width = REG_D(mc68kcpu)[width&7];
7088
7089
7090      offset &= 31;
7091      width = ((width-1) & 31) + 1;
7092
7093
7094      mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7095      mask = ROR_32(mask, offset);
7096
7097      insert = MASK_OUT_ABOVE_32(insert << (32 - width));
7098      (mc68kcpu)->n_flag = NFLAG_32(insert);
7099      (mc68kcpu)->not_z_flag = insert;
7100      insert = ROR_32(insert, offset);
7101
7102      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7103      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7104
7105      *data &= ~mask;
7106      *data |= insert;
7107
7108      return;
7109   }
7110   m68ki_exception_illegal(mc68kcpu);
7111}
7112
7113
7114void m68000_base_device_ops::m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu)
7115{
7116   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7117   {
7118      UINT32 word2 = OPER_I_16(mc68kcpu);
7119      INT32 offset = (word2>>6)&31;
7120      UINT32 width = word2;
7121      UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
7122      UINT32 insert_long;
7123      UINT32 insert_byte;
7124      UINT32 mask_base;
7125      UINT32 data_long;
7126      UINT32 mask_long;
7127      UINT32 data_byte = 0;
7128      UINT32 mask_byte = 0;
7129      UINT32 ea = EA_AY_AI_8(mc68kcpu);
7130
7131
7132      if(BIT_B(word2))
7133         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7134      if(BIT_5(word2))
7135         width = REG_D(mc68kcpu)[width&7];
7136
7137      if(BIT_B(word2))
7138      {
7139         /* Offset is signed so we have to use ugly math =( */
7140         ea += offset / 8;
7141         offset %= 8;
7142         if(offset < 0)
7143         {
7144            offset += 8;
7145            ea--;
7146         }
7147      }
7148      width = ((width-1) & 31) + 1;
7149
7150      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7151      mask_long = mask_base >> offset;
7152
7153      insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
7154      (mc68kcpu)->n_flag = NFLAG_32(insert_base);
7155      (mc68kcpu)->not_z_flag = insert_base;
7156      insert_long = insert_base >> offset;
7157
7158      data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
7159            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7160      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7161      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7162
7163      if((width + offset) < 8)
7164      {
7165         m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
7166      }
7167      else if((width + offset) < 16)
7168      {
7169         m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
7170      }
7171      else
7172      {
7173         m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
7174      }
7175
7176      if((width + offset) > 32)
7177      {
7178         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7179         insert_byte = MASK_OUT_ABOVE_8(insert_base);
7180         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7181         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7182         m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
7183      }
7184      return;
7185   }
7186   m68ki_exception_illegal(mc68kcpu);
7187}
7188
7189
7190void m68000_base_device_ops::m68k_op_bfins_32_di(m68000_base_device* mc68kcpu)
7191{
7192   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7193   {
7194      UINT32 word2 = OPER_I_16(mc68kcpu);
7195      INT32 offset = (word2>>6)&31;
7196      UINT32 width = word2;
7197      UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
7198      UINT32 insert_long;
7199      UINT32 insert_byte;
7200      UINT32 mask_base;
7201      UINT32 data_long;
7202      UINT32 mask_long;
7203      UINT32 data_byte = 0;
7204      UINT32 mask_byte = 0;
7205      UINT32 ea = EA_AY_DI_8(mc68kcpu);
7206
7207
7208      if(BIT_B(word2))
7209         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7210      if(BIT_5(word2))
7211         width = REG_D(mc68kcpu)[width&7];
7212
7213      if(BIT_B(word2))
7214      {
7215         /* Offset is signed so we have to use ugly math =( */
7216         ea += offset / 8;
7217         offset %= 8;
7218         if(offset < 0)
7219         {
7220            offset += 8;
7221            ea--;
7222         }
7223      }
7224      width = ((width-1) & 31) + 1;
7225
7226      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7227      mask_long = mask_base >> offset;
7228
7229      insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
7230      (mc68kcpu)->n_flag = NFLAG_32(insert_base);
7231      (mc68kcpu)->not_z_flag = insert_base;
7232      insert_long = insert_base >> offset;
7233
7234      data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
7235            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7236      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7237      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7238
7239      if((width + offset) < 8)
7240      {
7241         m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
7242      }
7243      else if((width + offset) < 16)
7244      {
7245         m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
7246      }
7247      else
7248      {
7249         m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
7250      }
7251
7252      if((width + offset) > 32)
7253      {
7254         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7255         insert_byte = MASK_OUT_ABOVE_8(insert_base);
7256         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7257         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7258         m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
7259      }
7260      return;
7261   }
7262   m68ki_exception_illegal(mc68kcpu);
7263}
7264
7265
7266void m68000_base_device_ops::m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu)
7267{
7268   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7269   {
7270      UINT32 word2 = OPER_I_16(mc68kcpu);
7271      INT32 offset = (word2>>6)&31;
7272      UINT32 width = word2;
7273      UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
7274      UINT32 insert_long;
7275      UINT32 insert_byte;
7276      UINT32 mask_base;
7277      UINT32 data_long;
7278      UINT32 mask_long;
7279      UINT32 data_byte = 0;
7280      UINT32 mask_byte = 0;
7281      UINT32 ea = EA_AY_IX_8(mc68kcpu);
7282
7283
7284      if(BIT_B(word2))
7285         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7286      if(BIT_5(word2))
7287         width = REG_D(mc68kcpu)[width&7];
7288
7289      if(BIT_B(word2))
7290      {
7291         /* Offset is signed so we have to use ugly math =( */
7292         ea += offset / 8;
7293         offset %= 8;
7294         if(offset < 0)
7295         {
7296            offset += 8;
7297            ea--;
7298         }
7299      }
7300      width = ((width-1) & 31) + 1;
7301
7302      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7303      mask_long = mask_base >> offset;
7304
7305      insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
7306      (mc68kcpu)->n_flag = NFLAG_32(insert_base);
7307      (mc68kcpu)->not_z_flag = insert_base;
7308      insert_long = insert_base >> offset;
7309
7310      data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
7311            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7312      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7313      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7314
7315      if((width + offset) < 8)
7316      {
7317         m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
7318      }
7319      else if((width + offset) < 16)
7320      {
7321         m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
7322      }
7323      else
7324      {
7325         m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
7326      }
7327
7328      if((width + offset) > 32)
7329      {
7330         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7331         insert_byte = MASK_OUT_ABOVE_8(insert_base);
7332         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7333         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7334         m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
7335      }
7336      return;
7337   }
7338   m68ki_exception_illegal(mc68kcpu);
7339}
7340
7341
7342void m68000_base_device_ops::m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu)
7343{
7344   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7345   {
7346      UINT32 word2 = OPER_I_16(mc68kcpu);
7347      INT32 offset = (word2>>6)&31;
7348      UINT32 width = word2;
7349      UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
7350      UINT32 insert_long;
7351      UINT32 insert_byte;
7352      UINT32 mask_base;
7353      UINT32 data_long;
7354      UINT32 mask_long;
7355      UINT32 data_byte = 0;
7356      UINT32 mask_byte = 0;
7357      UINT32 ea = EA_AW_8(mc68kcpu);
7358
7359
7360      if(BIT_B(word2))
7361         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7362      if(BIT_5(word2))
7363         width = REG_D(mc68kcpu)[width&7];
7364
7365      if(BIT_B(word2))
7366      {
7367         /* Offset is signed so we have to use ugly math =( */
7368         ea += offset / 8;
7369         offset %= 8;
7370         if(offset < 0)
7371         {
7372            offset += 8;
7373            ea--;
7374         }
7375      }
7376      width = ((width-1) & 31) + 1;
7377
7378      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7379      mask_long = mask_base >> offset;
7380
7381      insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
7382      (mc68kcpu)->n_flag = NFLAG_32(insert_base);
7383      (mc68kcpu)->not_z_flag = insert_base;
7384      insert_long = insert_base >> offset;
7385
7386      data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
7387            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7388      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7389      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7390
7391      if((width + offset) < 8)
7392      {
7393         m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
7394      }
7395      else if((width + offset) < 16)
7396      {
7397         m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
7398      }
7399      else
7400      {
7401         m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
7402      }
7403
7404      if((width + offset) > 32)
7405      {
7406         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7407         insert_byte = MASK_OUT_ABOVE_8(insert_base);
7408         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7409         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7410         m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
7411      }
7412      return;
7413   }
7414   m68ki_exception_illegal(mc68kcpu);
7415}
7416
7417
7418void m68000_base_device_ops::m68k_op_bfins_32_al(m68000_base_device* mc68kcpu)
7419{
7420   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7421   {
7422      UINT32 word2 = OPER_I_16(mc68kcpu);
7423      INT32 offset = (word2>>6)&31;
7424      UINT32 width = word2;
7425      UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
7426      UINT32 insert_long;
7427      UINT32 insert_byte;
7428      UINT32 mask_base;
7429      UINT32 data_long;
7430      UINT32 mask_long;
7431      UINT32 data_byte = 0;
7432      UINT32 mask_byte = 0;
7433      UINT32 ea = EA_AL_8(mc68kcpu);
7434
7435
7436      if(BIT_B(word2))
7437         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7438      if(BIT_5(word2))
7439         width = REG_D(mc68kcpu)[width&7];
7440
7441      if(BIT_B(word2))
7442      {
7443         /* Offset is signed so we have to use ugly math =( */
7444         ea += offset / 8;
7445         offset %= 8;
7446         if(offset < 0)
7447         {
7448            offset += 8;
7449            ea--;
7450         }
7451      }
7452      width = ((width-1) & 31) + 1;
7453
7454      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7455      mask_long = mask_base >> offset;
7456
7457      insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
7458      (mc68kcpu)->n_flag = NFLAG_32(insert_base);
7459      (mc68kcpu)->not_z_flag = insert_base;
7460      insert_long = insert_base >> offset;
7461
7462      data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
7463            (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
7464      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7465      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7466
7467      if((width + offset) < 8)
7468      {
7469         m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
7470      }
7471      else if((width + offset) < 16)
7472      {
7473         m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
7474      }
7475      else
7476      {
7477         m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
7478      }
7479
7480      if((width + offset) > 32)
7481      {
7482         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7483         insert_byte = MASK_OUT_ABOVE_8(insert_base);
7484         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7485         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7486         m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
7487      }
7488      return;
7489   }
7490   m68ki_exception_illegal(mc68kcpu);
7491}
7492
7493
7494void m68000_base_device_ops::m68k_op_bfset_32_d(m68000_base_device* mc68kcpu)
7495{
7496   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7497   {
7498      UINT32 word2 = OPER_I_16(mc68kcpu);
7499      UINT32 offset = (word2>>6)&31;
7500      UINT32 width = word2;
7501      UINT32* data = &DY(mc68kcpu);
7502      UINT64 mask;
7503
7504
7505      if(BIT_B(word2))
7506         offset = REG_D(mc68kcpu)[offset&7];
7507      if(BIT_5(word2))
7508         width = REG_D(mc68kcpu)[width&7];
7509
7510
7511      offset &= 31;
7512      width = ((width-1) & 31) + 1;
7513
7514
7515      mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7516      mask = ROR_32(mask, offset);
7517
7518      (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
7519      (mc68kcpu)->not_z_flag = *data & mask;
7520      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7521      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7522
7523      *data |= mask;
7524
7525      return;
7526   }
7527   m68ki_exception_illegal(mc68kcpu);
7528}
7529
7530
7531void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu)
7532{
7533   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7534   {
7535      UINT32 word2 = OPER_I_16(mc68kcpu);
7536      INT32 offset = (word2>>6)&31;
7537      UINT32 width = word2;
7538      UINT32 mask_base;
7539      UINT32 data_long;
7540      UINT32 mask_long;
7541      UINT32 data_byte = 0;
7542      UINT32 mask_byte = 0;
7543      UINT32 ea = EA_AY_AI_8(mc68kcpu);
7544
7545
7546      if(BIT_B(word2))
7547         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7548      if(BIT_5(word2))
7549         width = REG_D(mc68kcpu)[width&7];
7550
7551      /* Offset is signed so we have to use ugly math =( */
7552      ea += offset / 8;
7553      offset %= 8;
7554      if(offset < 0)
7555      {
7556         offset += 8;
7557         ea--;
7558      }
7559      width = ((width-1) & 31) + 1;
7560
7561
7562      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7563      mask_long = mask_base >> offset;
7564
7565      data_long = m68ki_read_32((mc68kcpu), ea);
7566      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
7567      (mc68kcpu)->not_z_flag = data_long & mask_long;
7568      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7569      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7570
7571      m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
7572
7573      if((width + offset) > 32)
7574      {
7575         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7576         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7577         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7578         m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
7579      }
7580      return;
7581   }
7582   m68ki_exception_illegal(mc68kcpu);
7583}
7584
7585
7586void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu)
7587{
7588   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7589   {
7590      UINT32 word2 = OPER_I_16(mc68kcpu);
7591      INT32 offset = (word2>>6)&31;
7592      UINT32 width = word2;
7593      UINT32 mask_base;
7594      UINT32 data_long;
7595      UINT32 mask_long;
7596      UINT32 data_byte = 0;
7597      UINT32 mask_byte = 0;
7598      UINT32 ea = EA_AY_DI_8(mc68kcpu);
7599
7600
7601      if(BIT_B(word2))
7602         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7603      if(BIT_5(word2))
7604         width = REG_D(mc68kcpu)[width&7];
7605
7606      /* Offset is signed so we have to use ugly math =( */
7607      ea += offset / 8;
7608      offset %= 8;
7609      if(offset < 0)
7610      {
7611         offset += 8;
7612         ea--;
7613      }
7614      width = ((width-1) & 31) + 1;
7615
7616
7617      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7618      mask_long = mask_base >> offset;
7619
7620      data_long = m68ki_read_32((mc68kcpu), ea);
7621      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
7622      (mc68kcpu)->not_z_flag = data_long & mask_long;
7623      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7624      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7625
7626      m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
7627
7628      if((width + offset) > 32)
7629      {
7630         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7631         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7632         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7633         m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
7634      }
7635      return;
7636   }
7637   m68ki_exception_illegal(mc68kcpu);
7638}
7639
7640
7641void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu)
7642{
7643   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7644   {
7645      UINT32 word2 = OPER_I_16(mc68kcpu);
7646      INT32 offset = (word2>>6)&31;
7647      UINT32 width = word2;
7648      UINT32 mask_base;
7649      UINT32 data_long;
7650      UINT32 mask_long;
7651      UINT32 data_byte = 0;
7652      UINT32 mask_byte = 0;
7653      UINT32 ea = EA_AY_IX_8(mc68kcpu);
7654
7655
7656      if(BIT_B(word2))
7657         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7658      if(BIT_5(word2))
7659         width = REG_D(mc68kcpu)[width&7];
7660
7661      /* Offset is signed so we have to use ugly math =( */
7662      ea += offset / 8;
7663      offset %= 8;
7664      if(offset < 0)
7665      {
7666         offset += 8;
7667         ea--;
7668      }
7669      width = ((width-1) & 31) + 1;
7670
7671
7672      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7673      mask_long = mask_base >> offset;
7674
7675      data_long = m68ki_read_32((mc68kcpu), ea);
7676      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
7677      (mc68kcpu)->not_z_flag = data_long & mask_long;
7678      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7679      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7680
7681      m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
7682
7683      if((width + offset) > 32)
7684      {
7685         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7686         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7687         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7688         m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
7689      }
7690      return;
7691   }
7692   m68ki_exception_illegal(mc68kcpu);
7693}
7694
7695
7696void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu)
7697{
7698   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7699   {
7700      UINT32 word2 = OPER_I_16(mc68kcpu);
7701      INT32 offset = (word2>>6)&31;
7702      UINT32 width = word2;
7703      UINT32 mask_base;
7704      UINT32 data_long;
7705      UINT32 mask_long;
7706      UINT32 data_byte = 0;
7707      UINT32 mask_byte = 0;
7708      UINT32 ea = EA_AW_8(mc68kcpu);
7709
7710
7711      if(BIT_B(word2))
7712         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7713      if(BIT_5(word2))
7714         width = REG_D(mc68kcpu)[width&7];
7715
7716      /* Offset is signed so we have to use ugly math =( */
7717      ea += offset / 8;
7718      offset %= 8;
7719      if(offset < 0)
7720      {
7721         offset += 8;
7722         ea--;
7723      }
7724      width = ((width-1) & 31) + 1;
7725
7726
7727      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7728      mask_long = mask_base >> offset;
7729
7730      data_long = m68ki_read_32((mc68kcpu), ea);
7731      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
7732      (mc68kcpu)->not_z_flag = data_long & mask_long;
7733      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7734      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7735
7736      m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
7737
7738      if((width + offset) > 32)
7739      {
7740         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7741         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7742         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7743         m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
7744      }
7745      return;
7746   }
7747   m68ki_exception_illegal(mc68kcpu);
7748}
7749
7750
7751void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu)
7752{
7753   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7754   {
7755      UINT32 word2 = OPER_I_16(mc68kcpu);
7756      INT32 offset = (word2>>6)&31;
7757      UINT32 width = word2;
7758      UINT32 mask_base;
7759      UINT32 data_long;
7760      UINT32 mask_long;
7761      UINT32 data_byte = 0;
7762      UINT32 mask_byte = 0;
7763      UINT32 ea = EA_AL_8(mc68kcpu);
7764
7765
7766      if(BIT_B(word2))
7767         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7768      if(BIT_5(word2))
7769         width = REG_D(mc68kcpu)[width&7];
7770
7771      /* Offset is signed so we have to use ugly math =( */
7772      ea += offset / 8;
7773      offset %= 8;
7774      if(offset < 0)
7775      {
7776         offset += 8;
7777         ea--;
7778      }
7779      width = ((width-1) & 31) + 1;
7780
7781
7782      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7783      mask_long = mask_base >> offset;
7784
7785      data_long = m68ki_read_32((mc68kcpu), ea);
7786      (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
7787      (mc68kcpu)->not_z_flag = data_long & mask_long;
7788      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7789      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7790
7791      m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
7792
7793      if((width + offset) > 32)
7794      {
7795         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7796         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7797         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7798         m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
7799      }
7800      return;
7801   }
7802   m68ki_exception_illegal(mc68kcpu);
7803}
7804
7805
7806void m68000_base_device_ops::m68k_op_bftst_32_d(m68000_base_device* mc68kcpu)
7807{
7808   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7809   {
7810      UINT32 word2 = OPER_I_16(mc68kcpu);
7811      UINT32 offset = (word2>>6)&31;
7812      UINT32 width = word2;
7813      UINT32* data = &DY(mc68kcpu);
7814      UINT64 mask;
7815
7816
7817      if(BIT_B(word2))
7818         offset = REG_D(mc68kcpu)[offset&7];
7819      if(BIT_5(word2))
7820         width = REG_D(mc68kcpu)[width&7];
7821
7822
7823      offset &= 31;
7824      width = ((width-1) & 31) + 1;
7825
7826
7827      mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7828      mask = ROR_32(mask, offset);
7829
7830      (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
7831      (mc68kcpu)->not_z_flag = *data & mask;
7832      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7833      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7834
7835      return;
7836   }
7837   m68ki_exception_illegal(mc68kcpu);
7838}
7839
7840
7841void m68000_base_device_ops::m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu)
7842{
7843   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7844   {
7845      UINT32 word2 = OPER_I_16(mc68kcpu);
7846      INT32 offset = (word2>>6)&31;
7847      UINT32 width = word2;
7848      UINT32 mask_base;
7849      UINT32 data_long;
7850      UINT32 mask_long;
7851      UINT32 data_byte = 0;
7852      UINT32 mask_byte = 0;
7853      UINT32 ea = EA_AY_AI_8(mc68kcpu);
7854
7855      if(BIT_B(word2))
7856         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7857      if(BIT_5(word2))
7858         width = REG_D(mc68kcpu)[width&7];
7859
7860      /* Offset is signed so we have to use ugly math =( */
7861      ea += offset / 8;
7862      offset %= 8;
7863      if(offset < 0)
7864      {
7865         offset += 8;
7866         ea--;
7867      }
7868      width = ((width-1) & 31) + 1;
7869
7870
7871      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7872      mask_long = mask_base >> offset;
7873
7874      data_long = m68ki_read_32((mc68kcpu), ea);
7875      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
7876      (mc68kcpu)->not_z_flag = data_long & mask_long;
7877      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7878      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7879
7880      if((width + offset) > 32)
7881      {
7882         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7883         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7884         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7885      }
7886      return;
7887   }
7888   m68ki_exception_illegal(mc68kcpu);
7889}
7890
7891
7892void m68000_base_device_ops::m68k_op_bftst_32_di(m68000_base_device* mc68kcpu)
7893{
7894   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7895   {
7896      UINT32 word2 = OPER_I_16(mc68kcpu);
7897      INT32 offset = (word2>>6)&31;
7898      UINT32 width = word2;
7899      UINT32 mask_base;
7900      UINT32 data_long;
7901      UINT32 mask_long;
7902      UINT32 data_byte = 0;
7903      UINT32 mask_byte = 0;
7904      UINT32 ea = EA_AY_DI_8(mc68kcpu);
7905
7906      if(BIT_B(word2))
7907         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7908      if(BIT_5(word2))
7909         width = REG_D(mc68kcpu)[width&7];
7910
7911      /* Offset is signed so we have to use ugly math =( */
7912      ea += offset / 8;
7913      offset %= 8;
7914      if(offset < 0)
7915      {
7916         offset += 8;
7917         ea--;
7918      }
7919      width = ((width-1) & 31) + 1;
7920
7921
7922      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7923      mask_long = mask_base >> offset;
7924
7925      data_long = m68ki_read_32((mc68kcpu), ea);
7926      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
7927      (mc68kcpu)->not_z_flag = data_long & mask_long;
7928      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7929      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7930
7931      if((width + offset) > 32)
7932      {
7933         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7934         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7935         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7936      }
7937      return;
7938   }
7939   m68ki_exception_illegal(mc68kcpu);
7940}
7941
7942
7943void m68000_base_device_ops::m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu)
7944{
7945   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7946   {
7947      UINT32 word2 = OPER_I_16(mc68kcpu);
7948      INT32 offset = (word2>>6)&31;
7949      UINT32 width = word2;
7950      UINT32 mask_base;
7951      UINT32 data_long;
7952      UINT32 mask_long;
7953      UINT32 data_byte = 0;
7954      UINT32 mask_byte = 0;
7955      UINT32 ea = EA_AY_IX_8(mc68kcpu);
7956
7957      if(BIT_B(word2))
7958         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
7959      if(BIT_5(word2))
7960         width = REG_D(mc68kcpu)[width&7];
7961
7962      /* Offset is signed so we have to use ugly math =( */
7963      ea += offset / 8;
7964      offset %= 8;
7965      if(offset < 0)
7966      {
7967         offset += 8;
7968         ea--;
7969      }
7970      width = ((width-1) & 31) + 1;
7971
7972
7973      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
7974      mask_long = mask_base >> offset;
7975
7976      data_long = m68ki_read_32((mc68kcpu), ea);
7977      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
7978      (mc68kcpu)->not_z_flag = data_long & mask_long;
7979      (mc68kcpu)->v_flag = VFLAG_CLEAR;
7980      (mc68kcpu)->c_flag = CFLAG_CLEAR;
7981
7982      if((width + offset) > 32)
7983      {
7984         mask_byte = MASK_OUT_ABOVE_8(mask_base);
7985         data_byte = m68ki_read_8((mc68kcpu), ea+4);
7986         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
7987      }
7988      return;
7989   }
7990   m68ki_exception_illegal(mc68kcpu);
7991}
7992
7993
7994void m68000_base_device_ops::m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu)
7995{
7996   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
7997   {
7998      UINT32 word2 = OPER_I_16(mc68kcpu);
7999      INT32 offset = (word2>>6)&31;
8000      UINT32 width = word2;
8001      UINT32 mask_base;
8002      UINT32 data_long;
8003      UINT32 mask_long;
8004      UINT32 data_byte = 0;
8005      UINT32 mask_byte = 0;
8006      UINT32 ea = EA_AW_8(mc68kcpu);
8007
8008      if(BIT_B(word2))
8009         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
8010      if(BIT_5(word2))
8011         width = REG_D(mc68kcpu)[width&7];
8012
8013      /* Offset is signed so we have to use ugly math =( */
8014      ea += offset / 8;
8015      offset %= 8;
8016      if(offset < 0)
8017      {
8018         offset += 8;
8019         ea--;
8020      }
8021      width = ((width-1) & 31) + 1;
8022
8023
8024      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
8025      mask_long = mask_base >> offset;
8026
8027      data_long = m68ki_read_32((mc68kcpu), ea);
8028      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
8029      (mc68kcpu)->not_z_flag = data_long & mask_long;
8030      (mc68kcpu)->v_flag = VFLAG_CLEAR;
8031      (mc68kcpu)->c_flag = CFLAG_CLEAR;
8032
8033      if((width + offset) > 32)
8034      {
8035         mask_byte = MASK_OUT_ABOVE_8(mask_base);
8036         data_byte = m68ki_read_8((mc68kcpu), ea+4);
8037         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
8038      }
8039      return;
8040   }
8041   m68ki_exception_illegal(mc68kcpu);
8042}
8043
8044
8045void m68000_base_device_ops::m68k_op_bftst_32_al(m68000_base_device* mc68kcpu)
8046{
8047   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8048   {
8049      UINT32 word2 = OPER_I_16(mc68kcpu);
8050      INT32 offset = (word2>>6)&31;
8051      UINT32 width = word2;
8052      UINT32 mask_base;
8053      UINT32 data_long;
8054      UINT32 mask_long;
8055      UINT32 data_byte = 0;
8056      UINT32 mask_byte = 0;
8057      UINT32 ea = EA_AL_8(mc68kcpu);
8058
8059      if(BIT_B(word2))
8060         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
8061      if(BIT_5(word2))
8062         width = REG_D(mc68kcpu)[width&7];
8063
8064      /* Offset is signed so we have to use ugly math =( */
8065      ea += offset / 8;
8066      offset %= 8;
8067      if(offset < 0)
8068      {
8069         offset += 8;
8070         ea--;
8071      }
8072      width = ((width-1) & 31) + 1;
8073
8074
8075      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
8076      mask_long = mask_base >> offset;
8077
8078      data_long = m68ki_read_32((mc68kcpu), ea);
8079      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
8080      (mc68kcpu)->not_z_flag = data_long & mask_long;
8081      (mc68kcpu)->v_flag = VFLAG_CLEAR;
8082      (mc68kcpu)->c_flag = CFLAG_CLEAR;
8083
8084      if((width + offset) > 32)
8085      {
8086         mask_byte = MASK_OUT_ABOVE_8(mask_base);
8087         data_byte = m68ki_read_8((mc68kcpu), ea+4);
8088         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
8089      }
8090      return;
8091   }
8092   m68ki_exception_illegal(mc68kcpu);
8093}
8094
8095
8096void m68000_base_device_ops::m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu)
8097{
8098   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8099   {
8100      UINT32 word2 = OPER_I_16(mc68kcpu);
8101      INT32 offset = (word2>>6)&31;
8102      UINT32 width = word2;
8103      UINT32 mask_base;
8104      UINT32 data_long;
8105      UINT32 mask_long;
8106      UINT32 data_byte = 0;
8107      UINT32 mask_byte = 0;
8108      UINT32 ea = EA_PCDI_8(mc68kcpu);
8109
8110      if(BIT_B(word2))
8111         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
8112      if(BIT_5(word2))
8113         width = REG_D(mc68kcpu)[width&7];
8114
8115      /* Offset is signed so we have to use ugly math =( */
8116      ea += offset / 8;
8117      offset %= 8;
8118      if(offset < 0)
8119      {
8120         offset += 8;
8121         ea--;
8122      }
8123      width = ((width-1) & 31) + 1;
8124
8125
8126      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
8127      mask_long = mask_base >> offset;
8128
8129      data_long = m68ki_read_32((mc68kcpu), ea);
8130      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
8131      (mc68kcpu)->not_z_flag = data_long & mask_long;
8132      (mc68kcpu)->v_flag = VFLAG_CLEAR;
8133      (mc68kcpu)->c_flag = CFLAG_CLEAR;
8134
8135      if((width + offset) > 32)
8136      {
8137         mask_byte = MASK_OUT_ABOVE_8(mask_base);
8138         data_byte = m68ki_read_8((mc68kcpu), ea+4);
8139         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
8140      }
8141      return;
8142   }
8143   m68ki_exception_illegal(mc68kcpu);
8144}
8145
8146
8147void m68000_base_device_ops::m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu)
8148{
8149   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8150   {
8151      UINT32 word2 = OPER_I_16(mc68kcpu);
8152      INT32 offset = (word2>>6)&31;
8153      UINT32 width = word2;
8154      UINT32 mask_base;
8155      UINT32 data_long;
8156      UINT32 mask_long;
8157      UINT32 data_byte = 0;
8158      UINT32 mask_byte = 0;
8159      UINT32 ea = EA_PCIX_8(mc68kcpu);
8160
8161      if(BIT_B(word2))
8162         offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
8163      if(BIT_5(word2))
8164         width = REG_D(mc68kcpu)[width&7];
8165
8166      /* Offset is signed so we have to use ugly math =( */
8167      ea += offset / 8;
8168      offset %= 8;
8169      if(offset < 0)
8170      {
8171         offset += 8;
8172         ea--;
8173      }
8174      width = ((width-1) & 31) + 1;
8175
8176
8177      mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
8178      mask_long = mask_base >> offset;
8179
8180      data_long = m68ki_read_32((mc68kcpu), ea);
8181      (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
8182      (mc68kcpu)->not_z_flag = data_long & mask_long;
8183      (mc68kcpu)->v_flag = VFLAG_CLEAR;
8184      (mc68kcpu)->c_flag = CFLAG_CLEAR;
8185
8186      if((width + offset) > 32)
8187      {
8188         mask_byte = MASK_OUT_ABOVE_8(mask_base);
8189         data_byte = m68ki_read_8((mc68kcpu), ea+4);
8190         (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
8191      }
8192      return;
8193   }
8194   m68ki_exception_illegal(mc68kcpu);
8195}
8196
8197
8198void m68000_base_device_ops::m68k_op_bkpt(m68000_base_device* mc68kcpu)
8199{
8200   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
8201   {
8202      if (!(mc68kcpu)->bkpt_ack_callback.isnull())
8203         ((mc68kcpu)->bkpt_ack_callback)((*mc68kcpu->program), 0, CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) ? (mc68kcpu)->ir & 7 : 0, 0xffffffff);
8204   }
8205   m68ki_exception_illegal(mc68kcpu);
8206}
8207
8208
8209void m68000_base_device_ops::m68k_op_bra_8(m68000_base_device* mc68kcpu)
8210{
8211   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
8212   m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
8213   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
8214      (mc68kcpu)->remaining_cycles = 0;
8215}
8216
8217
8218void m68000_base_device_ops::m68k_op_bra_16(m68000_base_device* mc68kcpu)
8219{
8220   UINT32 offset = OPER_I_16(mc68kcpu);
8221   REG_PC(mc68kcpu) -= 2;
8222   m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8223   m68ki_branch_16((mc68kcpu), offset);
8224   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
8225      (mc68kcpu)->remaining_cycles = 0;
8226}
8227
8228
8229void m68000_base_device_ops::m68k_op_bra_32(m68000_base_device* mc68kcpu)
8230{
8231   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8232   {
8233      UINT32 offset = OPER_I_32(mc68kcpu);
8234      REG_PC(mc68kcpu) -= 4;
8235      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8236      m68ki_branch_32((mc68kcpu), offset);
8237      if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
8238         (mc68kcpu)->remaining_cycles = 0;
8239      return;
8240   }
8241   else
8242   {
8243      m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
8244      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
8245      if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
8246         (mc68kcpu)->remaining_cycles = 0;
8247   }
8248}
8249
8250
8251void m68000_base_device_ops::m68k_op_bset_32_r_d(m68000_base_device* mc68kcpu)
8252{
8253   UINT32* r_dst = &DY(mc68kcpu);
8254   UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
8255
8256   (mc68kcpu)->not_z_flag = *r_dst & mask;
8257   *r_dst |= mask;
8258}
8259
8260
8261void m68000_base_device_ops::m68k_op_bset_8_r_ai(m68000_base_device* mc68kcpu)
8262{
8263   UINT32 ea = EA_AY_AI_8(mc68kcpu);
8264   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8265   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8266
8267   (mc68kcpu)->not_z_flag = src & mask;
8268   m68ki_write_8((mc68kcpu), ea, src | mask);
8269}
8270
8271
8272void m68000_base_device_ops::m68k_op_bset_8_r_pi(m68000_base_device* mc68kcpu)
8273{
8274   UINT32 ea = EA_AY_PI_8(mc68kcpu);
8275   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8276   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8277
8278   (mc68kcpu)->not_z_flag = src & mask;
8279   m68ki_write_8((mc68kcpu), ea, src | mask);
8280}
8281
8282
8283void m68000_base_device_ops::m68k_op_bset_8_r_pi7(m68000_base_device* mc68kcpu)
8284{
8285   UINT32 ea = EA_A7_PI_8(mc68kcpu);
8286   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8287   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8288
8289   (mc68kcpu)->not_z_flag = src & mask;
8290   m68ki_write_8((mc68kcpu), ea, src | mask);
8291}
8292
8293
8294void m68000_base_device_ops::m68k_op_bset_8_r_pd(m68000_base_device* mc68kcpu)
8295{
8296   UINT32 ea = EA_AY_PD_8(mc68kcpu);
8297   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8298   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8299
8300   (mc68kcpu)->not_z_flag = src & mask;
8301   m68ki_write_8((mc68kcpu), ea, src | mask);
8302}
8303
8304
8305void m68000_base_device_ops::m68k_op_bset_8_r_pd7(m68000_base_device* mc68kcpu)
8306{
8307   UINT32 ea = EA_A7_PD_8(mc68kcpu);
8308   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8309   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8310
8311   (mc68kcpu)->not_z_flag = src & mask;
8312   m68ki_write_8((mc68kcpu), ea, src | mask);
8313}
8314
8315
8316void m68000_base_device_ops::m68k_op_bset_8_r_di(m68000_base_device* mc68kcpu)
8317{
8318   UINT32 ea = EA_AY_DI_8(mc68kcpu);
8319   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8320   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8321
8322   (mc68kcpu)->not_z_flag = src & mask;
8323   m68ki_write_8((mc68kcpu), ea, src | mask);
8324}
8325
8326
8327void m68000_base_device_ops::m68k_op_bset_8_r_ix(m68000_base_device* mc68kcpu)
8328{
8329   UINT32 ea = EA_AY_IX_8(mc68kcpu);
8330   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8331   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8332
8333   (mc68kcpu)->not_z_flag = src & mask;
8334   m68ki_write_8((mc68kcpu), ea, src | mask);
8335}
8336
8337
8338void m68000_base_device_ops::m68k_op_bset_8_r_aw(m68000_base_device* mc68kcpu)
8339{
8340   UINT32 ea = EA_AW_8(mc68kcpu);
8341   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8342   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8343
8344   (mc68kcpu)->not_z_flag = src & mask;
8345   m68ki_write_8((mc68kcpu), ea, src | mask);
8346}
8347
8348
8349void m68000_base_device_ops::m68k_op_bset_8_r_al(m68000_base_device* mc68kcpu)
8350{
8351   UINT32 ea = EA_AL_8(mc68kcpu);
8352   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8353   UINT32 mask = 1 << (DX(mc68kcpu) & 7);
8354
8355   (mc68kcpu)->not_z_flag = src & mask;
8356   m68ki_write_8((mc68kcpu), ea, src | mask);
8357}
8358
8359
8360void m68000_base_device_ops::m68k_op_bset_32_s_d(m68000_base_device* mc68kcpu)
8361{
8362   UINT32* r_dst = &DY(mc68kcpu);
8363   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
8364
8365   (mc68kcpu)->not_z_flag = *r_dst & mask;
8366   *r_dst |= mask;
8367}
8368
8369
8370void m68000_base_device_ops::m68k_op_bset_8_s_ai(m68000_base_device* mc68kcpu)
8371{
8372   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8373   UINT32 ea = EA_AY_AI_8(mc68kcpu);
8374   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8375
8376   (mc68kcpu)->not_z_flag = src & mask;
8377   m68ki_write_8((mc68kcpu), ea, src | mask);
8378}
8379
8380
8381void m68000_base_device_ops::m68k_op_bset_8_s_pi(m68000_base_device* mc68kcpu)
8382{
8383   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8384   UINT32 ea = EA_AY_PI_8(mc68kcpu);
8385   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8386
8387   (mc68kcpu)->not_z_flag = src & mask;
8388   m68ki_write_8((mc68kcpu), ea, src | mask);
8389}
8390
8391
8392void m68000_base_device_ops::m68k_op_bset_8_s_pi7(m68000_base_device* mc68kcpu)
8393{
8394   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8395   UINT32 ea = EA_A7_PI_8(mc68kcpu);
8396   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8397
8398   (mc68kcpu)->not_z_flag = src & mask;
8399   m68ki_write_8((mc68kcpu), ea, src | mask);
8400}
8401
8402
8403void m68000_base_device_ops::m68k_op_bset_8_s_pd(m68000_base_device* mc68kcpu)
8404{
8405   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8406   UINT32 ea = EA_AY_PD_8(mc68kcpu);
8407   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8408
8409   (mc68kcpu)->not_z_flag = src & mask;
8410   m68ki_write_8((mc68kcpu), ea, src | mask);
8411}
8412
8413
8414void m68000_base_device_ops::m68k_op_bset_8_s_pd7(m68000_base_device* mc68kcpu)
8415{
8416   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8417   UINT32 ea = EA_A7_PD_8(mc68kcpu);
8418   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8419
8420   (mc68kcpu)->not_z_flag = src & mask;
8421   m68ki_write_8((mc68kcpu), ea, src | mask);
8422}
8423
8424
8425void m68000_base_device_ops::m68k_op_bset_8_s_di(m68000_base_device* mc68kcpu)
8426{
8427   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8428   UINT32 ea = EA_AY_DI_8(mc68kcpu);
8429   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8430
8431   (mc68kcpu)->not_z_flag = src & mask;
8432   m68ki_write_8((mc68kcpu), ea, src | mask);
8433}
8434
8435
8436void m68000_base_device_ops::m68k_op_bset_8_s_ix(m68000_base_device* mc68kcpu)
8437{
8438   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8439   UINT32 ea = EA_AY_IX_8(mc68kcpu);
8440   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8441
8442   (mc68kcpu)->not_z_flag = src & mask;
8443   m68ki_write_8((mc68kcpu), ea, src | mask);
8444}
8445
8446
8447void m68000_base_device_ops::m68k_op_bset_8_s_aw(m68000_base_device* mc68kcpu)
8448{
8449   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8450   UINT32 ea = EA_AW_8(mc68kcpu);
8451   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8452
8453   (mc68kcpu)->not_z_flag = src & mask;
8454   m68ki_write_8((mc68kcpu), ea, src | mask);
8455}
8456
8457
8458void m68000_base_device_ops::m68k_op_bset_8_s_al(m68000_base_device* mc68kcpu)
8459{
8460   UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
8461   UINT32 ea = EA_AL_8(mc68kcpu);
8462   UINT32 src = m68ki_read_8((mc68kcpu), ea);
8463
8464   (mc68kcpu)->not_z_flag = src & mask;
8465   m68ki_write_8((mc68kcpu), ea, src | mask);
8466}
8467
8468
8469void m68000_base_device_ops::m68k_op_bsr_8(m68000_base_device* mc68kcpu)
8470{
8471   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
8472   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
8473   m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
8474}
8475
8476
8477void m68000_base_device_ops::m68k_op_bsr_16(m68000_base_device* mc68kcpu)
8478{
8479   UINT32 offset = OPER_I_16(mc68kcpu);
8480   m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8481   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
8482   REG_PC(mc68kcpu) -= 2;
8483   m68ki_branch_16((mc68kcpu), offset);
8484}
8485
8486
8487void m68000_base_device_ops::m68k_op_bsr_32(m68000_base_device* mc68kcpu)
8488{
8489   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8490   {
8491      UINT32 offset = OPER_I_32(mc68kcpu);
8492      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8493      m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
8494      REG_PC(mc68kcpu) -= 4;
8495      m68ki_branch_32((mc68kcpu), offset);
8496      return;
8497   }
8498   else
8499   {
8500      m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
8501      m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
8502      m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
8503   }
8504}
8505
8506
8507void m68000_base_device_ops::m68k_op_btst_32_r_d(m68000_base_device* mc68kcpu)
8508{
8509   (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (DX(mc68kcpu) & 0x1f));
8510}
8511
8512
8513void m68000_base_device_ops::m68k_op_btst_8_r_ai(m68000_base_device* mc68kcpu)
8514{
8515   (mc68kcpu)->not_z_flag = OPER_AY_AI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8516}
8517
8518
8519void m68000_base_device_ops::m68k_op_btst_8_r_pi(m68000_base_device* mc68kcpu)
8520{
8521   (mc68kcpu)->not_z_flag = OPER_AY_PI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8522}
8523
8524
8525void m68000_base_device_ops::m68k_op_btst_8_r_pi7(m68000_base_device* mc68kcpu)
8526{
8527   (mc68kcpu)->not_z_flag = OPER_A7_PI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8528}
8529
8530
8531void m68000_base_device_ops::m68k_op_btst_8_r_pd(m68000_base_device* mc68kcpu)
8532{
8533   (mc68kcpu)->not_z_flag = OPER_AY_PD_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8534}
8535
8536
8537void m68000_base_device_ops::m68k_op_btst_8_r_pd7(m68000_base_device* mc68kcpu)
8538{
8539   (mc68kcpu)->not_z_flag = OPER_A7_PD_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8540}
8541
8542
8543void m68000_base_device_ops::m68k_op_btst_8_r_di(m68000_base_device* mc68kcpu)
8544{
8545   (mc68kcpu)->not_z_flag = OPER_AY_DI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8546}
8547
8548
8549void m68000_base_device_ops::m68k_op_btst_8_r_ix(m68000_base_device* mc68kcpu)
8550{
8551   (mc68kcpu)->not_z_flag = OPER_AY_IX_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8552}
8553
8554
8555void m68000_base_device_ops::m68k_op_btst_8_r_aw(m68000_base_device* mc68kcpu)
8556{
8557   (mc68kcpu)->not_z_flag = OPER_AW_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8558}
8559
8560
8561void m68000_base_device_ops::m68k_op_btst_8_r_al(m68000_base_device* mc68kcpu)
8562{
8563   (mc68kcpu)->not_z_flag = OPER_AL_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8564}
8565
8566
8567void m68000_base_device_ops::m68k_op_btst_8_r_pcdi(m68000_base_device* mc68kcpu)
8568{
8569   (mc68kcpu)->not_z_flag = OPER_PCDI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8570}
8571
8572
8573void m68000_base_device_ops::m68k_op_btst_8_r_pcix(m68000_base_device* mc68kcpu)
8574{
8575   (mc68kcpu)->not_z_flag = OPER_PCIX_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8576}
8577
8578
8579void m68000_base_device_ops::m68k_op_btst_8_r_i(m68000_base_device* mc68kcpu)
8580{
8581   (mc68kcpu)->not_z_flag = OPER_I_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
8582}
8583
8584
8585void m68000_base_device_ops::m68k_op_btst_32_s_d(m68000_base_device* mc68kcpu)
8586{
8587   (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (OPER_I_8(mc68kcpu) & 0x1f));
8588}
8589
8590
8591void m68000_base_device_ops::m68k_op_btst_8_s_ai(m68000_base_device* mc68kcpu)
8592{
8593   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8594
8595   (mc68kcpu)->not_z_flag = OPER_AY_AI_8(mc68kcpu) & (1 << bit);
8596}
8597
8598
8599void m68000_base_device_ops::m68k_op_btst_8_s_pi(m68000_base_device* mc68kcpu)
8600{
8601   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8602
8603   (mc68kcpu)->not_z_flag = OPER_AY_PI_8(mc68kcpu) & (1 << bit);
8604}
8605
8606
8607void m68000_base_device_ops::m68k_op_btst_8_s_pi7(m68000_base_device* mc68kcpu)
8608{
8609   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8610
8611   (mc68kcpu)->not_z_flag = OPER_A7_PI_8(mc68kcpu) & (1 << bit);
8612}
8613
8614
8615void m68000_base_device_ops::m68k_op_btst_8_s_pd(m68000_base_device* mc68kcpu)
8616{
8617   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8618
8619   (mc68kcpu)->not_z_flag = OPER_AY_PD_8(mc68kcpu) & (1 << bit);
8620}
8621
8622
8623void m68000_base_device_ops::m68k_op_btst_8_s_pd7(m68000_base_device* mc68kcpu)
8624{
8625   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8626
8627   (mc68kcpu)->not_z_flag = OPER_A7_PD_8(mc68kcpu) & (1 << bit);
8628}
8629
8630
8631void m68000_base_device_ops::m68k_op_btst_8_s_di(m68000_base_device* mc68kcpu)
8632{
8633   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8634
8635   (mc68kcpu)->not_z_flag = OPER_AY_DI_8(mc68kcpu) & (1 << bit);
8636}
8637
8638
8639void m68000_base_device_ops::m68k_op_btst_8_s_ix(m68000_base_device* mc68kcpu)
8640{
8641   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8642
8643   (mc68kcpu)->not_z_flag = OPER_AY_IX_8(mc68kcpu) & (1 << bit);
8644}
8645
8646
8647void m68000_base_device_ops::m68k_op_btst_8_s_aw(m68000_base_device* mc68kcpu)
8648{
8649   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8650
8651   (mc68kcpu)->not_z_flag = OPER_AW_8(mc68kcpu) & (1 << bit);
8652}
8653
8654
8655void m68000_base_device_ops::m68k_op_btst_8_s_al(m68000_base_device* mc68kcpu)
8656{
8657   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8658
8659   (mc68kcpu)->not_z_flag = OPER_AL_8(mc68kcpu) & (1 << bit);
8660}
8661
8662
8663void m68000_base_device_ops::m68k_op_btst_8_s_pcdi(m68000_base_device* mc68kcpu)
8664{
8665   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8666
8667   (mc68kcpu)->not_z_flag = OPER_PCDI_8(mc68kcpu) & (1 << bit);
8668}
8669
8670
8671void m68000_base_device_ops::m68k_op_btst_8_s_pcix(m68000_base_device* mc68kcpu)
8672{
8673   UINT32 bit = OPER_I_8(mc68kcpu) & 7;
8674
8675   (mc68kcpu)->not_z_flag = OPER_PCIX_8(mc68kcpu) & (1 << bit);
8676}
8677
8678
8679void m68000_base_device_ops::m68k_op_callm_32_ai(m68000_base_device* mc68kcpu)
8680{
8681   /* note: watch out for pcrelative modes */
8682   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8683   {
8684      UINT32 ea = EA_AY_AI_32(mc68kcpu);
8685
8686      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8687      REG_PC(mc68kcpu) += 2;
8688(void)ea;   /* just to avoid an 'unused variable' warning */
8689      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8690                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8691      return;
8692   }
8693   m68ki_exception_illegal(mc68kcpu);
8694}
8695
8696
8697void m68000_base_device_ops::m68k_op_callm_32_di(m68000_base_device* mc68kcpu)
8698{
8699   /* note: watch out for pcrelative modes */
8700   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8701   {
8702      UINT32 ea = EA_AY_DI_32(mc68kcpu);
8703
8704      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8705      REG_PC(mc68kcpu) += 2;
8706(void)ea;   /* just to avoid an 'unused variable' warning */
8707      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8708                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8709      return;
8710   }
8711   m68ki_exception_illegal(mc68kcpu);
8712}
8713
8714
8715void m68000_base_device_ops::m68k_op_callm_32_ix(m68000_base_device* mc68kcpu)
8716{
8717   /* note: watch out for pcrelative modes */
8718   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8719   {
8720      UINT32 ea = EA_AY_IX_32(mc68kcpu);
8721
8722      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8723      REG_PC(mc68kcpu) += 2;
8724(void)ea;   /* just to avoid an 'unused variable' warning */
8725      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8726                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8727      return;
8728   }
8729   m68ki_exception_illegal(mc68kcpu);
8730}
8731
8732
8733void m68000_base_device_ops::m68k_op_callm_32_aw(m68000_base_device* mc68kcpu)
8734{
8735   /* note: watch out for pcrelative modes */
8736   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8737   {
8738      UINT32 ea = EA_AW_32(mc68kcpu);
8739
8740      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8741      REG_PC(mc68kcpu) += 2;
8742(void)ea;   /* just to avoid an 'unused variable' warning */
8743      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8744                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8745      return;
8746   }
8747   m68ki_exception_illegal(mc68kcpu);
8748}
8749
8750
8751void m68000_base_device_ops::m68k_op_callm_32_al(m68000_base_device* mc68kcpu)
8752{
8753   /* note: watch out for pcrelative modes */
8754   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8755   {
8756      UINT32 ea = EA_AL_32(mc68kcpu);
8757
8758      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8759      REG_PC(mc68kcpu) += 2;
8760(void)ea;   /* just to avoid an 'unused variable' warning */
8761      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8762                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8763      return;
8764   }
8765   m68ki_exception_illegal(mc68kcpu);
8766}
8767
8768
8769void m68000_base_device_ops::m68k_op_callm_32_pcdi(m68000_base_device* mc68kcpu)
8770{
8771   /* note: watch out for pcrelative modes */
8772   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8773   {
8774      UINT32 ea = EA_PCDI_32(mc68kcpu);
8775
8776      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8777      REG_PC(mc68kcpu) += 2;
8778(void)ea;   /* just to avoid an 'unused variable' warning */
8779      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8780                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8781      return;
8782   }
8783   m68ki_exception_illegal(mc68kcpu);
8784}
8785
8786
8787void m68000_base_device_ops::m68k_op_callm_32_pcix(m68000_base_device* mc68kcpu)
8788{
8789   /* note: watch out for pcrelative modes */
8790   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
8791   {
8792      UINT32 ea = EA_PCIX_32(mc68kcpu);
8793
8794      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8795      REG_PC(mc68kcpu) += 2;
8796(void)ea;   /* just to avoid an 'unused variable' warning */
8797      logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
8798                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
8799      return;
8800   }
8801   m68ki_exception_illegal(mc68kcpu);
8802}
8803
8804
8805void m68000_base_device_ops::m68k_op_cas_8_ai(m68000_base_device* mc68kcpu)
8806{
8807   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8808   {
8809      UINT32 word2 = OPER_I_16(mc68kcpu);
8810      UINT32 ea = EA_AY_AI_8(mc68kcpu);
8811      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8812      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8813      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8814
8815      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8816      (mc68kcpu)->n_flag = NFLAG_8(res);
8817      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8818      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8819      (mc68kcpu)->c_flag = CFLAG_8(res);
8820
8821      if(COND_NE(mc68kcpu))
8822         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8823      else
8824      {
8825         (mc68kcpu)->remaining_cycles -= 3;
8826         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8827      }
8828      return;
8829   }
8830   m68ki_exception_illegal(mc68kcpu);
8831}
8832
8833
8834void m68000_base_device_ops::m68k_op_cas_8_pi(m68000_base_device* mc68kcpu)
8835{
8836   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8837   {
8838      UINT32 word2 = OPER_I_16(mc68kcpu);
8839      UINT32 ea = EA_AY_PI_8(mc68kcpu);
8840      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8841      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8842      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8843
8844      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8845      (mc68kcpu)->n_flag = NFLAG_8(res);
8846      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8847      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8848      (mc68kcpu)->c_flag = CFLAG_8(res);
8849
8850      if(COND_NE(mc68kcpu))
8851         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8852      else
8853      {
8854         (mc68kcpu)->remaining_cycles -= 3;
8855         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8856      }
8857      return;
8858   }
8859   m68ki_exception_illegal(mc68kcpu);
8860}
8861
8862
8863void m68000_base_device_ops::m68k_op_cas_8_pi7(m68000_base_device* mc68kcpu)
8864{
8865   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8866   {
8867      UINT32 word2 = OPER_I_16(mc68kcpu);
8868      UINT32 ea = EA_A7_PI_8(mc68kcpu);
8869      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8870      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8871      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8872
8873      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8874      (mc68kcpu)->n_flag = NFLAG_8(res);
8875      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8876      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8877      (mc68kcpu)->c_flag = CFLAG_8(res);
8878
8879      if(COND_NE(mc68kcpu))
8880         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8881      else
8882      {
8883         (mc68kcpu)->remaining_cycles -= 3;
8884         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8885      }
8886      return;
8887   }
8888   m68ki_exception_illegal(mc68kcpu);
8889}
8890
8891
8892void m68000_base_device_ops::m68k_op_cas_8_pd(m68000_base_device* mc68kcpu)
8893{
8894   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8895   {
8896      UINT32 word2 = OPER_I_16(mc68kcpu);
8897      UINT32 ea = EA_AY_PD_8(mc68kcpu);
8898      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8899      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8900      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8901
8902      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8903      (mc68kcpu)->n_flag = NFLAG_8(res);
8904      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8905      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8906      (mc68kcpu)->c_flag = CFLAG_8(res);
8907
8908      if(COND_NE(mc68kcpu))
8909         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8910      else
8911      {
8912         (mc68kcpu)->remaining_cycles -= 3;
8913         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8914      }
8915      return;
8916   }
8917   m68ki_exception_illegal(mc68kcpu);
8918}
8919
8920
8921void m68000_base_device_ops::m68k_op_cas_8_pd7(m68000_base_device* mc68kcpu)
8922{
8923   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8924   {
8925      UINT32 word2 = OPER_I_16(mc68kcpu);
8926      UINT32 ea = EA_A7_PD_8(mc68kcpu);
8927      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8928      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8929      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8930
8931      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8932      (mc68kcpu)->n_flag = NFLAG_8(res);
8933      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8934      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8935      (mc68kcpu)->c_flag = CFLAG_8(res);
8936
8937      if(COND_NE(mc68kcpu))
8938         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8939      else
8940      {
8941         (mc68kcpu)->remaining_cycles -= 3;
8942         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8943      }
8944      return;
8945   }
8946   m68ki_exception_illegal(mc68kcpu);
8947}
8948
8949
8950void m68000_base_device_ops::m68k_op_cas_8_di(m68000_base_device* mc68kcpu)
8951{
8952   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8953   {
8954      UINT32 word2 = OPER_I_16(mc68kcpu);
8955      UINT32 ea = EA_AY_DI_8(mc68kcpu);
8956      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8957      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8958      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8959
8960      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8961      (mc68kcpu)->n_flag = NFLAG_8(res);
8962      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8963      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8964      (mc68kcpu)->c_flag = CFLAG_8(res);
8965
8966      if(COND_NE(mc68kcpu))
8967         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8968      else
8969      {
8970         (mc68kcpu)->remaining_cycles -= 3;
8971         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
8972      }
8973      return;
8974   }
8975   m68ki_exception_illegal(mc68kcpu);
8976}
8977
8978
8979void m68000_base_device_ops::m68k_op_cas_8_ix(m68000_base_device* mc68kcpu)
8980{
8981   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
8982   {
8983      UINT32 word2 = OPER_I_16(mc68kcpu);
8984      UINT32 ea = EA_AY_IX_8(mc68kcpu);
8985      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
8986      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
8987      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
8988
8989      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
8990      (mc68kcpu)->n_flag = NFLAG_8(res);
8991      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
8992      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
8993      (mc68kcpu)->c_flag = CFLAG_8(res);
8994
8995      if(COND_NE(mc68kcpu))
8996         *compare = MASK_OUT_BELOW_8(*compare) | dest;
8997      else
8998      {
8999         (mc68kcpu)->remaining_cycles -= 3;
9000         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9001      }
9002      return;
9003   }
9004   m68ki_exception_illegal(mc68kcpu);
9005}
9006
9007
9008void m68000_base_device_ops::m68k_op_cas_8_aw(m68000_base_device* mc68kcpu)
9009{
9010   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9011   {
9012      UINT32 word2 = OPER_I_16(mc68kcpu);
9013      UINT32 ea = EA_AW_8(mc68kcpu);
9014      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
9015      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9016      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
9017
9018      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9019      (mc68kcpu)->n_flag = NFLAG_8(res);
9020      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
9021      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
9022      (mc68kcpu)->c_flag = CFLAG_8(res);
9023
9024      if(COND_NE(mc68kcpu))
9025         *compare = MASK_OUT_BELOW_8(*compare) | dest;
9026      else
9027      {
9028         (mc68kcpu)->remaining_cycles -= 3;
9029         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9030      }
9031      return;
9032   }
9033   m68ki_exception_illegal(mc68kcpu);
9034}
9035
9036
9037void m68000_base_device_ops::m68k_op_cas_8_al(m68000_base_device* mc68kcpu)
9038{
9039   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9040   {
9041      UINT32 word2 = OPER_I_16(mc68kcpu);
9042      UINT32 ea = EA_AL_8(mc68kcpu);
9043      UINT32 dest = m68ki_read_8((mc68kcpu), ea);
9044      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9045      UINT32 res = dest - MASK_OUT_ABOVE_8(*compare);
9046
9047      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9048      (mc68kcpu)->n_flag = NFLAG_8(res);
9049      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
9050      (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
9051      (mc68kcpu)->c_flag = CFLAG_8(res);
9052
9053      if(COND_NE(mc68kcpu))
9054         *compare = MASK_OUT_BELOW_8(*compare) | dest;
9055      else
9056      {
9057         (mc68kcpu)->remaining_cycles -= 3;
9058         m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9059      }
9060      return;
9061   }
9062   m68ki_exception_illegal(mc68kcpu);
9063}
9064
9065
9066void m68000_base_device_ops::m68k_op_cas_16_ai(m68000_base_device* mc68kcpu)
9067{
9068   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9069   {
9070      UINT32 word2 = OPER_I_16(mc68kcpu);
9071      UINT32 ea = EA_AY_AI_16(mc68kcpu);
9072      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9073      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9074      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9075
9076      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9077      (mc68kcpu)->n_flag = NFLAG_16(res);
9078      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9079      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9080      (mc68kcpu)->c_flag = CFLAG_16(res);
9081
9082      if(COND_NE(mc68kcpu))
9083         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9084      else
9085      {
9086         (mc68kcpu)->remaining_cycles -= 3;
9087         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9088      }
9089      return;
9090   }
9091   m68ki_exception_illegal(mc68kcpu);
9092}
9093
9094
9095void m68000_base_device_ops::m68k_op_cas_16_pi(m68000_base_device* mc68kcpu)
9096{
9097   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9098   {
9099      UINT32 word2 = OPER_I_16(mc68kcpu);
9100      UINT32 ea = EA_AY_PI_16(mc68kcpu);
9101      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9102      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9103      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9104
9105      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9106      (mc68kcpu)->n_flag = NFLAG_16(res);
9107      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9108      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9109      (mc68kcpu)->c_flag = CFLAG_16(res);
9110
9111      if(COND_NE(mc68kcpu))
9112         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9113      else
9114      {
9115         (mc68kcpu)->remaining_cycles -= 3;
9116         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9117      }
9118      return;
9119   }
9120   m68ki_exception_illegal(mc68kcpu);
9121}
9122
9123
9124void m68000_base_device_ops::m68k_op_cas_16_pd(m68000_base_device* mc68kcpu)
9125{
9126   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9127   {
9128      UINT32 word2 = OPER_I_16(mc68kcpu);
9129      UINT32 ea = EA_AY_PD_16(mc68kcpu);
9130      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9131      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9132      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9133
9134      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9135      (mc68kcpu)->n_flag = NFLAG_16(res);
9136      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9137      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9138      (mc68kcpu)->c_flag = CFLAG_16(res);
9139
9140      if(COND_NE(mc68kcpu))
9141         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9142      else
9143      {
9144         (mc68kcpu)->remaining_cycles -= 3;
9145         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9146      }
9147      return;
9148   }
9149   m68ki_exception_illegal(mc68kcpu);
9150}
9151
9152
9153void m68000_base_device_ops::m68k_op_cas_16_di(m68000_base_device* mc68kcpu)
9154{
9155   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9156   {
9157      UINT32 word2 = OPER_I_16(mc68kcpu);
9158      UINT32 ea = EA_AY_DI_16(mc68kcpu);
9159      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9160      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9161      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9162
9163      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9164      (mc68kcpu)->n_flag = NFLAG_16(res);
9165      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9166      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9167      (mc68kcpu)->c_flag = CFLAG_16(res);
9168
9169      if(COND_NE(mc68kcpu))
9170         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9171      else
9172      {
9173         (mc68kcpu)->remaining_cycles -= 3;
9174         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9175      }
9176      return;
9177   }
9178   m68ki_exception_illegal(mc68kcpu);
9179}
9180
9181
9182void m68000_base_device_ops::m68k_op_cas_16_ix(m68000_base_device* mc68kcpu)
9183{
9184   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9185   {
9186      UINT32 word2 = OPER_I_16(mc68kcpu);
9187      UINT32 ea = EA_AY_IX_16(mc68kcpu);
9188      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9189      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9190      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9191
9192      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9193      (mc68kcpu)->n_flag = NFLAG_16(res);
9194      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9195      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9196      (mc68kcpu)->c_flag = CFLAG_16(res);
9197
9198      if(COND_NE(mc68kcpu))
9199         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9200      else
9201      {
9202         (mc68kcpu)->remaining_cycles -= 3;
9203         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9204      }
9205      return;
9206   }
9207   m68ki_exception_illegal(mc68kcpu);
9208}
9209
9210
9211void m68000_base_device_ops::m68k_op_cas_16_aw(m68000_base_device* mc68kcpu)
9212{
9213   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9214   {
9215      UINT32 word2 = OPER_I_16(mc68kcpu);
9216      UINT32 ea = EA_AW_16(mc68kcpu);
9217      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9218      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9219      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9220
9221      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9222      (mc68kcpu)->n_flag = NFLAG_16(res);
9223      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9224      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9225      (mc68kcpu)->c_flag = CFLAG_16(res);
9226
9227      if(COND_NE(mc68kcpu))
9228         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9229      else
9230      {
9231         (mc68kcpu)->remaining_cycles -= 3;
9232         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9233      }
9234      return;
9235   }
9236   m68ki_exception_illegal(mc68kcpu);
9237}
9238
9239
9240void m68000_base_device_ops::m68k_op_cas_16_al(m68000_base_device* mc68kcpu)
9241{
9242   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9243   {
9244      UINT32 word2 = OPER_I_16(mc68kcpu);
9245      UINT32 ea = EA_AL_16(mc68kcpu);
9246      UINT32 dest = m68ki_read_16((mc68kcpu), ea);
9247      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9248      UINT32 res = dest - MASK_OUT_ABOVE_16(*compare);
9249
9250      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9251      (mc68kcpu)->n_flag = NFLAG_16(res);
9252      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
9253      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
9254      (mc68kcpu)->c_flag = CFLAG_16(res);
9255
9256      if(COND_NE(mc68kcpu))
9257         *compare = MASK_OUT_BELOW_16(*compare) | dest;
9258      else
9259      {
9260         (mc68kcpu)->remaining_cycles -= 3;
9261         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
9262      }
9263      return;
9264   }
9265   m68ki_exception_illegal(mc68kcpu);
9266}
9267
9268
9269void m68000_base_device_ops::m68k_op_cas_32_ai(m68000_base_device* mc68kcpu)
9270{
9271   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9272   {
9273      UINT32 word2 = OPER_I_16(mc68kcpu);
9274      UINT32 ea = EA_AY_AI_32(mc68kcpu);
9275      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9276      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9277      UINT32 res = dest - *compare;
9278
9279      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9280      (mc68kcpu)->n_flag = NFLAG_32(res);
9281      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9282      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9283      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9284
9285      if(COND_NE(mc68kcpu))
9286         *compare = dest;
9287      else
9288      {
9289         (mc68kcpu)->remaining_cycles -= 3;
9290         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9291      }
9292      return;
9293   }
9294   m68ki_exception_illegal(mc68kcpu);
9295}
9296
9297
9298void m68000_base_device_ops::m68k_op_cas_32_pi(m68000_base_device* mc68kcpu)
9299{
9300   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9301   {
9302      UINT32 word2 = OPER_I_16(mc68kcpu);
9303      UINT32 ea = EA_AY_PI_32(mc68kcpu);
9304      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9305      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9306      UINT32 res = dest - *compare;
9307
9308      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9309      (mc68kcpu)->n_flag = NFLAG_32(res);
9310      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9311      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9312      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9313
9314      if(COND_NE(mc68kcpu))
9315         *compare = dest;
9316      else
9317      {
9318         (mc68kcpu)->remaining_cycles -= 3;
9319         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9320      }
9321      return;
9322   }
9323   m68ki_exception_illegal(mc68kcpu);
9324}
9325
9326
9327void m68000_base_device_ops::m68k_op_cas_32_pd(m68000_base_device* mc68kcpu)
9328{
9329   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9330   {
9331      UINT32 word2 = OPER_I_16(mc68kcpu);
9332      UINT32 ea = EA_AY_PD_32(mc68kcpu);
9333      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9334      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9335      UINT32 res = dest - *compare;
9336
9337      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9338      (mc68kcpu)->n_flag = NFLAG_32(res);
9339      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9340      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9341      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9342
9343      if(COND_NE(mc68kcpu))
9344         *compare = dest;
9345      else
9346      {
9347         (mc68kcpu)->remaining_cycles -= 3;
9348         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9349      }
9350      return;
9351   }
9352   m68ki_exception_illegal(mc68kcpu);
9353}
9354
9355
9356void m68000_base_device_ops::m68k_op_cas_32_di(m68000_base_device* mc68kcpu)
9357{
9358   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9359   {
9360      UINT32 word2 = OPER_I_16(mc68kcpu);
9361      UINT32 ea = EA_AY_DI_32(mc68kcpu);
9362      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9363      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9364      UINT32 res = dest - *compare;
9365
9366      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9367      (mc68kcpu)->n_flag = NFLAG_32(res);
9368      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9369      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9370      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9371
9372      if(COND_NE(mc68kcpu))
9373         *compare = dest;
9374      else
9375      {
9376         (mc68kcpu)->remaining_cycles -= 3;
9377         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9378      }
9379      return;
9380   }
9381   m68ki_exception_illegal(mc68kcpu);
9382}
9383
9384
9385void m68000_base_device_ops::m68k_op_cas_32_ix(m68000_base_device* mc68kcpu)
9386{
9387   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9388   {
9389      UINT32 word2 = OPER_I_16(mc68kcpu);
9390      UINT32 ea = EA_AY_IX_32(mc68kcpu);
9391      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9392      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9393      UINT32 res = dest - *compare;
9394
9395      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9396      (mc68kcpu)->n_flag = NFLAG_32(res);
9397      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9398      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9399      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9400
9401      if(COND_NE(mc68kcpu))
9402         *compare = dest;
9403      else
9404      {
9405         (mc68kcpu)->remaining_cycles -= 3;
9406         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9407      }
9408      return;
9409   }
9410   m68ki_exception_illegal(mc68kcpu);
9411}
9412
9413
9414void m68000_base_device_ops::m68k_op_cas_32_aw(m68000_base_device* mc68kcpu)
9415{
9416   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9417   {
9418      UINT32 word2 = OPER_I_16(mc68kcpu);
9419      UINT32 ea = EA_AW_32(mc68kcpu);
9420      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9421      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9422      UINT32 res = dest - *compare;
9423
9424      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9425      (mc68kcpu)->n_flag = NFLAG_32(res);
9426      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9427      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9428      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9429
9430      if(COND_NE(mc68kcpu))
9431         *compare = dest;
9432      else
9433      {
9434         (mc68kcpu)->remaining_cycles -= 3;
9435         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9436      }
9437      return;
9438   }
9439   m68ki_exception_illegal(mc68kcpu);
9440}
9441
9442
9443void m68000_base_device_ops::m68k_op_cas_32_al(m68000_base_device* mc68kcpu)
9444{
9445   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9446   {
9447      UINT32 word2 = OPER_I_16(mc68kcpu);
9448      UINT32 ea = EA_AL_32(mc68kcpu);
9449      UINT32 dest = m68ki_read_32((mc68kcpu), ea);
9450      UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
9451      UINT32 res = dest - *compare;
9452
9453      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9454      (mc68kcpu)->n_flag = NFLAG_32(res);
9455      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
9456      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
9457      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
9458
9459      if(COND_NE(mc68kcpu))
9460         *compare = dest;
9461      else
9462      {
9463         (mc68kcpu)->remaining_cycles -= 3;
9464         m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9465      }
9466      return;
9467   }
9468   m68ki_exception_illegal(mc68kcpu);
9469}
9470
9471
9472void m68000_base_device_ops::m68k_op_cas2_16(m68000_base_device* mc68kcpu)
9473{
9474   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9475   {
9476      UINT32 word2 = OPER_I_32(mc68kcpu);
9477      UINT32* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
9478      UINT32 ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
9479      UINT32 dest1 = m68ki_read_16((mc68kcpu), ea1);
9480      UINT32 res1 = dest1 - MASK_OUT_ABOVE_16(*compare1);
9481      UINT32* compare2 = &REG_D(mc68kcpu)[word2 & 7];
9482      UINT32 ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
9483      UINT32 dest2 = m68ki_read_16((mc68kcpu), ea2);
9484      UINT32 res2;
9485
9486      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9487      (mc68kcpu)->n_flag = NFLAG_16(res1);
9488      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res1);
9489      (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare1, dest1, res1);
9490      (mc68kcpu)->c_flag = CFLAG_16(res1);
9491
9492      if(COND_EQ(mc68kcpu))
9493      {
9494         res2 = dest2 - MASK_OUT_ABOVE_16(*compare2);
9495
9496         (mc68kcpu)->n_flag = NFLAG_16(res2);
9497         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res2);
9498         (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare2, dest2, res2);
9499         (mc68kcpu)->c_flag = CFLAG_16(res2);
9500
9501         if(COND_EQ(mc68kcpu))
9502         {
9503            (mc68kcpu)->remaining_cycles -= 3;
9504            m68ki_write_16((mc68kcpu), ea1, REG_D(mc68kcpu)[(word2 >> 22) & 7]);
9505            m68ki_write_16((mc68kcpu), ea2, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9506            return;
9507         }
9508      }
9509      *compare1 = BIT_1F(word2) ? MAKE_INT_16(dest1) : MASK_OUT_BELOW_16(*compare1) | dest1;
9510      *compare2 = BIT_F(word2) ? MAKE_INT_16(dest2) : MASK_OUT_BELOW_16(*compare2) | dest2;
9511      return;
9512   }
9513   m68ki_exception_illegal(mc68kcpu);
9514}
9515
9516
9517void m68000_base_device_ops::m68k_op_cas2_32(m68000_base_device* mc68kcpu)
9518{
9519   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9520   {
9521      UINT32 word2 = OPER_I_32(mc68kcpu);
9522      UINT32* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
9523      UINT32 ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
9524      UINT32 dest1 = m68ki_read_32((mc68kcpu), ea1);
9525      UINT32 res1 = dest1 - *compare1;
9526      UINT32* compare2 = &REG_D(mc68kcpu)[word2 & 7];
9527      UINT32 ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
9528      UINT32 dest2 = m68ki_read_32((mc68kcpu), ea2);
9529      UINT32 res2;
9530
9531      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
9532      (mc68kcpu)->n_flag = NFLAG_32(res1);
9533      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res1);
9534      (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare1, dest1, res1);
9535      (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare1, dest1, res1);
9536
9537      if(COND_EQ(mc68kcpu))
9538      {
9539         res2 = dest2 - *compare2;
9540
9541         (mc68kcpu)->n_flag = NFLAG_32(res2);
9542         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res2);
9543         (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare2, dest2, res2);
9544         (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare2, dest2, res2);
9545
9546         if(COND_EQ(mc68kcpu))
9547         {
9548            (mc68kcpu)->remaining_cycles -= 3;
9549            m68ki_write_32((mc68kcpu), ea1, REG_D(mc68kcpu)[(word2 >> 22) & 7]);
9550            m68ki_write_32((mc68kcpu), ea2, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
9551            return;
9552         }
9553      }
9554      *compare1 = dest1;
9555      *compare2 = dest2;
9556      return;
9557   }
9558   m68ki_exception_illegal(mc68kcpu);
9559}
9560
9561
9562void m68000_base_device_ops::m68k_op_chk_16_d(m68000_base_device* mc68kcpu)
9563{
9564   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9565   INT32 bound = MAKE_INT_16(DY(mc68kcpu));
9566
9567   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9568   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9569   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9570
9571   if(src >= 0 && src <= bound)
9572   {
9573      return;
9574   }
9575   (mc68kcpu)->n_flag = (src < 0)<<7;
9576   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9577}
9578
9579
9580void m68000_base_device_ops::m68k_op_chk_16_ai(m68000_base_device* mc68kcpu)
9581{
9582   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9583   INT32 bound = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
9584
9585   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9586   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9587   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9588
9589   if(src >= 0 && src <= bound)
9590   {
9591      return;
9592   }
9593   (mc68kcpu)->n_flag = (src < 0)<<7;
9594   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9595}
9596
9597
9598void m68000_base_device_ops::m68k_op_chk_16_pi(m68000_base_device* mc68kcpu)
9599{
9600   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9601   INT32 bound = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
9602
9603   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9604   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9605   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9606
9607   if(src >= 0 && src <= bound)
9608   {
9609      return;
9610   }
9611   (mc68kcpu)->n_flag = (src < 0)<<7;
9612   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9613}
9614
9615
9616void m68000_base_device_ops::m68k_op_chk_16_pd(m68000_base_device* mc68kcpu)
9617{
9618   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9619   INT32 bound = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
9620
9621   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9622   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9623   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9624
9625   if(src >= 0 && src <= bound)
9626   {
9627      return;
9628   }
9629   (mc68kcpu)->n_flag = (src < 0)<<7;
9630   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9631}
9632
9633
9634void m68000_base_device_ops::m68k_op_chk_16_di(m68000_base_device* mc68kcpu)
9635{
9636   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9637   INT32 bound = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
9638
9639   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9640   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9641   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9642
9643   if(src >= 0 && src <= bound)
9644   {
9645      return;
9646   }
9647   (mc68kcpu)->n_flag = (src < 0)<<7;
9648   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9649}
9650
9651
9652void m68000_base_device_ops::m68k_op_chk_16_ix(m68000_base_device* mc68kcpu)
9653{
9654   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9655   INT32 bound = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
9656
9657   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9658   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9659   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9660
9661   if(src >= 0 && src <= bound)
9662   {
9663      return;
9664   }
9665   (mc68kcpu)->n_flag = (src < 0)<<7;
9666   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9667}
9668
9669
9670void m68000_base_device_ops::m68k_op_chk_16_aw(m68000_base_device* mc68kcpu)
9671{
9672   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9673   INT32 bound = MAKE_INT_16(OPER_AW_16(mc68kcpu));
9674
9675   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9676   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9677   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9678
9679   if(src >= 0 && src <= bound)
9680   {
9681      return;
9682   }
9683   (mc68kcpu)->n_flag = (src < 0)<<7;
9684   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9685}
9686
9687
9688void m68000_base_device_ops::m68k_op_chk_16_al(m68000_base_device* mc68kcpu)
9689{
9690   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9691   INT32 bound = MAKE_INT_16(OPER_AL_16(mc68kcpu));
9692
9693   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9694   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9695   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9696
9697   if(src >= 0 && src <= bound)
9698   {
9699      return;
9700   }
9701   (mc68kcpu)->n_flag = (src < 0)<<7;
9702   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9703}
9704
9705
9706void m68000_base_device_ops::m68k_op_chk_16_pcdi(m68000_base_device* mc68kcpu)
9707{
9708   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9709   INT32 bound = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
9710
9711   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9712   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9713   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9714
9715   if(src >= 0 && src <= bound)
9716   {
9717      return;
9718   }
9719   (mc68kcpu)->n_flag = (src < 0)<<7;
9720   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9721}
9722
9723
9724void m68000_base_device_ops::m68k_op_chk_16_pcix(m68000_base_device* mc68kcpu)
9725{
9726   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9727   INT32 bound = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
9728
9729   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9730   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9731   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9732
9733   if(src >= 0 && src <= bound)
9734   {
9735      return;
9736   }
9737   (mc68kcpu)->n_flag = (src < 0)<<7;
9738   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9739}
9740
9741
9742void m68000_base_device_ops::m68k_op_chk_16_i(m68000_base_device* mc68kcpu)
9743{
9744   INT32 src = MAKE_INT_16(DX(mc68kcpu));
9745   INT32 bound = MAKE_INT_16(OPER_I_16(mc68kcpu));
9746
9747   (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
9748   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9749   (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9750
9751   if(src >= 0 && src <= bound)
9752   {
9753      return;
9754   }
9755   (mc68kcpu)->n_flag = (src < 0)<<7;
9756   m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9757}
9758
9759
9760void m68000_base_device_ops::m68k_op_chk_32_d(m68000_base_device* mc68kcpu)
9761{
9762   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9763   {
9764      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9765      INT32 bound = MAKE_INT_32(DY(mc68kcpu));
9766
9767      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9768      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9769      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9770
9771      if(src >= 0 && src <= bound)
9772      {
9773         return;
9774      }
9775      (mc68kcpu)->n_flag = (src < 0)<<7;
9776      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9777      return;
9778   }
9779   m68ki_exception_illegal(mc68kcpu);
9780}
9781
9782
9783void m68000_base_device_ops::m68k_op_chk_32_ai(m68000_base_device* mc68kcpu)
9784{
9785   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9786   {
9787      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9788      INT32 bound = MAKE_INT_32(OPER_AY_AI_32(mc68kcpu));
9789
9790      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9791      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9792      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9793
9794      if(src >= 0 && src <= bound)
9795      {
9796         return;
9797      }
9798      (mc68kcpu)->n_flag = (src < 0)<<7;
9799      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9800      return;
9801   }
9802   m68ki_exception_illegal(mc68kcpu);
9803}
9804
9805
9806void m68000_base_device_ops::m68k_op_chk_32_pi(m68000_base_device* mc68kcpu)
9807{
9808   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9809   {
9810      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9811      INT32 bound = MAKE_INT_32(OPER_AY_PI_32(mc68kcpu));
9812
9813      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9814      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9815      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9816
9817      if(src >= 0 && src <= bound)
9818      {
9819         return;
9820      }
9821      (mc68kcpu)->n_flag = (src < 0)<<7;
9822      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9823      return;
9824   }
9825   m68ki_exception_illegal(mc68kcpu);
9826}
9827
9828
9829void m68000_base_device_ops::m68k_op_chk_32_pd(m68000_base_device* mc68kcpu)
9830{
9831   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9832   {
9833      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9834      INT32 bound = MAKE_INT_32(OPER_AY_PD_32(mc68kcpu));
9835
9836      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9837      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9838      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9839
9840      if(src >= 0 && src <= bound)
9841      {
9842         return;
9843      }
9844      (mc68kcpu)->n_flag = (src < 0)<<7;
9845      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9846      return;
9847   }
9848   m68ki_exception_illegal(mc68kcpu);
9849}
9850
9851
9852void m68000_base_device_ops::m68k_op_chk_32_di(m68000_base_device* mc68kcpu)
9853{
9854   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9855   {
9856      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9857      INT32 bound = MAKE_INT_32(OPER_AY_DI_32(mc68kcpu));
9858
9859      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9860      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9861      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9862
9863      if(src >= 0 && src <= bound)
9864      {
9865         return;
9866      }
9867      (mc68kcpu)->n_flag = (src < 0)<<7;
9868      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9869      return;
9870   }
9871   m68ki_exception_illegal(mc68kcpu);
9872}
9873
9874
9875void m68000_base_device_ops::m68k_op_chk_32_ix(m68000_base_device* mc68kcpu)
9876{
9877   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9878   {
9879      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9880      INT32 bound = MAKE_INT_32(OPER_AY_IX_32(mc68kcpu));
9881
9882      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9883      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9884      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9885
9886      if(src >= 0 && src <= bound)
9887      {
9888         return;
9889      }
9890      (mc68kcpu)->n_flag = (src < 0)<<7;
9891      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9892      return;
9893   }
9894   m68ki_exception_illegal(mc68kcpu);
9895}
9896
9897
9898void m68000_base_device_ops::m68k_op_chk_32_aw(m68000_base_device* mc68kcpu)
9899{
9900   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9901   {
9902      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9903      INT32 bound = MAKE_INT_32(OPER_AW_32(mc68kcpu));
9904
9905      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9906      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9907      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9908
9909      if(src >= 0 && src <= bound)
9910      {
9911         return;
9912      }
9913      (mc68kcpu)->n_flag = (src < 0)<<7;
9914      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9915      return;
9916   }
9917   m68ki_exception_illegal(mc68kcpu);
9918}
9919
9920
9921void m68000_base_device_ops::m68k_op_chk_32_al(m68000_base_device* mc68kcpu)
9922{
9923   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9924   {
9925      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9926      INT32 bound = MAKE_INT_32(OPER_AL_32(mc68kcpu));
9927
9928      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9929      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9930      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9931
9932      if(src >= 0 && src <= bound)
9933      {
9934         return;
9935      }
9936      (mc68kcpu)->n_flag = (src < 0)<<7;
9937      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9938      return;
9939   }
9940   m68ki_exception_illegal(mc68kcpu);
9941}
9942
9943
9944void m68000_base_device_ops::m68k_op_chk_32_pcdi(m68000_base_device* mc68kcpu)
9945{
9946   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9947   {
9948      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9949      INT32 bound = MAKE_INT_32(OPER_PCDI_32(mc68kcpu));
9950
9951      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9952      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9953      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9954
9955      if(src >= 0 && src <= bound)
9956      {
9957         return;
9958      }
9959      (mc68kcpu)->n_flag = (src < 0)<<7;
9960      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9961      return;
9962   }
9963   m68ki_exception_illegal(mc68kcpu);
9964}
9965
9966
9967void m68000_base_device_ops::m68k_op_chk_32_pcix(m68000_base_device* mc68kcpu)
9968{
9969   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9970   {
9971      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9972      INT32 bound = MAKE_INT_32(OPER_PCIX_32(mc68kcpu));
9973
9974      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9975      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9976      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
9977
9978      if(src >= 0 && src <= bound)
9979      {
9980         return;
9981      }
9982      (mc68kcpu)->n_flag = (src < 0)<<7;
9983      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
9984      return;
9985   }
9986   m68ki_exception_illegal(mc68kcpu);
9987}
9988
9989
9990void m68000_base_device_ops::m68k_op_chk_32_i(m68000_base_device* mc68kcpu)
9991{
9992   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
9993   {
9994      INT32 src = MAKE_INT_32(DX(mc68kcpu));
9995      INT32 bound = MAKE_INT_32(OPER_I_32(mc68kcpu));
9996
9997      (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
9998      (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undocumented */
9999      (mc68kcpu)->c_flag = CFLAG_CLEAR;   /* Undocumented */
10000
10001      if(src >= 0 && src <= bound)
10002      {
10003         return;
10004      }
10005      (mc68kcpu)->n_flag = (src < 0)<<7;
10006      m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10007      return;
10008   }
10009   m68ki_exception_illegal(mc68kcpu);
10010}
10011
10012
10013void m68000_base_device_ops::m68k_op_chk2cmp2_8_pcdi(m68000_base_device* mc68kcpu)
10014{
10015   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10016   {
10017      UINT32 word2 = OPER_I_16(mc68kcpu);
10018      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10019      UINT32 ea = EA_PCDI_8(mc68kcpu);
10020      UINT32 lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
10021      UINT32 upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
10022
10023      if(!BIT_F(word2))
10024         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10025      else
10026         (mc68kcpu)->c_flag = compare - lower_bound;
10027      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10028      if(COND_CS(mc68kcpu))
10029      {
10030         if(BIT_B(word2))
10031            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10032         return;
10033      }
10034
10035      (mc68kcpu)->c_flag = upper_bound - compare;
10036      if(COND_CS(mc68kcpu) && BIT_B(word2))
10037            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10038      return;
10039   }
10040   m68ki_exception_illegal(mc68kcpu);
10041}
10042
10043
10044void m68000_base_device_ops::m68k_op_chk2cmp2_8_pcix(m68000_base_device* mc68kcpu)
10045{
10046   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10047   {
10048      UINT32 word2 = OPER_I_16(mc68kcpu);
10049      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10050      UINT32 ea = EA_PCIX_8(mc68kcpu);
10051      UINT32 lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
10052      UINT32 upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
10053
10054      if(!BIT_F(word2))
10055         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10056      else
10057         (mc68kcpu)->c_flag = compare - lower_bound;
10058      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10059      if(COND_CS(mc68kcpu))
10060      {
10061         if(BIT_B(word2))
10062            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10063         return;
10064      }
10065
10066      (mc68kcpu)->c_flag = upper_bound - compare;
10067      if(COND_CS(mc68kcpu) && BIT_B(word2))
10068            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10069      return;
10070   }
10071   m68ki_exception_illegal(mc68kcpu);
10072}
10073
10074
10075void m68000_base_device_ops::m68k_op_chk2cmp2_8_ai(m68000_base_device* mc68kcpu)
10076{
10077   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10078   {
10079      UINT32 word2 = OPER_I_16(mc68kcpu);
10080      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10081      UINT32 ea = EA_AY_AI_8(mc68kcpu);
10082      UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
10083      UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
10084
10085      if(!BIT_F(word2))
10086         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10087      else
10088         (mc68kcpu)->c_flag = compare - lower_bound;
10089      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10090      if(COND_CS(mc68kcpu))
10091      {
10092         if(BIT_B(word2))
10093            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10094         return;
10095      }
10096
10097      (mc68kcpu)->c_flag = upper_bound - compare;
10098      if(COND_CS(mc68kcpu) && BIT_B(word2))
10099            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10100      return;
10101   }
10102   m68ki_exception_illegal(mc68kcpu);
10103}
10104
10105
10106void m68000_base_device_ops::m68k_op_chk2cmp2_8_di(m68000_base_device* mc68kcpu)
10107{
10108   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10109   {
10110      UINT32 word2 = OPER_I_16(mc68kcpu);
10111      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10112      UINT32 ea = EA_AY_DI_8(mc68kcpu);
10113      UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
10114      UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
10115
10116      if(!BIT_F(word2))
10117         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10118      else
10119         (mc68kcpu)->c_flag = compare - lower_bound;
10120      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10121      if(COND_CS(mc68kcpu))
10122      {
10123         if(BIT_B(word2))
10124            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10125         return;
10126      }
10127
10128      (mc68kcpu)->c_flag = upper_bound - compare;
10129      if(COND_CS(mc68kcpu) && BIT_B(word2))
10130            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10131      return;
10132   }
10133   m68ki_exception_illegal(mc68kcpu);
10134}
10135
10136
10137void m68000_base_device_ops::m68k_op_chk2cmp2_8_ix(m68000_base_device* mc68kcpu)
10138{
10139   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10140   {
10141      UINT32 word2 = OPER_I_16(mc68kcpu);
10142      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10143      UINT32 ea = EA_AY_IX_8(mc68kcpu);
10144      UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
10145      UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
10146
10147      if(!BIT_F(word2))
10148         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10149      else
10150         (mc68kcpu)->c_flag = compare - lower_bound;
10151      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10152      if(COND_CS(mc68kcpu))
10153      {
10154         if(BIT_B(word2))
10155            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10156         return;
10157      }
10158
10159      (mc68kcpu)->c_flag = upper_bound - compare;
10160      if(COND_CS(mc68kcpu) && BIT_B(word2))
10161            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10162      return;
10163   }
10164   m68ki_exception_illegal(mc68kcpu);
10165}
10166
10167
10168void m68000_base_device_ops::m68k_op_chk2cmp2_8_aw(m68000_base_device* mc68kcpu)
10169{
10170   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10171   {
10172      UINT32 word2 = OPER_I_16(mc68kcpu);
10173      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10174      UINT32 ea = EA_AW_8(mc68kcpu);
10175      UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
10176      UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
10177
10178      if(!BIT_F(word2))
10179         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10180      else
10181         (mc68kcpu)->c_flag = compare - lower_bound;
10182      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10183      if(COND_CS(mc68kcpu))
10184      {
10185         if(BIT_B(word2))
10186            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10187         return;
10188      }
10189
10190      (mc68kcpu)->c_flag = upper_bound - compare;
10191      if(COND_CS(mc68kcpu) && BIT_B(word2))
10192            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10193      return;
10194   }
10195   m68ki_exception_illegal(mc68kcpu);
10196}
10197
10198
10199void m68000_base_device_ops::m68k_op_chk2cmp2_8_al(m68000_base_device* mc68kcpu)
10200{
10201   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10202   {
10203      UINT32 word2 = OPER_I_16(mc68kcpu);
10204      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
10205      UINT32 ea = EA_AL_8(mc68kcpu);
10206      UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
10207      UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
10208
10209      if(!BIT_F(word2))
10210         (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
10211      else
10212         (mc68kcpu)->c_flag = compare - lower_bound;
10213      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10214      if(COND_CS(mc68kcpu))
10215      {
10216         if(BIT_B(word2))
10217            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10218         return;
10219      }
10220
10221      (mc68kcpu)->c_flag = upper_bound - compare;
10222      if(COND_CS(mc68kcpu) && BIT_B(word2))
10223            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10224      return;
10225   }
10226   m68ki_exception_illegal(mc68kcpu);
10227}
10228
10229
10230void m68000_base_device_ops::m68k_op_chk2cmp2_16_pcdi(m68000_base_device* mc68kcpu)
10231{
10232   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10233   {
10234      UINT32 word2 = OPER_I_16(mc68kcpu);
10235      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10236      UINT32 ea = EA_PCDI_16(mc68kcpu);
10237      UINT32 lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
10238      UINT32 upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
10239
10240      if(!BIT_F(word2))
10241         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10242      else
10243         (mc68kcpu)->c_flag = compare - lower_bound;
10244      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10245      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10246      if(COND_CS(mc68kcpu))
10247      {
10248         if(BIT_B(word2))
10249            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10250         return;
10251      }
10252
10253      if(!BIT_F(word2))
10254         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10255      else
10256         (mc68kcpu)->c_flag = upper_bound - compare;
10257      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10258      if(COND_CS(mc68kcpu) && BIT_B(word2))
10259            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10260      return;
10261   }
10262   m68ki_exception_illegal(mc68kcpu);
10263}
10264
10265
10266void m68000_base_device_ops::m68k_op_chk2cmp2_16_pcix(m68000_base_device* mc68kcpu)
10267{
10268   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10269   {
10270      UINT32 word2 = OPER_I_16(mc68kcpu);
10271      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10272      UINT32 ea = EA_PCIX_16(mc68kcpu);
10273      UINT32 lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
10274      UINT32 upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
10275
10276      if(!BIT_F(word2))
10277         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10278      else
10279         (mc68kcpu)->c_flag = compare - lower_bound;
10280      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10281      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10282      if(COND_CS(mc68kcpu))
10283      {
10284         if(BIT_B(word2))
10285            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10286         return;
10287      }
10288
10289      if(!BIT_F(word2))
10290         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10291      else
10292         (mc68kcpu)->c_flag = upper_bound - compare;
10293      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10294      if(COND_CS(mc68kcpu) && BIT_B(word2))
10295            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10296      return;
10297   }
10298   m68ki_exception_illegal(mc68kcpu);
10299}
10300
10301
10302void m68000_base_device_ops::m68k_op_chk2cmp2_16_ai(m68000_base_device* mc68kcpu)
10303{
10304   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10305   {
10306      UINT32 word2 = OPER_I_16(mc68kcpu);
10307      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10308      UINT32 ea = EA_AY_AI_16(mc68kcpu);
10309      UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
10310      UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
10311
10312      if(!BIT_F(word2))
10313         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10314      else
10315         (mc68kcpu)->c_flag = compare - lower_bound;
10316
10317      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10318      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10319      if(COND_CS(mc68kcpu))
10320      {
10321         if(BIT_B(word2))
10322            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10323         return;
10324      }
10325      if(!BIT_F(word2))
10326         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10327      else
10328         (mc68kcpu)->c_flag = upper_bound - compare;
10329
10330      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10331      if(COND_CS(mc68kcpu) && BIT_B(word2))
10332            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10333      return;
10334   }
10335   m68ki_exception_illegal(mc68kcpu);
10336}
10337
10338
10339void m68000_base_device_ops::m68k_op_chk2cmp2_16_di(m68000_base_device* mc68kcpu)
10340{
10341   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10342   {
10343      UINT32 word2 = OPER_I_16(mc68kcpu);
10344      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10345      UINT32 ea = EA_AY_DI_16(mc68kcpu);
10346      UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
10347      UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
10348
10349      if(!BIT_F(word2))
10350         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10351      else
10352         (mc68kcpu)->c_flag = compare - lower_bound;
10353
10354      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10355      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10356      if(COND_CS(mc68kcpu))
10357      {
10358         if(BIT_B(word2))
10359            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10360         return;
10361      }
10362      if(!BIT_F(word2))
10363         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10364      else
10365         (mc68kcpu)->c_flag = upper_bound - compare;
10366
10367      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10368      if(COND_CS(mc68kcpu) && BIT_B(word2))
10369            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10370      return;
10371   }
10372   m68ki_exception_illegal(mc68kcpu);
10373}
10374
10375
10376void m68000_base_device_ops::m68k_op_chk2cmp2_16_ix(m68000_base_device* mc68kcpu)
10377{
10378   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10379   {
10380      UINT32 word2 = OPER_I_16(mc68kcpu);
10381      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10382      UINT32 ea = EA_AY_IX_16(mc68kcpu);
10383      UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
10384      UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
10385
10386      if(!BIT_F(word2))
10387         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10388      else
10389         (mc68kcpu)->c_flag = compare - lower_bound;
10390
10391      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10392      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10393      if(COND_CS(mc68kcpu))
10394      {
10395         if(BIT_B(word2))
10396            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10397         return;
10398      }
10399      if(!BIT_F(word2))
10400         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10401      else
10402         (mc68kcpu)->c_flag = upper_bound - compare;
10403
10404      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10405      if(COND_CS(mc68kcpu) && BIT_B(word2))
10406            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10407      return;
10408   }
10409   m68ki_exception_illegal(mc68kcpu);
10410}
10411
10412
10413void m68000_base_device_ops::m68k_op_chk2cmp2_16_aw(m68000_base_device* mc68kcpu)
10414{
10415   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10416   {
10417      UINT32 word2 = OPER_I_16(mc68kcpu);
10418      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10419      UINT32 ea = EA_AW_16(mc68kcpu);
10420      UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
10421      UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
10422
10423      if(!BIT_F(word2))
10424         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10425      else
10426         (mc68kcpu)->c_flag = compare - lower_bound;
10427
10428      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10429      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10430      if(COND_CS(mc68kcpu))
10431      {
10432         if(BIT_B(word2))
10433            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10434         return;
10435      }
10436      if(!BIT_F(word2))
10437         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10438      else
10439         (mc68kcpu)->c_flag = upper_bound - compare;
10440
10441      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10442      if(COND_CS(mc68kcpu) && BIT_B(word2))
10443            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10444      return;
10445   }
10446   m68ki_exception_illegal(mc68kcpu);
10447}
10448
10449
10450void m68000_base_device_ops::m68k_op_chk2cmp2_16_al(m68000_base_device* mc68kcpu)
10451{
10452   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10453   {
10454      UINT32 word2 = OPER_I_16(mc68kcpu);
10455      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
10456      UINT32 ea = EA_AL_16(mc68kcpu);
10457      UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
10458      UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
10459
10460      if(!BIT_F(word2))
10461         (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
10462      else
10463         (mc68kcpu)->c_flag = compare - lower_bound;
10464
10465      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10466      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10467      if(COND_CS(mc68kcpu))
10468      {
10469         if(BIT_B(word2))
10470            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10471         return;
10472      }
10473      if(!BIT_F(word2))
10474         (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
10475      else
10476         (mc68kcpu)->c_flag = upper_bound - compare;
10477
10478      (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
10479      if(COND_CS(mc68kcpu) && BIT_B(word2))
10480            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10481      return;
10482   }
10483   m68ki_exception_illegal(mc68kcpu);
10484}
10485
10486
10487void m68000_base_device_ops::m68k_op_chk2cmp2_32_pcdi(m68000_base_device* mc68kcpu)
10488{
10489   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10490   {
10491      UINT32 word2 = OPER_I_16(mc68kcpu);
10492      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10493      UINT32 ea = EA_PCDI_32(mc68kcpu);
10494      UINT32 lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
10495      UINT32 upper_bound = m68ki_read_pcrel_32((mc68kcpu), ea + 4);
10496
10497      (mc68kcpu)->c_flag = compare - lower_bound;
10498      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10499      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10500      if(COND_CS(mc68kcpu))
10501      {
10502         if(BIT_B(word2))
10503            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10504         return;
10505      }
10506
10507      (mc68kcpu)->c_flag = upper_bound - compare;
10508      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10509      if(COND_CS(mc68kcpu) && BIT_B(word2))
10510            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10511      return;
10512   }
10513   m68ki_exception_illegal(mc68kcpu);
10514}
10515
10516
10517void m68000_base_device_ops::m68k_op_chk2cmp2_32_pcix(m68000_base_device* mc68kcpu)
10518{
10519   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10520   {
10521      UINT32 word2 = OPER_I_16(mc68kcpu);
10522      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10523      UINT32 ea = EA_PCIX_32(mc68kcpu);
10524      UINT32 lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
10525      UINT32 upper_bound = m68ki_read_pcrel_32((mc68kcpu), ea + 4);
10526
10527      (mc68kcpu)->c_flag = compare - lower_bound;
10528      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10529      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10530      if(COND_CS(mc68kcpu))
10531      {
10532         if(BIT_B(word2))
10533            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10534         return;
10535      }
10536
10537      (mc68kcpu)->c_flag = upper_bound - compare;
10538      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10539      if(COND_CS(mc68kcpu) && BIT_B(word2))
10540            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10541      return;
10542   }
10543   m68ki_exception_illegal(mc68kcpu);
10544}
10545
10546
10547void m68000_base_device_ops::m68k_op_chk2cmp2_32_ai(m68000_base_device* mc68kcpu)
10548{
10549   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10550   {
10551      UINT32 word2 = OPER_I_16(mc68kcpu);
10552      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10553      UINT32 ea = EA_AY_AI_32(mc68kcpu);
10554      UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
10555      UINT32 upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
10556
10557      (mc68kcpu)->c_flag = compare - lower_bound;
10558      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10559      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10560      if(COND_CS(mc68kcpu))
10561      {
10562         if(BIT_B(word2))
10563            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10564         return;
10565      }
10566
10567      (mc68kcpu)->c_flag = upper_bound - compare;
10568      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10569      if(COND_CS(mc68kcpu) && BIT_B(word2))
10570            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10571      return;
10572   }
10573   m68ki_exception_illegal(mc68kcpu);
10574}
10575
10576
10577void m68000_base_device_ops::m68k_op_chk2cmp2_32_di(m68000_base_device* mc68kcpu)
10578{
10579   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10580   {
10581      UINT32 word2 = OPER_I_16(mc68kcpu);
10582      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10583      UINT32 ea = EA_AY_DI_32(mc68kcpu);
10584      UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
10585      UINT32 upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
10586
10587      (mc68kcpu)->c_flag = compare - lower_bound;
10588      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10589      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10590      if(COND_CS(mc68kcpu))
10591      {
10592         if(BIT_B(word2))
10593            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10594         return;
10595      }
10596
10597      (mc68kcpu)->c_flag = upper_bound - compare;
10598      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10599      if(COND_CS(mc68kcpu) && BIT_B(word2))
10600            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10601      return;
10602   }
10603   m68ki_exception_illegal(mc68kcpu);
10604}
10605
10606
10607void m68000_base_device_ops::m68k_op_chk2cmp2_32_ix(m68000_base_device* mc68kcpu)
10608{
10609   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10610   {
10611      UINT32 word2 = OPER_I_16(mc68kcpu);
10612      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10613      UINT32 ea = EA_AY_IX_32(mc68kcpu);
10614      UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
10615      UINT32 upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
10616
10617      (mc68kcpu)->c_flag = compare - lower_bound;
10618      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10619      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10620      if(COND_CS(mc68kcpu))
10621      {
10622         if(BIT_B(word2))
10623            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10624         return;
10625      }
10626
10627      (mc68kcpu)->c_flag = upper_bound - compare;
10628      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10629      if(COND_CS(mc68kcpu) && BIT_B(word2))
10630            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10631      return;
10632   }
10633   m68ki_exception_illegal(mc68kcpu);
10634}
10635
10636
10637void m68000_base_device_ops::m68k_op_chk2cmp2_32_aw(m68000_base_device* mc68kcpu)
10638{
10639   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10640   {
10641      UINT32 word2 = OPER_I_16(mc68kcpu);
10642      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10643      UINT32 ea = EA_AW_32(mc68kcpu);
10644      UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
10645      UINT32 upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
10646
10647      (mc68kcpu)->c_flag = compare - lower_bound;
10648      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10649      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10650      if(COND_CS(mc68kcpu))
10651      {
10652         if(BIT_B(word2))
10653            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10654         return;
10655      }
10656
10657      (mc68kcpu)->c_flag = upper_bound - compare;
10658      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10659      if(COND_CS(mc68kcpu) && BIT_B(word2))
10660            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10661      return;
10662   }
10663   m68ki_exception_illegal(mc68kcpu);
10664}
10665
10666
10667void m68000_base_device_ops::m68k_op_chk2cmp2_32_al(m68000_base_device* mc68kcpu)
10668{
10669   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
10670   {
10671      UINT32 word2 = OPER_I_16(mc68kcpu);
10672      UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
10673      UINT32 ea = EA_AL_32(mc68kcpu);
10674      UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
10675      UINT32 upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
10676
10677      (mc68kcpu)->c_flag = compare - lower_bound;
10678      (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
10679      (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
10680      if(COND_CS(mc68kcpu))
10681      {
10682         if(BIT_B(word2))
10683            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10684         return;
10685      }
10686
10687      (mc68kcpu)->c_flag = upper_bound - compare;
10688      (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
10689      if(COND_CS(mc68kcpu) && BIT_B(word2))
10690            m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
10691      return;
10692   }
10693   m68ki_exception_illegal(mc68kcpu);
10694}
10695
10696
10697void m68000_base_device_ops::m68k_op_clr_8_d(m68000_base_device* mc68kcpu)
10698{
10699   DY(mc68kcpu) &= 0xffffff00;
10700
10701   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10702   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10703   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10704   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10705}
10706
10707
10708void m68000_base_device_ops::m68k_op_clr_8_ai(m68000_base_device* mc68kcpu)
10709{
10710   UINT32 ea = EA_AY_AI_8(mc68kcpu);
10711
10712   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10713   {
10714      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10715   }
10716
10717   m68ki_write_8((mc68kcpu), ea, 0);
10718
10719   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10720   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10721   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10722   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10723}
10724
10725
10726void m68000_base_device_ops::m68k_op_clr_8_pi(m68000_base_device* mc68kcpu)
10727{
10728   UINT32 ea = EA_AY_PI_8(mc68kcpu);
10729
10730   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10731   {
10732      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10733   }
10734
10735   m68ki_write_8((mc68kcpu), ea, 0);
10736
10737   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10738   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10739   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10740   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10741}
10742
10743
10744void m68000_base_device_ops::m68k_op_clr_8_pi7(m68000_base_device* mc68kcpu)
10745{
10746   UINT32 ea = EA_A7_PI_8(mc68kcpu);
10747
10748   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10749   {
10750      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10751   }
10752
10753   m68ki_write_8((mc68kcpu), ea, 0);
10754
10755   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10756   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10757   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10758   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10759}
10760
10761
10762void m68000_base_device_ops::m68k_op_clr_8_pd(m68000_base_device* mc68kcpu)
10763{
10764   UINT32 ea = EA_AY_PD_8(mc68kcpu);
10765
10766   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10767   {
10768      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10769   }
10770
10771   m68ki_write_8((mc68kcpu), ea, 0);
10772
10773   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10774   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10775   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10776   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10777}
10778
10779
10780void m68000_base_device_ops::m68k_op_clr_8_pd7(m68000_base_device* mc68kcpu)
10781{
10782   UINT32 ea = EA_A7_PD_8(mc68kcpu);
10783
10784   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10785   {
10786      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10787   }
10788
10789   m68ki_write_8((mc68kcpu), ea, 0);
10790
10791   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10792   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10793   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10794   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10795}
10796
10797
10798void m68000_base_device_ops::m68k_op_clr_8_di(m68000_base_device* mc68kcpu)
10799{
10800   UINT32 ea = EA_AY_DI_8(mc68kcpu);
10801
10802   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10803   {
10804      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10805   }
10806
10807   m68ki_write_8((mc68kcpu), ea, 0);
10808
10809   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10810   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10811   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10812   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10813}
10814
10815
10816void m68000_base_device_ops::m68k_op_clr_8_ix(m68000_base_device* mc68kcpu)
10817{
10818   UINT32 ea = EA_AY_IX_8(mc68kcpu);
10819
10820   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10821   {
10822      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10823   }
10824
10825   m68ki_write_8((mc68kcpu), ea, 0);
10826
10827   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10828   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10829   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10830   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10831}
10832
10833
10834void m68000_base_device_ops::m68k_op_clr_8_aw(m68000_base_device* mc68kcpu)
10835{
10836   UINT32 ea = EA_AW_8(mc68kcpu);
10837
10838   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10839   {
10840      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10841   }
10842
10843   m68ki_write_8((mc68kcpu), ea, 0);
10844
10845   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10846   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10847   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10848   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10849}
10850
10851
10852void m68000_base_device_ops::m68k_op_clr_8_al(m68000_base_device* mc68kcpu)
10853{
10854   UINT32 ea = EA_AL_8(mc68kcpu);
10855
10856   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10857   {
10858      m68ki_read_8((mc68kcpu), ea);   /* the 68000 does a dummy read, the value is discarded */
10859   }
10860
10861   m68ki_write_8((mc68kcpu), ea, 0);
10862
10863   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10864   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10865   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10866   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10867}
10868
10869
10870void m68000_base_device_ops::m68k_op_clr_16_d(m68000_base_device* mc68kcpu)
10871{
10872   DY(mc68kcpu) &= 0xffff0000;
10873
10874   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10875   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10876   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10877   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10878}
10879
10880
10881void m68000_base_device_ops::m68k_op_clr_16_ai(m68000_base_device* mc68kcpu)
10882{
10883   UINT32 ea = EA_AY_AI_16(mc68kcpu);
10884
10885   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10886   {
10887      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10888   }
10889
10890   m68ki_write_16((mc68kcpu), ea, 0);
10891
10892   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10893   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10894   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10895   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10896}
10897
10898
10899void m68000_base_device_ops::m68k_op_clr_16_pi(m68000_base_device* mc68kcpu)
10900{
10901   UINT32 ea = EA_AY_PI_16(mc68kcpu);
10902
10903   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10904   {
10905      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10906   }
10907
10908   m68ki_write_16((mc68kcpu), ea, 0);
10909
10910   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10911   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10912   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10913   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10914}
10915
10916
10917void m68000_base_device_ops::m68k_op_clr_16_pd(m68000_base_device* mc68kcpu)
10918{
10919   UINT32 ea = EA_AY_PD_16(mc68kcpu);
10920
10921   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10922   {
10923      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10924   }
10925
10926   m68ki_write_16((mc68kcpu), ea, 0);
10927
10928   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10929   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10930   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10931   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10932}
10933
10934
10935void m68000_base_device_ops::m68k_op_clr_16_di(m68000_base_device* mc68kcpu)
10936{
10937   UINT32 ea = EA_AY_DI_16(mc68kcpu);
10938
10939   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10940   {
10941      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10942   }
10943
10944   m68ki_write_16((mc68kcpu), ea, 0);
10945
10946   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10947   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10948   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10949   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10950}
10951
10952
10953void m68000_base_device_ops::m68k_op_clr_16_ix(m68000_base_device* mc68kcpu)
10954{
10955   UINT32 ea = EA_AY_IX_16(mc68kcpu);
10956
10957   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10958   {
10959      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10960   }
10961
10962   m68ki_write_16((mc68kcpu), ea, 0);
10963
10964   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10965   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10966   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10967   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10968}
10969
10970
10971void m68000_base_device_ops::m68k_op_clr_16_aw(m68000_base_device* mc68kcpu)
10972{
10973   UINT32 ea = EA_AW_16(mc68kcpu);
10974
10975   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10976   {
10977      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10978   }
10979
10980   m68ki_write_16((mc68kcpu), ea, 0);
10981
10982   (mc68kcpu)->n_flag = NFLAG_CLEAR;
10983   (mc68kcpu)->v_flag = VFLAG_CLEAR;
10984   (mc68kcpu)->c_flag = CFLAG_CLEAR;
10985   (mc68kcpu)->not_z_flag = ZFLAG_SET;
10986}
10987
10988
10989void m68000_base_device_ops::m68k_op_clr_16_al(m68000_base_device* mc68kcpu)
10990{
10991   UINT32 ea = EA_AL_16(mc68kcpu);
10992
10993   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
10994   {
10995      m68ki_read_16((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
10996   }
10997
10998   m68ki_write_16((mc68kcpu), ea, 0);
10999
11000   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11001   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11002   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11003   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11004}
11005
11006
11007void m68000_base_device_ops::m68k_op_clr_32_d(m68000_base_device* mc68kcpu)
11008{
11009   DY(mc68kcpu) = 0;
11010
11011   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11012   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11013   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11014   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11015}
11016
11017
11018void m68000_base_device_ops::m68k_op_clr_32_ai(m68000_base_device* mc68kcpu)
11019{
11020   UINT32 ea = EA_AY_AI_32(mc68kcpu);
11021
11022   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11023   {
11024      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11025   }
11026
11027   m68ki_write_32((mc68kcpu), ea, 0);
11028
11029   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11030   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11031   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11032   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11033}
11034
11035
11036void m68000_base_device_ops::m68k_op_clr_32_pi(m68000_base_device* mc68kcpu)
11037{
11038   UINT32 ea = EA_AY_PI_32(mc68kcpu);
11039
11040   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11041   {
11042      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11043   }
11044
11045   m68ki_write_32((mc68kcpu), ea, 0);
11046
11047   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11048   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11049   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11050   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11051}
11052
11053
11054void m68000_base_device_ops::m68k_op_clr_32_pd(m68000_base_device* mc68kcpu)
11055{
11056   UINT32 ea = EA_AY_PD_32(mc68kcpu);
11057
11058   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11059   {
11060      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11061   }
11062
11063   m68ki_write_32((mc68kcpu), ea, 0);
11064
11065   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11066   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11067   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11068   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11069}
11070
11071
11072void m68000_base_device_ops::m68k_op_clr_32_di(m68000_base_device* mc68kcpu)
11073{
11074   UINT32 ea = EA_AY_DI_32(mc68kcpu);
11075
11076   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11077   {
11078      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11079   }
11080
11081   m68ki_write_32((mc68kcpu), ea, 0);
11082
11083   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11084   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11085   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11086   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11087}
11088
11089
11090void m68000_base_device_ops::m68k_op_clr_32_ix(m68000_base_device* mc68kcpu)
11091{
11092   UINT32 ea = EA_AY_IX_32(mc68kcpu);
11093
11094   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11095   {
11096      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11097   }
11098
11099   m68ki_write_32((mc68kcpu), ea, 0);
11100
11101   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11102   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11103   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11104   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11105}
11106
11107
11108void m68000_base_device_ops::m68k_op_clr_32_aw(m68000_base_device* mc68kcpu)
11109{
11110   UINT32 ea = EA_AW_32(mc68kcpu);
11111
11112   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11113   {
11114      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11115   }
11116
11117   m68ki_write_32((mc68kcpu), ea, 0);
11118
11119   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11120   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11121   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11122   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11123}
11124
11125
11126void m68000_base_device_ops::m68k_op_clr_32_al(m68000_base_device* mc68kcpu)
11127{
11128   UINT32 ea = EA_AL_32(mc68kcpu);
11129
11130   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
11131   {
11132      m68ki_read_32((mc68kcpu), ea);  /* the 68000 does a dummy read, the value is discarded */
11133   }
11134
11135   m68ki_write_32((mc68kcpu), ea, 0);
11136
11137   (mc68kcpu)->n_flag = NFLAG_CLEAR;
11138   (mc68kcpu)->v_flag = VFLAG_CLEAR;
11139   (mc68kcpu)->c_flag = CFLAG_CLEAR;
11140   (mc68kcpu)->not_z_flag = ZFLAG_SET;
11141}
11142
11143
11144void m68000_base_device_ops::m68k_op_cmp_8_d(m68000_base_device* mc68kcpu)
11145{
11146   UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
11147   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11148   UINT32 res = dst - src;
11149
11150   (mc68kcpu)->n_flag = NFLAG_8(res);
11151   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11152   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11153   (mc68kcpu)->c_flag = CFLAG_8(res);
11154}
11155
11156
11157void m68000_base_device_ops::m68k_op_cmp_8_ai(m68000_base_device* mc68kcpu)
11158{
11159   UINT32 src = OPER_AY_AI_8(mc68kcpu);
11160   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11161   UINT32 res = dst - src;
11162
11163   (mc68kcpu)->n_flag = NFLAG_8(res);
11164   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11165   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11166   (mc68kcpu)->c_flag = CFLAG_8(res);
11167}
11168
11169
11170void m68000_base_device_ops::m68k_op_cmp_8_pi(m68000_base_device* mc68kcpu)
11171{
11172   UINT32 src = OPER_AY_PI_8(mc68kcpu);
11173   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11174   UINT32 res = dst - src;
11175
11176   (mc68kcpu)->n_flag = NFLAG_8(res);
11177   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11178   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11179   (mc68kcpu)->c_flag = CFLAG_8(res);
11180}
11181
11182
11183void m68000_base_device_ops::m68k_op_cmp_8_pi7(m68000_base_device* mc68kcpu)
11184{
11185   UINT32 src = OPER_A7_PI_8(mc68kcpu);
11186   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11187   UINT32 res = dst - src;
11188
11189   (mc68kcpu)->n_flag = NFLAG_8(res);
11190   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11191   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11192   (mc68kcpu)->c_flag = CFLAG_8(res);
11193}
11194
11195
11196void m68000_base_device_ops::m68k_op_cmp_8_pd(m68000_base_device* mc68kcpu)
11197{
11198   UINT32 src = OPER_AY_PD_8(mc68kcpu);
11199   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11200   UINT32 res = dst - src;
11201
11202   (mc68kcpu)->n_flag = NFLAG_8(res);
11203   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11204   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11205   (mc68kcpu)->c_flag = CFLAG_8(res);
11206}
11207
11208
11209void m68000_base_device_ops::m68k_op_cmp_8_pd7(m68000_base_device* mc68kcpu)
11210{
11211   UINT32 src = OPER_A7_PD_8(mc68kcpu);
11212   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11213   UINT32 res = dst - src;
11214
11215   (mc68kcpu)->n_flag = NFLAG_8(res);
11216   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11217   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11218   (mc68kcpu)->c_flag = CFLAG_8(res);
11219}
11220
11221
11222void m68000_base_device_ops::m68k_op_cmp_8_di(m68000_base_device* mc68kcpu)
11223{
11224   UINT32 src = OPER_AY_DI_8(mc68kcpu);
11225   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11226   UINT32 res = dst - src;
11227
11228   (mc68kcpu)->n_flag = NFLAG_8(res);
11229   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11230   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11231   (mc68kcpu)->c_flag = CFLAG_8(res);
11232}
11233
11234
11235void m68000_base_device_ops::m68k_op_cmp_8_ix(m68000_base_device* mc68kcpu)
11236{
11237   UINT32 src = OPER_AY_IX_8(mc68kcpu);
11238   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11239   UINT32 res = dst - src;
11240
11241   (mc68kcpu)->n_flag = NFLAG_8(res);
11242   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11243   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11244   (mc68kcpu)->c_flag = CFLAG_8(res);
11245}
11246
11247
11248void m68000_base_device_ops::m68k_op_cmp_8_aw(m68000_base_device* mc68kcpu)
11249{
11250   UINT32 src = OPER_AW_8(mc68kcpu);
11251   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11252   UINT32 res = dst - src;
11253
11254   (mc68kcpu)->n_flag = NFLAG_8(res);
11255   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11256   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11257   (mc68kcpu)->c_flag = CFLAG_8(res);
11258}
11259
11260
11261void m68000_base_device_ops::m68k_op_cmp_8_al(m68000_base_device* mc68kcpu)
11262{
11263   UINT32 src = OPER_AL_8(mc68kcpu);
11264   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11265   UINT32 res = dst - src;
11266
11267   (mc68kcpu)->n_flag = NFLAG_8(res);
11268   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11269   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11270   (mc68kcpu)->c_flag = CFLAG_8(res);
11271}
11272
11273
11274void m68000_base_device_ops::m68k_op_cmp_8_pcdi(m68000_base_device* mc68kcpu)
11275{
11276   UINT32 src = OPER_PCDI_8(mc68kcpu);
11277   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11278   UINT32 res = dst - src;
11279
11280   (mc68kcpu)->n_flag = NFLAG_8(res);
11281   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11282   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11283   (mc68kcpu)->c_flag = CFLAG_8(res);
11284}
11285
11286
11287void m68000_base_device_ops::m68k_op_cmp_8_pcix(m68000_base_device* mc68kcpu)
11288{
11289   UINT32 src = OPER_PCIX_8(mc68kcpu);
11290   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11291   UINT32 res = dst - src;
11292
11293   (mc68kcpu)->n_flag = NFLAG_8(res);
11294   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11295   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11296   (mc68kcpu)->c_flag = CFLAG_8(res);
11297}
11298
11299
11300void m68000_base_device_ops::m68k_op_cmp_8_i(m68000_base_device* mc68kcpu)
11301{
11302   UINT32 src = OPER_I_8(mc68kcpu);
11303   UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
11304   UINT32 res = dst - src;
11305
11306   (mc68kcpu)->n_flag = NFLAG_8(res);
11307   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11308   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11309   (mc68kcpu)->c_flag = CFLAG_8(res);
11310}
11311
11312
11313void m68000_base_device_ops::m68k_op_cmp_16_d(m68000_base_device* mc68kcpu)
11314{
11315   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
11316   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11317   UINT32 res = dst - src;
11318
11319   (mc68kcpu)->n_flag = NFLAG_16(res);
11320   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11321   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11322   (mc68kcpu)->c_flag = CFLAG_16(res);
11323}
11324
11325
11326void m68000_base_device_ops::m68k_op_cmp_16_a(m68000_base_device* mc68kcpu)
11327{
11328   UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
11329   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11330   UINT32 res = dst - src;
11331
11332   (mc68kcpu)->n_flag = NFLAG_16(res);
11333   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11334   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11335   (mc68kcpu)->c_flag = CFLAG_16(res);
11336}
11337
11338
11339void m68000_base_device_ops::m68k_op_cmp_16_ai(m68000_base_device* mc68kcpu)
11340{
11341   UINT32 src = OPER_AY_AI_16(mc68kcpu);
11342   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11343   UINT32 res = dst - src;
11344
11345   (mc68kcpu)->n_flag = NFLAG_16(res);
11346   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11347   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11348   (mc68kcpu)->c_flag = CFLAG_16(res);
11349}
11350
11351
11352void m68000_base_device_ops::m68k_op_cmp_16_pi(m68000_base_device* mc68kcpu)
11353{
11354   UINT32 src = OPER_AY_PI_16(mc68kcpu);
11355   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11356   UINT32 res = dst - src;
11357
11358   (mc68kcpu)->n_flag = NFLAG_16(res);
11359   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11360   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11361   (mc68kcpu)->c_flag = CFLAG_16(res);
11362}
11363
11364
11365void m68000_base_device_ops::m68k_op_cmp_16_pd(m68000_base_device* mc68kcpu)
11366{
11367   UINT32 src = OPER_AY_PD_16(mc68kcpu);
11368   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11369   UINT32 res = dst - src;
11370
11371   (mc68kcpu)->n_flag = NFLAG_16(res);
11372   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11373   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11374   (mc68kcpu)->c_flag = CFLAG_16(res);
11375}
11376
11377
11378void m68000_base_device_ops::m68k_op_cmp_16_di(m68000_base_device* mc68kcpu)
11379{
11380   UINT32 src = OPER_AY_DI_16(mc68kcpu);
11381   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11382   UINT32 res = dst - src;
11383
11384   (mc68kcpu)->n_flag = NFLAG_16(res);
11385   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11386   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11387   (mc68kcpu)->c_flag = CFLAG_16(res);
11388}
11389
11390
11391void m68000_base_device_ops::m68k_op_cmp_16_ix(m68000_base_device* mc68kcpu)
11392{
11393   UINT32 src = OPER_AY_IX_16(mc68kcpu);
11394   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11395   UINT32 res = dst - src;
11396
11397   (mc68kcpu)->n_flag = NFLAG_16(res);
11398   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11399   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11400   (mc68kcpu)->c_flag = CFLAG_16(res);
11401}
11402
11403
11404void m68000_base_device_ops::m68k_op_cmp_16_aw(m68000_base_device* mc68kcpu)
11405{
11406   UINT32 src = OPER_AW_16(mc68kcpu);
11407   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11408   UINT32 res = dst - src;
11409
11410   (mc68kcpu)->n_flag = NFLAG_16(res);
11411   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11412   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11413   (mc68kcpu)->c_flag = CFLAG_16(res);
11414}
11415
11416
11417void m68000_base_device_ops::m68k_op_cmp_16_al(m68000_base_device* mc68kcpu)
11418{
11419   UINT32 src = OPER_AL_16(mc68kcpu);
11420   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11421   UINT32 res = dst - src;
11422
11423   (mc68kcpu)->n_flag = NFLAG_16(res);
11424   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11425   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11426   (mc68kcpu)->c_flag = CFLAG_16(res);
11427}
11428
11429
11430void m68000_base_device_ops::m68k_op_cmp_16_pcdi(m68000_base_device* mc68kcpu)
11431{
11432   UINT32 src = OPER_PCDI_16(mc68kcpu);
11433   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11434   UINT32 res = dst - src;
11435
11436   (mc68kcpu)->n_flag = NFLAG_16(res);
11437   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11438   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11439   (mc68kcpu)->c_flag = CFLAG_16(res);
11440}
11441
11442
11443void m68000_base_device_ops::m68k_op_cmp_16_pcix(m68000_base_device* mc68kcpu)
11444{
11445   UINT32 src = OPER_PCIX_16(mc68kcpu);
11446   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11447   UINT32 res = dst - src;
11448
11449   (mc68kcpu)->n_flag = NFLAG_16(res);
11450   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11451   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11452   (mc68kcpu)->c_flag = CFLAG_16(res);
11453}
11454
11455
11456void m68000_base_device_ops::m68k_op_cmp_16_i(m68000_base_device* mc68kcpu)
11457{
11458   UINT32 src = OPER_I_16(mc68kcpu);
11459   UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
11460   UINT32 res = dst - src;
11461
11462   (mc68kcpu)->n_flag = NFLAG_16(res);
11463   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
11464   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
11465   (mc68kcpu)->c_flag = CFLAG_16(res);
11466}
11467
11468
11469void m68000_base_device_ops::m68k_op_cmp_32_d(m68000_base_device* mc68kcpu)
11470{
11471   UINT32 src = DY(mc68kcpu);
11472   UINT32 dst = DX(mc68kcpu);
11473   UINT32 res = dst - src;
11474
11475   (mc68kcpu)->n_flag = NFLAG_32(res);
11476   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11477   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11478   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11479}
11480
11481
11482void m68000_base_device_ops::m68k_op_cmp_32_a(m68000_base_device* mc68kcpu)
11483{
11484   UINT32 src = AY(mc68kcpu);
11485   UINT32 dst = DX(mc68kcpu);
11486   UINT32 res = dst - src;
11487
11488   (mc68kcpu)->n_flag = NFLAG_32(res);
11489   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11490   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11491   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11492}
11493
11494
11495void m68000_base_device_ops::m68k_op_cmp_32_ai(m68000_base_device* mc68kcpu)
11496{
11497   UINT32 src = OPER_AY_AI_32(mc68kcpu);
11498   UINT32 dst = DX(mc68kcpu);
11499   UINT32 res = dst - src;
11500
11501   (mc68kcpu)->n_flag = NFLAG_32(res);
11502   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11503   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11504   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11505}
11506
11507
11508void m68000_base_device_ops::m68k_op_cmp_32_pi(m68000_base_device* mc68kcpu)
11509{
11510   UINT32 src = OPER_AY_PI_32(mc68kcpu);
11511   UINT32 dst = DX(mc68kcpu);
11512   UINT32 res = dst - src;
11513
11514   (mc68kcpu)->n_flag = NFLAG_32(res);
11515   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11516   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11517   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11518}
11519
11520
11521void m68000_base_device_ops::m68k_op_cmp_32_pd(m68000_base_device* mc68kcpu)
11522{
11523   UINT32 src = OPER_AY_PD_32(mc68kcpu);
11524   UINT32 dst = DX(mc68kcpu);
11525   UINT32 res = dst - src;
11526
11527   (mc68kcpu)->n_flag = NFLAG_32(res);
11528   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11529   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11530   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11531}
11532
11533
11534void m68000_base_device_ops::m68k_op_cmp_32_di(m68000_base_device* mc68kcpu)
11535{
11536   UINT32 src = OPER_AY_DI_32(mc68kcpu);
11537   UINT32 dst = DX(mc68kcpu);
11538   UINT32 res = dst - src;
11539
11540   (mc68kcpu)->n_flag = NFLAG_32(res);
11541   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11542   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11543   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11544}
11545
11546
11547void m68000_base_device_ops::m68k_op_cmp_32_ix(m68000_base_device* mc68kcpu)
11548{
11549   UINT32 src = OPER_AY_IX_32(mc68kcpu);
11550   UINT32 dst = DX(mc68kcpu);
11551   UINT32 res = dst - src;
11552
11553   (mc68kcpu)->n_flag = NFLAG_32(res);
11554   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11555   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11556   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11557}
11558
11559
11560void m68000_base_device_ops::m68k_op_cmp_32_aw(m68000_base_device* mc68kcpu)
11561{
11562   UINT32 src = OPER_AW_32(mc68kcpu);
11563   UINT32 dst = DX(mc68kcpu);
11564   UINT32 res = dst - src;
11565
11566   (mc68kcpu)->n_flag = NFLAG_32(res);
11567   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11568   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11569   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11570}
11571
11572
11573void m68000_base_device_ops::m68k_op_cmp_32_al(m68000_base_device* mc68kcpu)
11574{
11575   UINT32 src = OPER_AL_32(mc68kcpu);
11576   UINT32 dst = DX(mc68kcpu);
11577   UINT32 res = dst - src;
11578
11579   (mc68kcpu)->n_flag = NFLAG_32(res);
11580   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11581   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11582   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11583}
11584
11585
11586void m68000_base_device_ops::m68k_op_cmp_32_pcdi(m68000_base_device* mc68kcpu)
11587{
11588   UINT32 src = OPER_PCDI_32(mc68kcpu);
11589   UINT32 dst = DX(mc68kcpu);
11590   UINT32 res = dst - src;
11591
11592   (mc68kcpu)->n_flag = NFLAG_32(res);
11593   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11594   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11595   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11596}
11597
11598
11599void m68000_base_device_ops::m68k_op_cmp_32_pcix(m68000_base_device* mc68kcpu)
11600{
11601   UINT32 src = OPER_PCIX_32(mc68kcpu);
11602   UINT32 dst = DX(mc68kcpu);
11603   UINT32 res = dst - src;
11604
11605   (mc68kcpu)->n_flag = NFLAG_32(res);
11606   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11607   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11608   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11609}
11610
11611
11612void m68000_base_device_ops::m68k_op_cmp_32_i(m68000_base_device* mc68kcpu)
11613{
11614   UINT32 src = OPER_I_32(mc68kcpu);
11615   UINT32 dst = DX(mc68kcpu);
11616   UINT32 res = dst - src;
11617
11618   (mc68kcpu)->n_flag = NFLAG_32(res);
11619   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11620   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11621   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11622}
11623
11624
11625void m68000_base_device_ops::m68k_op_cmpa_16_d(m68000_base_device* mc68kcpu)
11626{
11627   UINT32 src = MAKE_INT_16(DY(mc68kcpu));
11628   UINT32 dst = AX(mc68kcpu);
11629   UINT32 res = dst - src;
11630
11631   (mc68kcpu)->n_flag = NFLAG_32(res);
11632   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11633   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11634   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11635}
11636
11637
11638void m68000_base_device_ops::m68k_op_cmpa_16_a(m68000_base_device* mc68kcpu)
11639{
11640   UINT32 src = MAKE_INT_16(AY(mc68kcpu));
11641   UINT32 dst = AX(mc68kcpu);
11642   UINT32 res = dst - src;
11643
11644   (mc68kcpu)->n_flag = NFLAG_32(res);
11645   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11646   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11647   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11648}
11649
11650
11651void m68000_base_device_ops::m68k_op_cmpa_16_ai(m68000_base_device* mc68kcpu)
11652{
11653   UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
11654   UINT32 dst = AX(mc68kcpu);
11655   UINT32 res = dst - src;
11656
11657   (mc68kcpu)->n_flag = NFLAG_32(res);
11658   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11659   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11660   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11661}
11662
11663
11664void m68000_base_device_ops::m68k_op_cmpa_16_pi(m68000_base_device* mc68kcpu)
11665{
11666   UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
11667   UINT32 dst = AX(mc68kcpu);
11668   UINT32 res = dst - src;
11669
11670   (mc68kcpu)->n_flag = NFLAG_32(res);
11671   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11672   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11673   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11674}
11675
11676
11677void m68000_base_device_ops::m68k_op_cmpa_16_pd(m68000_base_device* mc68kcpu)
11678{
11679   UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
11680   UINT32 dst = AX(mc68kcpu);
11681   UINT32 res = dst - src;
11682
11683   (mc68kcpu)->n_flag = NFLAG_32(res);
11684   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11685   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11686   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11687}
11688
11689
11690void m68000_base_device_ops::m68k_op_cmpa_16_di(m68000_base_device* mc68kcpu)
11691{
11692   UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
11693   UINT32 dst = AX(mc68kcpu);
11694   UINT32 res = dst - src;
11695
11696   (mc68kcpu)->n_flag = NFLAG_32(res);
11697   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11698   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11699   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11700}
11701
11702
11703void m68000_base_device_ops::m68k_op_cmpa_16_ix(m68000_base_device* mc68kcpu)
11704{
11705   UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
11706   UINT32 dst = AX(mc68kcpu);
11707   UINT32 res = dst - src;
11708
11709   (mc68kcpu)->n_flag = NFLAG_32(res);
11710   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11711   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11712   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11713}
11714
11715
11716void m68000_base_device_ops::m68k_op_cmpa_16_aw(m68000_base_device* mc68kcpu)
11717{
11718   UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
11719   UINT32 dst = AX(mc68kcpu);
11720   UINT32 res = dst - src;
11721
11722   (mc68kcpu)->n_flag = NFLAG_32(res);
11723   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11724   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11725   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11726}
11727
11728
11729void m68000_base_device_ops::m68k_op_cmpa_16_al(m68000_base_device* mc68kcpu)
11730{
11731   UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
11732   UINT32 dst = AX(mc68kcpu);
11733   UINT32 res = dst - src;
11734
11735   (mc68kcpu)->n_flag = NFLAG_32(res);
11736   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11737   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11738   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11739}
11740
11741
11742void m68000_base_device_ops::m68k_op_cmpa_16_pcdi(m68000_base_device* mc68kcpu)
11743{
11744   UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
11745   UINT32 dst = AX(mc68kcpu);
11746   UINT32 res = dst - src;
11747
11748   (mc68kcpu)->n_flag = NFLAG_32(res);
11749   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11750   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11751   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11752}
11753
11754
11755void m68000_base_device_ops::m68k_op_cmpa_16_pcix(m68000_base_device* mc68kcpu)
11756{
11757   UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
11758   UINT32 dst = AX(mc68kcpu);
11759   UINT32 res = dst - src;
11760
11761   (mc68kcpu)->n_flag = NFLAG_32(res);
11762   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11763   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11764   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11765}
11766
11767
11768void m68000_base_device_ops::m68k_op_cmpa_16_i(m68000_base_device* mc68kcpu)
11769{
11770   UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
11771   UINT32 dst = AX(mc68kcpu);
11772   UINT32 res = dst - src;
11773
11774   (mc68kcpu)->n_flag = NFLAG_32(res);
11775   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11776   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11777   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11778}
11779
11780
11781void m68000_base_device_ops::m68k_op_cmpa_32_d(m68000_base_device* mc68kcpu)
11782{
11783   UINT32 src = DY(mc68kcpu);
11784   UINT32 dst = AX(mc68kcpu);
11785   UINT32 res = dst - src;
11786
11787   (mc68kcpu)->n_flag = NFLAG_32(res);
11788   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11789   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11790   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11791}
11792
11793
11794void m68000_base_device_ops::m68k_op_cmpa_32_a(m68000_base_device* mc68kcpu)
11795{
11796   UINT32 src = AY(mc68kcpu);
11797   UINT32 dst = AX(mc68kcpu);
11798   UINT32 res = dst - src;
11799
11800   (mc68kcpu)->n_flag = NFLAG_32(res);
11801   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11802   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11803   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11804}
11805
11806
11807void m68000_base_device_ops::m68k_op_cmpa_32_ai(m68000_base_device* mc68kcpu)
11808{
11809   UINT32 src = OPER_AY_AI_32(mc68kcpu);
11810   UINT32 dst = AX(mc68kcpu);
11811   UINT32 res = dst - src;
11812
11813   (mc68kcpu)->n_flag = NFLAG_32(res);
11814   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11815   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11816   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11817}
11818
11819
11820void m68000_base_device_ops::m68k_op_cmpa_32_pi(m68000_base_device* mc68kcpu)
11821{
11822   UINT32 src = OPER_AY_PI_32(mc68kcpu);
11823   UINT32 dst = AX(mc68kcpu);
11824   UINT32 res = dst - src;
11825
11826   (mc68kcpu)->n_flag = NFLAG_32(res);
11827   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11828   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11829   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11830}
11831
11832
11833void m68000_base_device_ops::m68k_op_cmpa_32_pd(m68000_base_device* mc68kcpu)
11834{
11835   UINT32 src = OPER_AY_PD_32(mc68kcpu);
11836   UINT32 dst = AX(mc68kcpu);
11837   UINT32 res = dst - src;
11838
11839   (mc68kcpu)->n_flag = NFLAG_32(res);
11840   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11841   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11842   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11843}
11844
11845
11846void m68000_base_device_ops::m68k_op_cmpa_32_di(m68000_base_device* mc68kcpu)
11847{
11848   UINT32 src = OPER_AY_DI_32(mc68kcpu);
11849   UINT32 dst = AX(mc68kcpu);
11850   UINT32 res = dst - src;
11851
11852   (mc68kcpu)->n_flag = NFLAG_32(res);
11853   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11854   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11855   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11856}
11857
11858
11859void m68000_base_device_ops::m68k_op_cmpa_32_ix(m68000_base_device* mc68kcpu)
11860{
11861   UINT32 src = OPER_AY_IX_32(mc68kcpu);
11862   UINT32 dst = AX(mc68kcpu);
11863   UINT32 res = dst - src;
11864
11865   (mc68kcpu)->n_flag = NFLAG_32(res);
11866   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11867   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11868   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11869}
11870
11871
11872void m68000_base_device_ops::m68k_op_cmpa_32_aw(m68000_base_device* mc68kcpu)
11873{
11874   UINT32 src = OPER_AW_32(mc68kcpu);
11875   UINT32 dst = AX(mc68kcpu);
11876   UINT32 res = dst - src;
11877
11878   (mc68kcpu)->n_flag = NFLAG_32(res);
11879   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11880   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11881   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11882}
11883
11884
11885void m68000_base_device_ops::m68k_op_cmpa_32_al(m68000_base_device* mc68kcpu)
11886{
11887   UINT32 src = OPER_AL_32(mc68kcpu);
11888   UINT32 dst = AX(mc68kcpu);
11889   UINT32 res = dst - src;
11890
11891   (mc68kcpu)->n_flag = NFLAG_32(res);
11892   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11893   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11894   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11895}
11896
11897
11898void m68000_base_device_ops::m68k_op_cmpa_32_pcdi(m68000_base_device* mc68kcpu)
11899{
11900   UINT32 src = OPER_PCDI_32(mc68kcpu);
11901   UINT32 dst = AX(mc68kcpu);
11902   UINT32 res = dst - src;
11903
11904   (mc68kcpu)->n_flag = NFLAG_32(res);
11905   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11906   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11907   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11908}
11909
11910
11911void m68000_base_device_ops::m68k_op_cmpa_32_pcix(m68000_base_device* mc68kcpu)
11912{
11913   UINT32 src = OPER_PCIX_32(mc68kcpu);
11914   UINT32 dst = AX(mc68kcpu);
11915   UINT32 res = dst - src;
11916
11917   (mc68kcpu)->n_flag = NFLAG_32(res);
11918   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11919   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11920   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11921}
11922
11923
11924void m68000_base_device_ops::m68k_op_cmpa_32_i(m68000_base_device* mc68kcpu)
11925{
11926   UINT32 src = OPER_I_32(mc68kcpu);
11927   UINT32 dst = AX(mc68kcpu);
11928   UINT32 res = dst - src;
11929
11930   (mc68kcpu)->n_flag = NFLAG_32(res);
11931   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
11932   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
11933   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
11934}
11935
11936
11937void m68000_base_device_ops::m68k_op_cmpi_8_d(m68000_base_device* mc68kcpu)
11938{
11939   UINT32 src = OPER_I_8(mc68kcpu);
11940   UINT32 dst = MASK_OUT_ABOVE_8(DY(mc68kcpu));
11941   UINT32 res = dst - src;
11942
11943   (mc68kcpu)->n_flag = NFLAG_8(res);
11944   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11945   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11946   (mc68kcpu)->c_flag = CFLAG_8(res);
11947}
11948
11949
11950void m68000_base_device_ops::m68k_op_cmpi_8_ai(m68000_base_device* mc68kcpu)
11951{
11952   UINT32 src = OPER_I_8(mc68kcpu);
11953   UINT32 dst = OPER_AY_AI_8(mc68kcpu);
11954   UINT32 res = dst - src;
11955
11956   (mc68kcpu)->n_flag = NFLAG_8(res);
11957   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11958   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11959   (mc68kcpu)->c_flag = CFLAG_8(res);
11960}
11961
11962
11963void m68000_base_device_ops::m68k_op_cmpi_8_pi(m68000_base_device* mc68kcpu)
11964{
11965   UINT32 src = OPER_I_8(mc68kcpu);
11966   UINT32 dst = OPER_AY_PI_8(mc68kcpu);
11967   UINT32 res = dst - src;
11968
11969   (mc68kcpu)->n_flag = NFLAG_8(res);
11970   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11971   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11972   (mc68kcpu)->c_flag = CFLAG_8(res);
11973}
11974
11975
11976void m68000_base_device_ops::m68k_op_cmpi_8_pi7(m68000_base_device* mc68kcpu)
11977{
11978   UINT32 src = OPER_I_8(mc68kcpu);
11979   UINT32 dst = OPER_A7_PI_8(mc68kcpu);
11980   UINT32 res = dst - src;
11981
11982   (mc68kcpu)->n_flag = NFLAG_8(res);
11983   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11984   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11985   (mc68kcpu)->c_flag = CFLAG_8(res);
11986}
11987
11988
11989void m68000_base_device_ops::m68k_op_cmpi_8_pd(m68000_base_device* mc68kcpu)
11990{
11991   UINT32 src = OPER_I_8(mc68kcpu);
11992   UINT32 dst = OPER_AY_PD_8(mc68kcpu);
11993   UINT32 res = dst - src;
11994
11995   (mc68kcpu)->n_flag = NFLAG_8(res);
11996   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
11997   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
11998   (mc68kcpu)->c_flag = CFLAG_8(res);
11999}
12000
12001
12002void m68000_base_device_ops::m68k_op_cmpi_8_pd7(m68000_base_device* mc68kcpu)
12003{
12004   UINT32 src = OPER_I_8(mc68kcpu);
12005   UINT32 dst = OPER_A7_PD_8(mc68kcpu);
12006   UINT32 res = dst - src;
12007
12008   (mc68kcpu)->n_flag = NFLAG_8(res);
12009   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12010   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12011   (mc68kcpu)->c_flag = CFLAG_8(res);
12012}
12013
12014
12015void m68000_base_device_ops::m68k_op_cmpi_8_di(m68000_base_device* mc68kcpu)
12016{
12017   UINT32 src = OPER_I_8(mc68kcpu);
12018   UINT32 dst = OPER_AY_DI_8(mc68kcpu);
12019   UINT32 res = dst - src;
12020
12021   (mc68kcpu)->n_flag = NFLAG_8(res);
12022   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12023   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12024   (mc68kcpu)->c_flag = CFLAG_8(res);
12025}
12026
12027
12028void m68000_base_device_ops::m68k_op_cmpi_8_ix(m68000_base_device* mc68kcpu)
12029{
12030   UINT32 src = OPER_I_8(mc68kcpu);
12031   UINT32 dst = OPER_AY_IX_8(mc68kcpu);
12032   UINT32 res = dst - src;
12033
12034   (mc68kcpu)->n_flag = NFLAG_8(res);
12035   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12036   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12037   (mc68kcpu)->c_flag = CFLAG_8(res);
12038}
12039
12040
12041void m68000_base_device_ops::m68k_op_cmpi_8_aw(m68000_base_device* mc68kcpu)
12042{
12043   UINT32 src = OPER_I_8(mc68kcpu);
12044   UINT32 dst = OPER_AW_8(mc68kcpu);
12045   UINT32 res = dst - src;
12046
12047   (mc68kcpu)->n_flag = NFLAG_8(res);
12048   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12049   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12050   (mc68kcpu)->c_flag = CFLAG_8(res);
12051}
12052
12053
12054void m68000_base_device_ops::m68k_op_cmpi_8_al(m68000_base_device* mc68kcpu)
12055{
12056   UINT32 src = OPER_I_8(mc68kcpu);
12057   UINT32 dst = OPER_AL_8(mc68kcpu);
12058   UINT32 res = dst - src;
12059
12060   (mc68kcpu)->n_flag = NFLAG_8(res);
12061   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12062   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12063   (mc68kcpu)->c_flag = CFLAG_8(res);
12064}
12065
12066
12067void m68000_base_device_ops::m68k_op_cmpi_8_pcdi(m68000_base_device* mc68kcpu)
12068{
12069   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12070   {
12071      UINT32 src = OPER_I_8(mc68kcpu);
12072      UINT32 dst = OPER_PCDI_8(mc68kcpu);
12073      UINT32 res = dst - src;
12074
12075      (mc68kcpu)->n_flag = NFLAG_8(res);
12076      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12077      (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12078      (mc68kcpu)->c_flag = CFLAG_8(res);
12079      return;
12080   }
12081   m68ki_exception_illegal(mc68kcpu);
12082}
12083
12084
12085void m68000_base_device_ops::m68k_op_cmpi_8_pcix(m68000_base_device* mc68kcpu)
12086{
12087   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12088   {
12089      UINT32 src = OPER_I_8(mc68kcpu);
12090      UINT32 dst = OPER_PCIX_8(mc68kcpu);
12091      UINT32 res = dst - src;
12092
12093      (mc68kcpu)->n_flag = NFLAG_8(res);
12094      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12095      (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12096      (mc68kcpu)->c_flag = CFLAG_8(res);
12097      return;
12098   }
12099   m68ki_exception_illegal(mc68kcpu);
12100}
12101
12102
12103void m68000_base_device_ops::m68k_op_cmpi_16_d(m68000_base_device* mc68kcpu)
12104{
12105   UINT32 src = OPER_I_16(mc68kcpu);
12106   UINT32 dst = MASK_OUT_ABOVE_16(DY(mc68kcpu));
12107   UINT32 res = dst - src;
12108
12109   (mc68kcpu)->n_flag = NFLAG_16(res);
12110   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12111   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12112   (mc68kcpu)->c_flag = CFLAG_16(res);
12113}
12114
12115
12116void m68000_base_device_ops::m68k_op_cmpi_16_ai(m68000_base_device* mc68kcpu)
12117{
12118   UINT32 src = OPER_I_16(mc68kcpu);
12119   UINT32 dst = OPER_AY_AI_16(mc68kcpu);
12120   UINT32 res = dst - src;
12121
12122   (mc68kcpu)->n_flag = NFLAG_16(res);
12123   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12124   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12125   (mc68kcpu)->c_flag = CFLAG_16(res);
12126}
12127
12128
12129void m68000_base_device_ops::m68k_op_cmpi_16_pi(m68000_base_device* mc68kcpu)
12130{
12131   UINT32 src = OPER_I_16(mc68kcpu);
12132   UINT32 dst = OPER_AY_PI_16(mc68kcpu);
12133   UINT32 res = dst - src;
12134
12135   (mc68kcpu)->n_flag = NFLAG_16(res);
12136   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12137   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12138   (mc68kcpu)->c_flag = CFLAG_16(res);
12139}
12140
12141
12142void m68000_base_device_ops::m68k_op_cmpi_16_pd(m68000_base_device* mc68kcpu)
12143{
12144   UINT32 src = OPER_I_16(mc68kcpu);
12145   UINT32 dst = OPER_AY_PD_16(mc68kcpu);
12146   UINT32 res = dst - src;
12147
12148   (mc68kcpu)->n_flag = NFLAG_16(res);
12149   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12150   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12151   (mc68kcpu)->c_flag = CFLAG_16(res);
12152}
12153
12154
12155void m68000_base_device_ops::m68k_op_cmpi_16_di(m68000_base_device* mc68kcpu)
12156{
12157   UINT32 src = OPER_I_16(mc68kcpu);
12158   UINT32 dst = OPER_AY_DI_16(mc68kcpu);
12159   UINT32 res = dst - src;
12160
12161   (mc68kcpu)->n_flag = NFLAG_16(res);
12162   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12163   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12164   (mc68kcpu)->c_flag = CFLAG_16(res);
12165}
12166
12167
12168void m68000_base_device_ops::m68k_op_cmpi_16_ix(m68000_base_device* mc68kcpu)
12169{
12170   UINT32 src = OPER_I_16(mc68kcpu);
12171   UINT32 dst = OPER_AY_IX_16(mc68kcpu);
12172   UINT32 res = dst - src;
12173
12174   (mc68kcpu)->n_flag = NFLAG_16(res);
12175   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12176   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12177   (mc68kcpu)->c_flag = CFLAG_16(res);
12178}
12179
12180
12181void m68000_base_device_ops::m68k_op_cmpi_16_aw(m68000_base_device* mc68kcpu)
12182{
12183   UINT32 src = OPER_I_16(mc68kcpu);
12184   UINT32 dst = OPER_AW_16(mc68kcpu);
12185   UINT32 res = dst - src;
12186
12187   (mc68kcpu)->n_flag = NFLAG_16(res);
12188   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12189   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12190   (mc68kcpu)->c_flag = CFLAG_16(res);
12191}
12192
12193
12194void m68000_base_device_ops::m68k_op_cmpi_16_al(m68000_base_device* mc68kcpu)
12195{
12196   UINT32 src = OPER_I_16(mc68kcpu);
12197   UINT32 dst = OPER_AL_16(mc68kcpu);
12198   UINT32 res = dst - src;
12199
12200   (mc68kcpu)->n_flag = NFLAG_16(res);
12201   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12202   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12203   (mc68kcpu)->c_flag = CFLAG_16(res);
12204}
12205
12206
12207void m68000_base_device_ops::m68k_op_cmpi_16_pcdi(m68000_base_device* mc68kcpu)
12208{
12209   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12210   {
12211      UINT32 src = OPER_I_16(mc68kcpu);
12212      UINT32 dst = OPER_PCDI_16(mc68kcpu);
12213      UINT32 res = dst - src;
12214
12215      (mc68kcpu)->n_flag = NFLAG_16(res);
12216      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12217      (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12218      (mc68kcpu)->c_flag = CFLAG_16(res);
12219      return;
12220   }
12221   m68ki_exception_illegal(mc68kcpu);
12222}
12223
12224
12225void m68000_base_device_ops::m68k_op_cmpi_16_pcix(m68000_base_device* mc68kcpu)
12226{
12227   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12228   {
12229      UINT32 src = OPER_I_16(mc68kcpu);
12230      UINT32 dst = OPER_PCIX_16(mc68kcpu);
12231      UINT32 res = dst - src;
12232
12233      (mc68kcpu)->n_flag = NFLAG_16(res);
12234      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12235      (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12236      (mc68kcpu)->c_flag = CFLAG_16(res);
12237      return;
12238   }
12239   m68ki_exception_illegal(mc68kcpu);
12240}
12241
12242
12243void m68000_base_device_ops::m68k_op_cmpi_32_d(m68000_base_device* mc68kcpu)
12244{
12245   UINT32 src = OPER_I_32(mc68kcpu);
12246   UINT32 dst = DY(mc68kcpu);
12247   UINT32 res = dst - src;
12248
12249   if (!(mc68kcpu)->cmpild_instr_callback.isnull())
12250      ((mc68kcpu)->cmpild_instr_callback)(*(mc68kcpu)->program, (mc68kcpu)->ir & 7, src, 0xffffffff);
12251
12252   (mc68kcpu)->n_flag = NFLAG_32(res);
12253   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12254   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12255   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12256}
12257
12258
12259void m68000_base_device_ops::m68k_op_cmpi_32_ai(m68000_base_device* mc68kcpu)
12260{
12261   UINT32 src = OPER_I_32(mc68kcpu);
12262   UINT32 dst = OPER_AY_AI_32(mc68kcpu);
12263   UINT32 res = dst - src;
12264
12265   (mc68kcpu)->n_flag = NFLAG_32(res);
12266   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12267   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12268   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12269}
12270
12271
12272void m68000_base_device_ops::m68k_op_cmpi_32_pi(m68000_base_device* mc68kcpu)
12273{
12274   UINT32 src = OPER_I_32(mc68kcpu);
12275   UINT32 dst = OPER_AY_PI_32(mc68kcpu);
12276   UINT32 res = dst - src;
12277
12278   (mc68kcpu)->n_flag = NFLAG_32(res);
12279   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12280   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12281   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12282}
12283
12284
12285void m68000_base_device_ops::m68k_op_cmpi_32_pd(m68000_base_device* mc68kcpu)
12286{
12287   UINT32 src = OPER_I_32(mc68kcpu);
12288   UINT32 dst = OPER_AY_PD_32(mc68kcpu);
12289   UINT32 res = dst - src;
12290
12291   (mc68kcpu)->n_flag = NFLAG_32(res);
12292   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12293   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12294   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12295}
12296
12297
12298void m68000_base_device_ops::m68k_op_cmpi_32_di(m68000_base_device* mc68kcpu)
12299{
12300   UINT32 src = OPER_I_32(mc68kcpu);
12301   UINT32 dst = OPER_AY_DI_32(mc68kcpu);
12302   UINT32 res = dst - src;
12303
12304   (mc68kcpu)->n_flag = NFLAG_32(res);
12305   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12306   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12307   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12308}
12309
12310
12311void m68000_base_device_ops::m68k_op_cmpi_32_ix(m68000_base_device* mc68kcpu)
12312{
12313   UINT32 src = OPER_I_32(mc68kcpu);
12314   UINT32 dst = OPER_AY_IX_32(mc68kcpu);
12315   UINT32 res = dst - src;
12316
12317   (mc68kcpu)->n_flag = NFLAG_32(res);
12318   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12319   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12320   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12321}
12322
12323
12324void m68000_base_device_ops::m68k_op_cmpi_32_aw(m68000_base_device* mc68kcpu)
12325{
12326   UINT32 src = OPER_I_32(mc68kcpu);
12327   UINT32 dst = OPER_AW_32(mc68kcpu);
12328   UINT32 res = dst - src;
12329
12330   (mc68kcpu)->n_flag = NFLAG_32(res);
12331   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12332   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12333   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12334}
12335
12336
12337void m68000_base_device_ops::m68k_op_cmpi_32_al(m68000_base_device* mc68kcpu)
12338{
12339   UINT32 src = OPER_I_32(mc68kcpu);
12340   UINT32 dst = OPER_AL_32(mc68kcpu);
12341   UINT32 res = dst - src;
12342
12343   (mc68kcpu)->n_flag = NFLAG_32(res);
12344   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12345   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12346   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12347}
12348
12349
12350void m68000_base_device_ops::m68k_op_cmpi_32_pcdi(m68000_base_device* mc68kcpu)
12351{
12352   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12353   {
12354      UINT32 src = OPER_I_32(mc68kcpu);
12355      UINT32 dst = OPER_PCDI_32(mc68kcpu);
12356      UINT32 res = dst - src;
12357
12358      (mc68kcpu)->n_flag = NFLAG_32(res);
12359      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12360      (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12361      (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12362      return;
12363   }
12364   m68ki_exception_illegal(mc68kcpu);
12365}
12366
12367
12368void m68000_base_device_ops::m68k_op_cmpi_32_pcix(m68000_base_device* mc68kcpu)
12369{
12370   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12371   {
12372      UINT32 src = OPER_I_32(mc68kcpu);
12373      UINT32 dst = OPER_PCIX_32(mc68kcpu);
12374      UINT32 res = dst - src;
12375
12376      (mc68kcpu)->n_flag = NFLAG_32(res);
12377      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12378      (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12379      (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12380      return;
12381   }
12382   m68ki_exception_illegal(mc68kcpu);
12383}
12384
12385
12386void m68000_base_device_ops::m68k_op_cmpm_8_ax7(m68000_base_device* mc68kcpu)
12387{
12388   UINT32 src = OPER_AY_PI_8(mc68kcpu);
12389   UINT32 dst = OPER_A7_PI_8(mc68kcpu);
12390   UINT32 res = dst - src;
12391
12392   (mc68kcpu)->n_flag = NFLAG_8(res);
12393   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12394   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12395   (mc68kcpu)->c_flag = CFLAG_8(res);
12396}
12397
12398
12399void m68000_base_device_ops::m68k_op_cmpm_8_ay7(m68000_base_device* mc68kcpu)
12400{
12401   UINT32 src = OPER_A7_PI_8(mc68kcpu);
12402   UINT32 dst = OPER_AX_PI_8(mc68kcpu);
12403   UINT32 res = dst - src;
12404
12405   (mc68kcpu)->n_flag = NFLAG_8(res);
12406   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12407   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12408   (mc68kcpu)->c_flag = CFLAG_8(res);
12409}
12410
12411
12412void m68000_base_device_ops::m68k_op_cmpm_8_axy7(m68000_base_device* mc68kcpu)
12413{
12414   UINT32 src = OPER_A7_PI_8(mc68kcpu);
12415   UINT32 dst = OPER_A7_PI_8(mc68kcpu);
12416   UINT32 res = dst - src;
12417
12418   (mc68kcpu)->n_flag = NFLAG_8(res);
12419   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12420   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12421   (mc68kcpu)->c_flag = CFLAG_8(res);
12422}
12423
12424
12425void m68000_base_device_ops::m68k_op_cmpm_8(m68000_base_device* mc68kcpu)
12426{
12427   UINT32 src = OPER_AY_PI_8(mc68kcpu);
12428   UINT32 dst = OPER_AX_PI_8(mc68kcpu);
12429   UINT32 res = dst - src;
12430
12431   (mc68kcpu)->n_flag = NFLAG_8(res);
12432   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
12433   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
12434   (mc68kcpu)->c_flag = CFLAG_8(res);
12435}
12436
12437
12438void m68000_base_device_ops::m68k_op_cmpm_16(m68000_base_device* mc68kcpu)
12439{
12440   UINT32 src = OPER_AY_PI_16(mc68kcpu);
12441   UINT32 dst = OPER_AX_PI_16(mc68kcpu);
12442   UINT32 res = dst - src;
12443
12444   (mc68kcpu)->n_flag = NFLAG_16(res);
12445   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
12446   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
12447   (mc68kcpu)->c_flag = CFLAG_16(res);
12448}
12449
12450
12451void m68000_base_device_ops::m68k_op_cmpm_32(m68000_base_device* mc68kcpu)
12452{
12453   UINT32 src = OPER_AY_PI_32(mc68kcpu);
12454   UINT32 dst = OPER_AX_PI_32(mc68kcpu);
12455   UINT32 res = dst - src;
12456
12457   (mc68kcpu)->n_flag = NFLAG_32(res);
12458   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
12459   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
12460   (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
12461}
12462
12463
12464void m68000_base_device_ops::m68k_op_cpbcc_32(m68000_base_device* mc68kcpu)
12465{
12466   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12467   {
12468      logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
12469                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
12470      return;
12471   }
12472   m68ki_exception_1111(mc68kcpu);
12473}
12474
12475
12476void m68000_base_device_ops::m68k_op_cpdbcc_32(m68000_base_device* mc68kcpu)
12477{
12478   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12479   {
12480      logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
12481                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
12482      return;
12483   }
12484   m68ki_exception_1111(mc68kcpu);
12485}
12486
12487
12488void m68000_base_device_ops::m68k_op_cpgen_32(m68000_base_device* mc68kcpu)
12489{
12490   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) && (mc68kcpu->has_fpu || mc68kcpu->has_pmmu))
12491   {
12492      logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
12493                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
12494      return;
12495   }
12496   m68ki_exception_1111(mc68kcpu);
12497}
12498
12499
12500void m68000_base_device_ops::m68k_op_cpscc_32(m68000_base_device* mc68kcpu)
12501{
12502   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12503   {
12504      logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
12505                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
12506      return;
12507   }
12508   m68ki_exception_1111(mc68kcpu);
12509}
12510
12511
12512void m68000_base_device_ops::m68k_op_cptrapcc_32(m68000_base_device* mc68kcpu)
12513{
12514   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
12515   {
12516      logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
12517                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
12518      return;
12519   }
12520   m68ki_exception_1111(mc68kcpu);
12521}
12522
12523
12524void m68000_base_device_ops::m68k_op_ftrapcc_32(m68000_base_device* mc68kcpu)
12525{
12526   if((mc68kcpu)->has_fpu)
12527   {
12528      m68881_ftrap(mc68kcpu);
12529      return;
12530   }
12531   m68ki_exception_1111(mc68kcpu);
12532}
12533
12534
12535void m68000_base_device_ops::m68k_op_dbt_16(m68000_base_device* mc68kcpu)
12536{
12537   REG_PC(mc68kcpu) += 2;
12538}
12539
12540
12541void m68000_base_device_ops::m68k_op_dbf_16(m68000_base_device* mc68kcpu)
12542{
12543   UINT32* r_dst = &DY(mc68kcpu);
12544   UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12545
12546   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12547   if(res != 0xffff)
12548   {
12549      UINT32 offset = OPER_I_16(mc68kcpu);
12550      REG_PC(mc68kcpu) -= 2;
12551      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12552      m68ki_branch_16((mc68kcpu), offset);
12553      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12554      return;
12555   }
12556   REG_PC(mc68kcpu) += 2;
12557   (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12558}
12559
12560
12561void m68000_base_device_ops::m68k_op_dbhi_16(m68000_base_device* mc68kcpu)
12562{
12563   if(COND_NOT_HI(mc68kcpu))
12564   {
12565      UINT32* r_dst = &DY(mc68kcpu);
12566      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12567
12568      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12569      if(res != 0xffff)
12570      {
12571         UINT32 offset = OPER_I_16(mc68kcpu);
12572         REG_PC(mc68kcpu) -= 2;
12573         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12574         m68ki_branch_16((mc68kcpu), offset);
12575         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12576         return;
12577      }
12578      REG_PC(mc68kcpu) += 2;
12579      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12580      return;
12581   }
12582   REG_PC(mc68kcpu) += 2;
12583}
12584
12585
12586void m68000_base_device_ops::m68k_op_dbls_16(m68000_base_device* mc68kcpu)
12587{
12588   if(COND_NOT_LS(mc68kcpu))
12589   {
12590      UINT32* r_dst = &DY(mc68kcpu);
12591      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12592
12593      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12594      if(res != 0xffff)
12595      {
12596         UINT32 offset = OPER_I_16(mc68kcpu);
12597         REG_PC(mc68kcpu) -= 2;
12598         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12599         m68ki_branch_16((mc68kcpu), offset);
12600         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12601         return;
12602      }
12603      REG_PC(mc68kcpu) += 2;
12604      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12605      return;
12606   }
12607   REG_PC(mc68kcpu) += 2;
12608}
12609
12610
12611void m68000_base_device_ops::m68k_op_dbcc_16(m68000_base_device* mc68kcpu)
12612{
12613   if(COND_NOT_CC(mc68kcpu))
12614   {
12615      UINT32* r_dst = &DY(mc68kcpu);
12616      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12617
12618      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12619      if(res != 0xffff)
12620      {
12621         UINT32 offset = OPER_I_16(mc68kcpu);
12622         REG_PC(mc68kcpu) -= 2;
12623         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12624         m68ki_branch_16((mc68kcpu), offset);
12625         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12626         return;
12627      }
12628      REG_PC(mc68kcpu) += 2;
12629      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12630      return;
12631   }
12632   REG_PC(mc68kcpu) += 2;
12633}
12634
12635
12636void m68000_base_device_ops::m68k_op_dbcs_16(m68000_base_device* mc68kcpu)
12637{
12638   if(COND_NOT_CS(mc68kcpu))
12639   {
12640      UINT32* r_dst = &DY(mc68kcpu);
12641      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12642
12643      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12644      if(res != 0xffff)
12645      {
12646         UINT32 offset = OPER_I_16(mc68kcpu);
12647         REG_PC(mc68kcpu) -= 2;
12648         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12649         m68ki_branch_16((mc68kcpu), offset);
12650         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12651         return;
12652      }
12653      REG_PC(mc68kcpu) += 2;
12654      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12655      return;
12656   }
12657   REG_PC(mc68kcpu) += 2;
12658}
12659
12660
12661void m68000_base_device_ops::m68k_op_dbne_16(m68000_base_device* mc68kcpu)
12662{
12663   if(COND_NOT_NE(mc68kcpu))
12664   {
12665      UINT32* r_dst = &DY(mc68kcpu);
12666      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12667
12668      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12669      if(res != 0xffff)
12670      {
12671         UINT32 offset = OPER_I_16(mc68kcpu);
12672         REG_PC(mc68kcpu) -= 2;
12673         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12674         m68ki_branch_16((mc68kcpu), offset);
12675         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12676         return;
12677      }
12678      REG_PC(mc68kcpu) += 2;
12679      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12680      return;
12681   }
12682   REG_PC(mc68kcpu) += 2;
12683}
12684
12685
12686void m68000_base_device_ops::m68k_op_dbeq_16(m68000_base_device* mc68kcpu)
12687{
12688   if(COND_NOT_EQ(mc68kcpu))
12689   {
12690      UINT32* r_dst = &DY(mc68kcpu);
12691      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12692
12693      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12694      if(res != 0xffff)
12695      {
12696         UINT32 offset = OPER_I_16(mc68kcpu);
12697         REG_PC(mc68kcpu) -= 2;
12698         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12699         m68ki_branch_16((mc68kcpu), offset);
12700         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12701         return;
12702      }
12703      REG_PC(mc68kcpu) += 2;
12704      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12705      return;
12706   }
12707   REG_PC(mc68kcpu) += 2;
12708}
12709
12710
12711void m68000_base_device_ops::m68k_op_dbvc_16(m68000_base_device* mc68kcpu)
12712{
12713   if(COND_NOT_VC(mc68kcpu))
12714   {
12715      UINT32* r_dst = &DY(mc68kcpu);
12716      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12717
12718      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12719      if(res != 0xffff)
12720      {
12721         UINT32 offset = OPER_I_16(mc68kcpu);
12722         REG_PC(mc68kcpu) -= 2;
12723         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12724         m68ki_branch_16((mc68kcpu), offset);
12725         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12726         return;
12727      }
12728      REG_PC(mc68kcpu) += 2;
12729      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12730      return;
12731   }
12732   REG_PC(mc68kcpu) += 2;
12733}
12734
12735
12736void m68000_base_device_ops::m68k_op_dbvs_16(m68000_base_device* mc68kcpu)
12737{
12738   if(COND_NOT_VS(mc68kcpu))
12739   {
12740      UINT32* r_dst = &DY(mc68kcpu);
12741      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12742
12743      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12744      if(res != 0xffff)
12745      {
12746         UINT32 offset = OPER_I_16(mc68kcpu);
12747         REG_PC(mc68kcpu) -= 2;
12748         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12749         m68ki_branch_16((mc68kcpu), offset);
12750         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12751         return;
12752      }
12753      REG_PC(mc68kcpu) += 2;
12754      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12755      return;
12756   }
12757   REG_PC(mc68kcpu) += 2;
12758}
12759
12760
12761void m68000_base_device_ops::m68k_op_dbpl_16(m68000_base_device* mc68kcpu)
12762{
12763   if(COND_NOT_PL(mc68kcpu))
12764   {
12765      UINT32* r_dst = &DY(mc68kcpu);
12766      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12767
12768      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12769      if(res != 0xffff)
12770      {
12771         UINT32 offset = OPER_I_16(mc68kcpu);
12772         REG_PC(mc68kcpu) -= 2;
12773         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12774         m68ki_branch_16((mc68kcpu), offset);
12775         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12776         return;
12777      }
12778      REG_PC(mc68kcpu) += 2;
12779      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12780      return;
12781   }
12782   REG_PC(mc68kcpu) += 2;
12783}
12784
12785
12786void m68000_base_device_ops::m68k_op_dbmi_16(m68000_base_device* mc68kcpu)
12787{
12788   if(COND_NOT_MI(mc68kcpu))
12789   {
12790      UINT32* r_dst = &DY(mc68kcpu);
12791      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12792
12793      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12794      if(res != 0xffff)
12795      {
12796         UINT32 offset = OPER_I_16(mc68kcpu);
12797         REG_PC(mc68kcpu) -= 2;
12798         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12799         m68ki_branch_16((mc68kcpu), offset);
12800         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12801         return;
12802      }
12803      REG_PC(mc68kcpu) += 2;
12804      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12805      return;
12806   }
12807   REG_PC(mc68kcpu) += 2;
12808}
12809
12810
12811void m68000_base_device_ops::m68k_op_dbge_16(m68000_base_device* mc68kcpu)
12812{
12813   if(COND_NOT_GE(mc68kcpu))
12814   {
12815      UINT32* r_dst = &DY(mc68kcpu);
12816      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12817
12818      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12819      if(res != 0xffff)
12820      {
12821         UINT32 offset = OPER_I_16(mc68kcpu);
12822         REG_PC(mc68kcpu) -= 2;
12823         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12824         m68ki_branch_16((mc68kcpu), offset);
12825         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12826         return;
12827      }
12828      REG_PC(mc68kcpu) += 2;
12829      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12830      return;
12831   }
12832   REG_PC(mc68kcpu) += 2;
12833}
12834
12835
12836void m68000_base_device_ops::m68k_op_dblt_16(m68000_base_device* mc68kcpu)
12837{
12838   if(COND_NOT_LT(mc68kcpu))
12839   {
12840      UINT32* r_dst = &DY(mc68kcpu);
12841      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12842
12843      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12844      if(res != 0xffff)
12845      {
12846         UINT32 offset = OPER_I_16(mc68kcpu);
12847         REG_PC(mc68kcpu) -= 2;
12848         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12849         m68ki_branch_16((mc68kcpu), offset);
12850         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12851         return;
12852      }
12853      REG_PC(mc68kcpu) += 2;
12854      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12855      return;
12856   }
12857   REG_PC(mc68kcpu) += 2;
12858}
12859
12860
12861void m68000_base_device_ops::m68k_op_dbgt_16(m68000_base_device* mc68kcpu)
12862{
12863   if(COND_NOT_GT(mc68kcpu))
12864   {
12865      UINT32* r_dst = &DY(mc68kcpu);
12866      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12867
12868      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12869      if(res != 0xffff)
12870      {
12871         UINT32 offset = OPER_I_16(mc68kcpu);
12872         REG_PC(mc68kcpu) -= 2;
12873         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12874         m68ki_branch_16((mc68kcpu), offset);
12875         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12876         return;
12877      }
12878      REG_PC(mc68kcpu) += 2;
12879      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12880      return;
12881   }
12882   REG_PC(mc68kcpu) += 2;
12883}
12884
12885
12886void m68000_base_device_ops::m68k_op_dble_16(m68000_base_device* mc68kcpu)
12887{
12888   if(COND_NOT_LE(mc68kcpu))
12889   {
12890      UINT32* r_dst = &DY(mc68kcpu);
12891      UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
12892
12893      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
12894      if(res != 0xffff)
12895      {
12896         UINT32 offset = OPER_I_16(mc68kcpu);
12897         REG_PC(mc68kcpu) -= 2;
12898         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
12899         m68ki_branch_16((mc68kcpu), offset);
12900         (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
12901         return;
12902      }
12903      REG_PC(mc68kcpu) += 2;
12904      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
12905      return;
12906   }
12907   REG_PC(mc68kcpu) += 2;
12908}
12909
12910
12911void m68000_base_device_ops::m68k_op_divs_16_d(m68000_base_device* mc68kcpu)
12912{
12913   UINT32* r_dst = &DX(mc68kcpu);
12914   INT32 src = MAKE_INT_16(DY(mc68kcpu));
12915   INT32 quotient;
12916   INT32 remainder;
12917
12918   if(src != 0)
12919   {
12920      if((UINT32)*r_dst == 0x80000000 && src == -1)
12921      {
12922         (mc68kcpu)->not_z_flag = 0;
12923         (mc68kcpu)->n_flag = NFLAG_CLEAR;
12924         (mc68kcpu)->v_flag = VFLAG_CLEAR;
12925         (mc68kcpu)->c_flag = CFLAG_CLEAR;
12926         *r_dst = 0;
12927         return;
12928      }
12929
12930      quotient = MAKE_INT_32(*r_dst) / src;
12931      remainder = MAKE_INT_32(*r_dst) % src;
12932
12933      if(quotient == MAKE_INT_16(quotient))
12934      {
12935         (mc68kcpu)->not_z_flag = quotient;
12936         (mc68kcpu)->n_flag = NFLAG_16(quotient);
12937         (mc68kcpu)->v_flag = VFLAG_CLEAR;
12938         (mc68kcpu)->c_flag = CFLAG_CLEAR;
12939         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
12940         return;
12941      }
12942      (mc68kcpu)->v_flag = VFLAG_SET;
12943      return;
12944   }
12945   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
12946}
12947
12948
12949void m68000_base_device_ops::m68k_op_divs_16_ai(m68000_base_device* mc68kcpu)
12950{
12951   UINT32* r_dst = &DX(mc68kcpu);
12952   INT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
12953   INT32 quotient;
12954   INT32 remainder;
12955
12956   if(src != 0)
12957   {
12958      if((UINT32)*r_dst == 0x80000000 && src == -1)
12959      {
12960         (mc68kcpu)->not_z_flag = 0;
12961         (mc68kcpu)->n_flag = NFLAG_CLEAR;
12962         (mc68kcpu)->v_flag = VFLAG_CLEAR;
12963         (mc68kcpu)->c_flag = CFLAG_CLEAR;
12964         *r_dst = 0;
12965         return;
12966      }
12967
12968      quotient = MAKE_INT_32(*r_dst) / src;
12969      remainder = MAKE_INT_32(*r_dst) % src;
12970
12971      if(quotient == MAKE_INT_16(quotient))
12972      {
12973         (mc68kcpu)->not_z_flag = quotient;
12974         (mc68kcpu)->n_flag = NFLAG_16(quotient);
12975         (mc68kcpu)->v_flag = VFLAG_CLEAR;
12976         (mc68kcpu)->c_flag = CFLAG_CLEAR;
12977         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
12978         return;
12979      }
12980      (mc68kcpu)->v_flag = VFLAG_SET;
12981      return;
12982   }
12983   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
12984}
12985
12986
12987void m68000_base_device_ops::m68k_op_divs_16_pi(m68000_base_device* mc68kcpu)
12988{
12989   UINT32* r_dst = &DX(mc68kcpu);
12990   INT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
12991   INT32 quotient;
12992   INT32 remainder;
12993
12994   if(src != 0)
12995   {
12996      if((UINT32)*r_dst == 0x80000000 && src == -1)
12997      {
12998         (mc68kcpu)->not_z_flag = 0;
12999         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13000         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13001         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13002         *r_dst = 0;
13003         return;
13004      }
13005
13006      quotient = MAKE_INT_32(*r_dst) / src;
13007      remainder = MAKE_INT_32(*r_dst) % src;
13008
13009      if(quotient == MAKE_INT_16(quotient))
13010      {
13011         (mc68kcpu)->not_z_flag = quotient;
13012         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13013         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13014         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13015         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13016         return;
13017      }
13018      (mc68kcpu)->v_flag = VFLAG_SET;
13019      return;
13020   }
13021   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13022}
13023
13024
13025void m68000_base_device_ops::m68k_op_divs_16_pd(m68000_base_device* mc68kcpu)
13026{
13027   UINT32* r_dst = &DX(mc68kcpu);
13028   INT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
13029   INT32 quotient;
13030   INT32 remainder;
13031
13032   if(src != 0)
13033   {
13034      if((UINT32)*r_dst == 0x80000000 && src == -1)
13035      {
13036         (mc68kcpu)->not_z_flag = 0;
13037         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13038         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13039         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13040         *r_dst = 0;
13041         return;
13042      }
13043
13044      quotient = MAKE_INT_32(*r_dst) / src;
13045      remainder = MAKE_INT_32(*r_dst) % src;
13046
13047      if(quotient == MAKE_INT_16(quotient))
13048      {
13049         (mc68kcpu)->not_z_flag = quotient;
13050         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13051         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13052         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13053         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13054         return;
13055      }
13056      (mc68kcpu)->v_flag = VFLAG_SET;
13057      return;
13058   }
13059   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13060}
13061
13062
13063void m68000_base_device_ops::m68k_op_divs_16_di(m68000_base_device* mc68kcpu)
13064{
13065   UINT32* r_dst = &DX(mc68kcpu);
13066   INT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
13067   INT32 quotient;
13068   INT32 remainder;
13069
13070   if(src != 0)
13071   {
13072      if((UINT32)*r_dst == 0x80000000 && src == -1)
13073      {
13074         (mc68kcpu)->not_z_flag = 0;
13075         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13076         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13077         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13078         *r_dst = 0;
13079         return;
13080      }
13081
13082      quotient = MAKE_INT_32(*r_dst) / src;
13083      remainder = MAKE_INT_32(*r_dst) % src;
13084
13085      if(quotient == MAKE_INT_16(quotient))
13086      {
13087         (mc68kcpu)->not_z_flag = quotient;
13088         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13089         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13090         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13091         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13092         return;
13093      }
13094      (mc68kcpu)->v_flag = VFLAG_SET;
13095      return;
13096   }
13097   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13098}
13099
13100
13101void m68000_base_device_ops::m68k_op_divs_16_ix(m68000_base_device* mc68kcpu)
13102{
13103   UINT32* r_dst = &DX(mc68kcpu);
13104   INT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
13105   INT32 quotient;
13106   INT32 remainder;
13107
13108   if(src != 0)
13109   {
13110      if((UINT32)*r_dst == 0x80000000 && src == -1)
13111      {
13112         (mc68kcpu)->not_z_flag = 0;
13113         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13114         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13115         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13116         *r_dst = 0;
13117         return;
13118      }
13119
13120      quotient = MAKE_INT_32(*r_dst) / src;
13121      remainder = MAKE_INT_32(*r_dst) % src;
13122
13123      if(quotient == MAKE_INT_16(quotient))
13124      {
13125         (mc68kcpu)->not_z_flag = quotient;
13126         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13127         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13128         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13129         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13130         return;
13131      }
13132      (mc68kcpu)->v_flag = VFLAG_SET;
13133      return;
13134   }
13135   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13136}
13137
13138
13139void m68000_base_device_ops::m68k_op_divs_16_aw(m68000_base_device* mc68kcpu)
13140{
13141   UINT32* r_dst = &DX(mc68kcpu);
13142   INT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
13143   INT32 quotient;
13144   INT32 remainder;
13145
13146   if(src != 0)
13147   {
13148      if((UINT32)*r_dst == 0x80000000 && src == -1)
13149      {
13150         (mc68kcpu)->not_z_flag = 0;
13151         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13152         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13153         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13154         *r_dst = 0;
13155         return;
13156      }
13157
13158      quotient = MAKE_INT_32(*r_dst) / src;
13159      remainder = MAKE_INT_32(*r_dst) % src;
13160
13161      if(quotient == MAKE_INT_16(quotient))
13162      {
13163         (mc68kcpu)->not_z_flag = quotient;
13164         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13165         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13166         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13167         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13168         return;
13169      }
13170      (mc68kcpu)->v_flag = VFLAG_SET;
13171      return;
13172   }
13173   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13174}
13175
13176
13177void m68000_base_device_ops::m68k_op_divs_16_al(m68000_base_device* mc68kcpu)
13178{
13179   UINT32* r_dst = &DX(mc68kcpu);
13180   INT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
13181   INT32 quotient;
13182   INT32 remainder;
13183
13184   if(src != 0)
13185   {
13186      if((UINT32)*r_dst == 0x80000000 && src == -1)
13187      {
13188         (mc68kcpu)->not_z_flag = 0;
13189         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13190         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13191         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13192         *r_dst = 0;
13193         return;
13194      }
13195
13196      quotient = MAKE_INT_32(*r_dst) / src;
13197      remainder = MAKE_INT_32(*r_dst) % src;
13198
13199      if(quotient == MAKE_INT_16(quotient))
13200      {
13201         (mc68kcpu)->not_z_flag = quotient;
13202         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13203         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13204         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13205         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13206         return;
13207      }
13208      (mc68kcpu)->v_flag = VFLAG_SET;
13209      return;
13210   }
13211   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13212}
13213
13214
13215void m68000_base_device_ops::m68k_op_divs_16_pcdi(m68000_base_device* mc68kcpu)
13216{
13217   UINT32* r_dst = &DX(mc68kcpu);
13218   INT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
13219   INT32 quotient;
13220   INT32 remainder;
13221
13222   if(src != 0)
13223   {
13224      if((UINT32)*r_dst == 0x80000000 && src == -1)
13225      {
13226         (mc68kcpu)->not_z_flag = 0;
13227         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13228         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13229         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13230         *r_dst = 0;
13231         return;
13232      }
13233
13234      quotient = MAKE_INT_32(*r_dst) / src;
13235      remainder = MAKE_INT_32(*r_dst) % src;
13236
13237      if(quotient == MAKE_INT_16(quotient))
13238      {
13239         (mc68kcpu)->not_z_flag = quotient;
13240         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13241         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13242         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13243         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13244         return;
13245      }
13246      (mc68kcpu)->v_flag = VFLAG_SET;
13247      return;
13248   }
13249   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13250}
13251
13252
13253void m68000_base_device_ops::m68k_op_divs_16_pcix(m68000_base_device* mc68kcpu)
13254{
13255   UINT32* r_dst = &DX(mc68kcpu);
13256   INT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
13257   INT32 quotient;
13258   INT32 remainder;
13259
13260   if(src != 0)
13261   {
13262      if((UINT32)*r_dst == 0x80000000 && src == -1)
13263      {
13264         (mc68kcpu)->not_z_flag = 0;
13265         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13266         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13267         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13268         *r_dst = 0;
13269         return;
13270      }
13271
13272      quotient = MAKE_INT_32(*r_dst) / src;
13273      remainder = MAKE_INT_32(*r_dst) % src;
13274
13275      if(quotient == MAKE_INT_16(quotient))
13276      {
13277         (mc68kcpu)->not_z_flag = quotient;
13278         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13279         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13280         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13281         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13282         return;
13283      }
13284      (mc68kcpu)->v_flag = VFLAG_SET;
13285      return;
13286   }
13287   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13288}
13289
13290
13291void m68000_base_device_ops::m68k_op_divs_16_i(m68000_base_device* mc68kcpu)
13292{
13293   UINT32* r_dst = &DX(mc68kcpu);
13294   INT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
13295   INT32 quotient;
13296   INT32 remainder;
13297
13298   if(src != 0)
13299   {
13300      if((UINT32)*r_dst == 0x80000000 && src == -1)
13301      {
13302         (mc68kcpu)->not_z_flag = 0;
13303         (mc68kcpu)->n_flag = NFLAG_CLEAR;
13304         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13305         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13306         *r_dst = 0;
13307         return;
13308      }
13309
13310      quotient = MAKE_INT_32(*r_dst) / src;
13311      remainder = MAKE_INT_32(*r_dst) % src;
13312
13313      if(quotient == MAKE_INT_16(quotient))
13314      {
13315         (mc68kcpu)->not_z_flag = quotient;
13316         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13317         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13318         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13319         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13320         return;
13321      }
13322      (mc68kcpu)->v_flag = VFLAG_SET;
13323      return;
13324   }
13325   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13326}
13327
13328
13329void m68000_base_device_ops::m68k_op_divu_16_d(m68000_base_device* mc68kcpu)
13330{
13331   UINT32* r_dst = &DX(mc68kcpu);
13332   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
13333
13334   if(src != 0)
13335   {
13336      UINT32 quotient = *r_dst / src;
13337      UINT32 remainder = *r_dst % src;
13338
13339      if(quotient < 0x10000)
13340      {
13341         (mc68kcpu)->not_z_flag = quotient;
13342         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13343         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13344         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13345         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13346         return;
13347      }
13348      (mc68kcpu)->v_flag = VFLAG_SET;
13349      return;
13350   }
13351   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13352}
13353
13354
13355void m68000_base_device_ops::m68k_op_divu_16_ai(m68000_base_device* mc68kcpu)
13356{
13357   UINT32* r_dst = &DX(mc68kcpu);
13358   UINT32 src = OPER_AY_AI_16(mc68kcpu);
13359
13360   if(src != 0)
13361   {
13362      UINT32 quotient = *r_dst / src;
13363      UINT32 remainder = *r_dst % src;
13364
13365      if(quotient < 0x10000)
13366      {
13367         (mc68kcpu)->not_z_flag = quotient;
13368         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13369         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13370         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13371         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13372         return;
13373      }
13374      (mc68kcpu)->v_flag = VFLAG_SET;
13375      return;
13376   }
13377   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13378}
13379
13380
13381void m68000_base_device_ops::m68k_op_divu_16_pi(m68000_base_device* mc68kcpu)
13382{
13383   UINT32* r_dst = &DX(mc68kcpu);
13384   UINT32 src = OPER_AY_PI_16(mc68kcpu);
13385
13386   if(src != 0)
13387   {
13388      UINT32 quotient = *r_dst / src;
13389      UINT32 remainder = *r_dst % src;
13390
13391      if(quotient < 0x10000)
13392      {
13393         (mc68kcpu)->not_z_flag = quotient;
13394         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13395         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13396         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13397         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13398         return;
13399      }
13400      (mc68kcpu)->v_flag = VFLAG_SET;
13401      return;
13402   }
13403   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13404}
13405
13406
13407void m68000_base_device_ops::m68k_op_divu_16_pd(m68000_base_device* mc68kcpu)
13408{
13409   UINT32* r_dst = &DX(mc68kcpu);
13410   UINT32 src = OPER_AY_PD_16(mc68kcpu);
13411
13412   if(src != 0)
13413   {
13414      UINT32 quotient = *r_dst / src;
13415      UINT32 remainder = *r_dst % src;
13416
13417      if(quotient < 0x10000)
13418      {
13419         (mc68kcpu)->not_z_flag = quotient;
13420         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13421         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13422         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13423         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13424         return;
13425      }
13426      (mc68kcpu)->v_flag = VFLAG_SET;
13427      return;
13428   }
13429   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13430}
13431
13432
13433void m68000_base_device_ops::m68k_op_divu_16_di(m68000_base_device* mc68kcpu)
13434{
13435   UINT32* r_dst = &DX(mc68kcpu);
13436   UINT32 src = OPER_AY_DI_16(mc68kcpu);
13437
13438   if(src != 0)
13439   {
13440      UINT32 quotient = *r_dst / src;
13441      UINT32 remainder = *r_dst % src;
13442
13443      if(quotient < 0x10000)
13444      {
13445         (mc68kcpu)->not_z_flag = quotient;
13446         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13447         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13448         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13449         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13450         return;
13451      }
13452      (mc68kcpu)->v_flag = VFLAG_SET;
13453      return;
13454   }
13455   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13456}
13457
13458
13459void m68000_base_device_ops::m68k_op_divu_16_ix(m68000_base_device* mc68kcpu)
13460{
13461   UINT32* r_dst = &DX(mc68kcpu);
13462   UINT32 src = OPER_AY_IX_16(mc68kcpu);
13463
13464   if(src != 0)
13465   {
13466      UINT32 quotient = *r_dst / src;
13467      UINT32 remainder = *r_dst % src;
13468
13469      if(quotient < 0x10000)
13470      {
13471         (mc68kcpu)->not_z_flag = quotient;
13472         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13473         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13474         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13475         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13476         return;
13477      }
13478      (mc68kcpu)->v_flag = VFLAG_SET;
13479      return;
13480   }
13481   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13482}
13483
13484
13485void m68000_base_device_ops::m68k_op_divu_16_aw(m68000_base_device* mc68kcpu)
13486{
13487   UINT32* r_dst = &DX(mc68kcpu);
13488   UINT32 src = OPER_AW_16(mc68kcpu);
13489
13490   if(src != 0)
13491   {
13492      UINT32 quotient = *r_dst / src;
13493      UINT32 remainder = *r_dst % src;
13494
13495      if(quotient < 0x10000)
13496      {
13497         (mc68kcpu)->not_z_flag = quotient;
13498         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13499         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13500         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13501         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13502         return;
13503      }
13504      (mc68kcpu)->v_flag = VFLAG_SET;
13505      return;
13506   }
13507   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13508}
13509
13510
13511void m68000_base_device_ops::m68k_op_divu_16_al(m68000_base_device* mc68kcpu)
13512{
13513   UINT32* r_dst = &DX(mc68kcpu);
13514   UINT32 src = OPER_AL_16(mc68kcpu);
13515
13516   if(src != 0)
13517   {
13518      UINT32 quotient = *r_dst / src;
13519      UINT32 remainder = *r_dst % src;
13520
13521      if(quotient < 0x10000)
13522      {
13523         (mc68kcpu)->not_z_flag = quotient;
13524         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13525         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13526         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13527         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13528         return;
13529      }
13530      (mc68kcpu)->v_flag = VFLAG_SET;
13531      return;
13532   }
13533   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13534}
13535
13536
13537void m68000_base_device_ops::m68k_op_divu_16_pcdi(m68000_base_device* mc68kcpu)
13538{
13539   UINT32* r_dst = &DX(mc68kcpu);
13540   UINT32 src = OPER_PCDI_16(mc68kcpu);
13541
13542   if(src != 0)
13543   {
13544      UINT32 quotient = *r_dst / src;
13545      UINT32 remainder = *r_dst % src;
13546
13547      if(quotient < 0x10000)
13548      {
13549         (mc68kcpu)->not_z_flag = quotient;
13550         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13551         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13552         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13553         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13554         return;
13555      }
13556      (mc68kcpu)->v_flag = VFLAG_SET;
13557      return;
13558   }
13559   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13560}
13561
13562
13563void m68000_base_device_ops::m68k_op_divu_16_pcix(m68000_base_device* mc68kcpu)
13564{
13565   UINT32* r_dst = &DX(mc68kcpu);
13566   UINT32 src = OPER_PCIX_16(mc68kcpu);
13567
13568   if(src != 0)
13569   {
13570      UINT32 quotient = *r_dst / src;
13571      UINT32 remainder = *r_dst % src;
13572
13573      if(quotient < 0x10000)
13574      {
13575         (mc68kcpu)->not_z_flag = quotient;
13576         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13577         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13578         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13579         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13580         return;
13581      }
13582      (mc68kcpu)->v_flag = VFLAG_SET;
13583      return;
13584   }
13585   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13586}
13587
13588
13589void m68000_base_device_ops::m68k_op_divu_16_i(m68000_base_device* mc68kcpu)
13590{
13591   UINT32* r_dst = &DX(mc68kcpu);
13592   UINT32 src = OPER_I_16(mc68kcpu);
13593
13594   if(src != 0)
13595   {
13596      UINT32 quotient = *r_dst / src;
13597      UINT32 remainder = *r_dst % src;
13598
13599      if(quotient < 0x10000)
13600      {
13601         (mc68kcpu)->not_z_flag = quotient;
13602         (mc68kcpu)->n_flag = NFLAG_16(quotient);
13603         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13604         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13605         *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
13606         return;
13607      }
13608      (mc68kcpu)->v_flag = VFLAG_SET;
13609      return;
13610   }
13611   m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13612}
13613
13614
13615void m68000_base_device_ops::m68k_op_divl_32_d(m68000_base_device* mc68kcpu)
13616{
13617   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13618   {
13619      UINT32 word2 = OPER_I_16(mc68kcpu);
13620      UINT64 divisor   = DY(mc68kcpu);
13621      UINT64 dividend  = 0;
13622      UINT64 quotient  = 0;
13623      UINT64 remainder = 0;
13624
13625      if(divisor != 0)
13626      {
13627         if(BIT_A(word2))    /* 64 bit */
13628         {
13629            dividend = REG_D(mc68kcpu)[word2 & 7];
13630            dividend <<= 32;
13631            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13632
13633            if(BIT_B(word2))       /* signed */
13634            {
13635               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13636               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13637               if((INT64)quotient != (INT64)((INT32)quotient))
13638               {
13639                  (mc68kcpu)->v_flag = VFLAG_SET;
13640                  return;
13641               }
13642            }
13643            else                    /* unsigned */
13644            {
13645               quotient = dividend / divisor;
13646               if(quotient > 0xffffffff)
13647               {
13648                  (mc68kcpu)->v_flag = VFLAG_SET;
13649                  return;
13650               }
13651               remainder = dividend % divisor;
13652            }
13653         }
13654         else    /* 32 bit */
13655         {
13656            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
13657            if(BIT_B(word2))       /* signed */
13658            {
13659               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
13660               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
13661            }
13662            else                    /* unsigned */
13663            {
13664               quotient = dividend / divisor;
13665               remainder = dividend % divisor;
13666            }
13667         }
13668
13669         REG_D(mc68kcpu)[word2 & 7] = remainder;
13670         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
13671
13672         (mc68kcpu)->n_flag = NFLAG_32(quotient);
13673         (mc68kcpu)->not_z_flag = quotient;
13674         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13675         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13676         return;
13677      }
13678      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13679      return;
13680   }
13681   m68ki_exception_illegal(mc68kcpu);
13682}
13683
13684
13685void m68000_base_device_ops::m68k_op_divl_32_ai(m68000_base_device* mc68kcpu)
13686{
13687   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13688   {
13689      UINT32 word2 = OPER_I_16(mc68kcpu);
13690      UINT64 divisor = OPER_AY_AI_32(mc68kcpu);
13691      UINT64 dividend  = 0;
13692      UINT64 quotient  = 0;
13693      UINT64 remainder = 0;
13694
13695      if(divisor != 0)
13696      {
13697         if(BIT_A(word2))    /* 64 bit */
13698         {
13699            dividend = REG_D(mc68kcpu)[word2 & 7];
13700            dividend <<= 32;
13701            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13702
13703            if(BIT_B(word2))       /* signed */
13704            {
13705               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13706               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13707               if((INT64)quotient != (INT64)((INT32)quotient))
13708               {
13709                  (mc68kcpu)->v_flag = VFLAG_SET;
13710                  return;
13711               }
13712            }
13713            else                    /* unsigned */
13714            {
13715               quotient = dividend / divisor;
13716               if(quotient > 0xffffffff)
13717               {
13718                  (mc68kcpu)->v_flag = VFLAG_SET;
13719                  return;
13720               }
13721               remainder = dividend % divisor;
13722            }
13723         }
13724         else    /* 32 bit */
13725         {
13726            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
13727            if(BIT_B(word2))       /* signed */
13728            {
13729               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
13730               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
13731            }
13732            else                    /* unsigned */
13733            {
13734               quotient = dividend / divisor;
13735               remainder = dividend % divisor;
13736            }
13737         }
13738
13739         REG_D(mc68kcpu)[word2 & 7] = remainder;
13740         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
13741
13742         (mc68kcpu)->n_flag = NFLAG_32(quotient);
13743         (mc68kcpu)->not_z_flag = quotient;
13744         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13745         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13746         return;
13747      }
13748      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13749      return;
13750   }
13751   m68ki_exception_illegal(mc68kcpu);
13752}
13753
13754
13755void m68000_base_device_ops::m68k_op_divl_32_pi(m68000_base_device* mc68kcpu)
13756{
13757   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13758   {
13759      UINT32 word2 = OPER_I_16(mc68kcpu);
13760      UINT64 divisor = OPER_AY_PI_32(mc68kcpu);
13761      UINT64 dividend  = 0;
13762      UINT64 quotient  = 0;
13763      UINT64 remainder = 0;
13764
13765      if(divisor != 0)
13766      {
13767         if(BIT_A(word2))    /* 64 bit */
13768         {
13769            dividend = REG_D(mc68kcpu)[word2 & 7];
13770            dividend <<= 32;
13771            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13772
13773            if(BIT_B(word2))       /* signed */
13774            {
13775               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13776               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13777               if((INT64)quotient != (INT64)((INT32)quotient))
13778               {
13779                  (mc68kcpu)->v_flag = VFLAG_SET;
13780                  return;
13781               }
13782            }
13783            else                    /* unsigned */
13784            {
13785               quotient = dividend / divisor;
13786               if(quotient > 0xffffffff)
13787               {
13788                  (mc68kcpu)->v_flag = VFLAG_SET;
13789                  return;
13790               }
13791               remainder = dividend % divisor;
13792            }
13793         }
13794         else    /* 32 bit */
13795         {
13796            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
13797            if(BIT_B(word2))       /* signed */
13798            {
13799               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
13800               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
13801            }
13802            else                    /* unsigned */
13803            {
13804               quotient = dividend / divisor;
13805               remainder = dividend % divisor;
13806            }
13807         }
13808
13809         REG_D(mc68kcpu)[word2 & 7] = remainder;
13810         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
13811
13812         (mc68kcpu)->n_flag = NFLAG_32(quotient);
13813         (mc68kcpu)->not_z_flag = quotient;
13814         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13815         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13816         return;
13817      }
13818      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13819      return;
13820   }
13821   m68ki_exception_illegal(mc68kcpu);
13822}
13823
13824
13825void m68000_base_device_ops::m68k_op_divl_32_pd(m68000_base_device* mc68kcpu)
13826{
13827   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13828   {
13829      UINT32 word2 = OPER_I_16(mc68kcpu);
13830      UINT64 divisor = OPER_AY_PD_32(mc68kcpu);
13831      UINT64 dividend  = 0;
13832      UINT64 quotient  = 0;
13833      UINT64 remainder = 0;
13834
13835      if(divisor != 0)
13836      {
13837         if(BIT_A(word2))    /* 64 bit */
13838         {
13839            dividend = REG_D(mc68kcpu)[word2 & 7];
13840            dividend <<= 32;
13841            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13842
13843            if(BIT_B(word2))       /* signed */
13844            {
13845               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13846               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13847               if((INT64)quotient != (INT64)((INT32)quotient))
13848               {
13849                  (mc68kcpu)->v_flag = VFLAG_SET;
13850                  return;
13851               }
13852            }
13853            else                    /* unsigned */
13854            {
13855               quotient = dividend / divisor;
13856               if(quotient > 0xffffffff)
13857               {
13858                  (mc68kcpu)->v_flag = VFLAG_SET;
13859                  return;
13860               }
13861               remainder = dividend % divisor;
13862            }
13863         }
13864         else    /* 32 bit */
13865         {
13866            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
13867            if(BIT_B(word2))       /* signed */
13868            {
13869               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
13870               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
13871            }
13872            else                    /* unsigned */
13873            {
13874               quotient = dividend / divisor;
13875               remainder = dividend % divisor;
13876            }
13877         }
13878
13879         REG_D(mc68kcpu)[word2 & 7] = remainder;
13880         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
13881
13882         (mc68kcpu)->n_flag = NFLAG_32(quotient);
13883         (mc68kcpu)->not_z_flag = quotient;
13884         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13885         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13886         return;
13887      }
13888      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13889      return;
13890   }
13891   m68ki_exception_illegal(mc68kcpu);
13892}
13893
13894
13895void m68000_base_device_ops::m68k_op_divl_32_di(m68000_base_device* mc68kcpu)
13896{
13897   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13898   {
13899      UINT32 word2 = OPER_I_16(mc68kcpu);
13900      UINT64 divisor = OPER_AY_DI_32(mc68kcpu);
13901      UINT64 dividend  = 0;
13902      UINT64 quotient  = 0;
13903      UINT64 remainder = 0;
13904
13905      if(divisor != 0)
13906      {
13907         if(BIT_A(word2))    /* 64 bit */
13908         {
13909            dividend = REG_D(mc68kcpu)[word2 & 7];
13910            dividend <<= 32;
13911            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13912
13913            if(BIT_B(word2))       /* signed */
13914            {
13915               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13916               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13917               if((INT64)quotient != (INT64)((INT32)quotient))
13918               {
13919                  (mc68kcpu)->v_flag = VFLAG_SET;
13920                  return;
13921               }
13922            }
13923            else                    /* unsigned */
13924            {
13925               quotient = dividend / divisor;
13926               if(quotient > 0xffffffff)
13927               {
13928                  (mc68kcpu)->v_flag = VFLAG_SET;
13929                  return;
13930               }
13931               remainder = dividend % divisor;
13932            }
13933         }
13934         else    /* 32 bit */
13935         {
13936            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
13937            if(BIT_B(word2))       /* signed */
13938            {
13939               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
13940               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
13941            }
13942            else                    /* unsigned */
13943            {
13944               quotient = dividend / divisor;
13945               remainder = dividend % divisor;
13946            }
13947         }
13948
13949         REG_D(mc68kcpu)[word2 & 7] = remainder;
13950         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
13951
13952         (mc68kcpu)->n_flag = NFLAG_32(quotient);
13953         (mc68kcpu)->not_z_flag = quotient;
13954         (mc68kcpu)->v_flag = VFLAG_CLEAR;
13955         (mc68kcpu)->c_flag = CFLAG_CLEAR;
13956         return;
13957      }
13958      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
13959      return;
13960   }
13961   m68ki_exception_illegal(mc68kcpu);
13962}
13963
13964
13965void m68000_base_device_ops::m68k_op_divl_32_ix(m68000_base_device* mc68kcpu)
13966{
13967   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
13968   {
13969      UINT32 word2 = OPER_I_16(mc68kcpu);
13970      UINT64 divisor = OPER_AY_IX_32(mc68kcpu);
13971      UINT64 dividend  = 0;
13972      UINT64 quotient  = 0;
13973      UINT64 remainder = 0;
13974
13975      if(divisor != 0)
13976      {
13977         if(BIT_A(word2))    /* 64 bit */
13978         {
13979            dividend = REG_D(mc68kcpu)[word2 & 7];
13980            dividend <<= 32;
13981            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
13982
13983            if(BIT_B(word2))       /* signed */
13984            {
13985               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
13986               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
13987               if((INT64)quotient != (INT64)((INT32)quotient))
13988               {
13989                  (mc68kcpu)->v_flag = VFLAG_SET;
13990                  return;
13991               }
13992            }
13993            else                    /* unsigned */
13994            {
13995               quotient = dividend / divisor;
13996               if(quotient > 0xffffffff)
13997               {
13998                  (mc68kcpu)->v_flag = VFLAG_SET;
13999                  return;
14000               }
14001               remainder = dividend % divisor;
14002            }
14003         }
14004         else    /* 32 bit */
14005         {
14006            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14007            if(BIT_B(word2))       /* signed */
14008            {
14009               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14010               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14011            }
14012            else                    /* unsigned */
14013            {
14014               quotient = dividend / divisor;
14015               remainder = dividend % divisor;
14016            }
14017         }
14018
14019         REG_D(mc68kcpu)[word2 & 7] = remainder;
14020         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14021
14022         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14023         (mc68kcpu)->not_z_flag = quotient;
14024         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14025         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14026         return;
14027      }
14028      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14029      return;
14030   }
14031   m68ki_exception_illegal(mc68kcpu);
14032}
14033
14034
14035void m68000_base_device_ops::m68k_op_divl_32_aw(m68000_base_device* mc68kcpu)
14036{
14037   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
14038   {
14039      UINT32 word2 = OPER_I_16(mc68kcpu);
14040      UINT64 divisor = OPER_AW_32(mc68kcpu);
14041      UINT64 dividend  = 0;
14042      UINT64 quotient  = 0;
14043      UINT64 remainder = 0;
14044
14045      if(divisor != 0)
14046      {
14047         if(BIT_A(word2))    /* 64 bit */
14048         {
14049            dividend = REG_D(mc68kcpu)[word2 & 7];
14050            dividend <<= 32;
14051            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
14052
14053            if(BIT_B(word2))       /* signed */
14054            {
14055               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
14056               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
14057               if((INT64)quotient != (INT64)((INT32)quotient))
14058               {
14059                  (mc68kcpu)->v_flag = VFLAG_SET;
14060                  return;
14061               }
14062            }
14063            else                    /* unsigned */
14064            {
14065               quotient = dividend / divisor;
14066               if(quotient > 0xffffffff)
14067               {
14068                  (mc68kcpu)->v_flag = VFLAG_SET;
14069                  return;
14070               }
14071               remainder = dividend % divisor;
14072            }
14073         }
14074         else    /* 32 bit */
14075         {
14076            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14077            if(BIT_B(word2))       /* signed */
14078            {
14079               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14080               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14081            }
14082            else                    /* unsigned */
14083            {
14084               quotient = dividend / divisor;
14085               remainder = dividend % divisor;
14086            }
14087         }
14088
14089         REG_D(mc68kcpu)[word2 & 7] = remainder;
14090         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14091
14092         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14093         (mc68kcpu)->not_z_flag = quotient;
14094         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14095         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14096         return;
14097      }
14098      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14099      return;
14100   }
14101   m68ki_exception_illegal(mc68kcpu);
14102}
14103
14104
14105void m68000_base_device_ops::m68k_op_divl_32_al(m68000_base_device* mc68kcpu)
14106{
14107   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
14108   {
14109      UINT32 word2 = OPER_I_16(mc68kcpu);
14110      UINT64 divisor = OPER_AL_32(mc68kcpu);
14111      UINT64 dividend  = 0;
14112      UINT64 quotient  = 0;
14113      UINT64 remainder = 0;
14114
14115      if(divisor != 0)
14116      {
14117         if(BIT_A(word2))    /* 64 bit */
14118         {
14119            dividend = REG_D(mc68kcpu)[word2 & 7];
14120            dividend <<= 32;
14121            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
14122
14123            if(BIT_B(word2))       /* signed */
14124            {
14125               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
14126               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
14127               if((INT64)quotient != (INT64)((INT32)quotient))
14128               {
14129                  (mc68kcpu)->v_flag = VFLAG_SET;
14130                  return;
14131               }
14132            }
14133            else                    /* unsigned */
14134            {
14135               quotient = dividend / divisor;
14136               if(quotient > 0xffffffff)
14137               {
14138                  (mc68kcpu)->v_flag = VFLAG_SET;
14139                  return;
14140               }
14141               remainder = dividend % divisor;
14142            }
14143         }
14144         else    /* 32 bit */
14145         {
14146            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14147            if(BIT_B(word2))       /* signed */
14148            {
14149               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14150               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14151            }
14152            else                    /* unsigned */
14153            {
14154               quotient = dividend / divisor;
14155               remainder = dividend % divisor;
14156            }
14157         }
14158
14159         REG_D(mc68kcpu)[word2 & 7] = remainder;
14160         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14161
14162         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14163         (mc68kcpu)->not_z_flag = quotient;
14164         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14165         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14166         return;
14167      }
14168      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14169      return;
14170   }
14171   m68ki_exception_illegal(mc68kcpu);
14172}
14173
14174
14175void m68000_base_device_ops::m68k_op_divl_32_pcdi(m68000_base_device* mc68kcpu)
14176{
14177   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
14178   {
14179      UINT32 word2 = OPER_I_16(mc68kcpu);
14180      UINT64 divisor = OPER_PCDI_32(mc68kcpu);
14181      UINT64 dividend  = 0;
14182      UINT64 quotient  = 0;
14183      UINT64 remainder = 0;
14184
14185      if(divisor != 0)
14186      {
14187         if(BIT_A(word2))    /* 64 bit */
14188         {
14189            dividend = REG_D(mc68kcpu)[word2 & 7];
14190            dividend <<= 32;
14191            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
14192
14193            if(BIT_B(word2))       /* signed */
14194            {
14195               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
14196               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
14197               if((INT64)quotient != (INT64)((INT32)quotient))
14198               {
14199                  (mc68kcpu)->v_flag = VFLAG_SET;
14200                  return;
14201               }
14202            }
14203            else                    /* unsigned */
14204            {
14205               quotient = dividend / divisor;
14206               if(quotient > 0xffffffff)
14207               {
14208                  (mc68kcpu)->v_flag = VFLAG_SET;
14209                  return;
14210               }
14211               remainder = dividend % divisor;
14212            }
14213         }
14214         else    /* 32 bit */
14215         {
14216            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14217            if(BIT_B(word2))       /* signed */
14218            {
14219               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14220               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14221            }
14222            else                    /* unsigned */
14223            {
14224               quotient = dividend / divisor;
14225               remainder = dividend % divisor;
14226            }
14227         }
14228
14229         REG_D(mc68kcpu)[word2 & 7] = remainder;
14230         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14231
14232         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14233         (mc68kcpu)->not_z_flag = quotient;
14234         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14235         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14236         return;
14237      }
14238      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14239      return;
14240   }
14241   m68ki_exception_illegal(mc68kcpu);
14242}
14243
14244
14245void m68000_base_device_ops::m68k_op_divl_32_pcix(m68000_base_device* mc68kcpu)
14246{
14247   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
14248   {
14249      UINT32 word2 = OPER_I_16(mc68kcpu);
14250      UINT64 divisor = OPER_PCIX_32(mc68kcpu);
14251      UINT64 dividend  = 0;
14252      UINT64 quotient  = 0;
14253      UINT64 remainder = 0;
14254
14255      if(divisor != 0)
14256      {
14257         if(BIT_A(word2))    /* 64 bit */
14258         {
14259            dividend = REG_D(mc68kcpu)[word2 & 7];
14260            dividend <<= 32;
14261            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
14262
14263            if(BIT_B(word2))       /* signed */
14264            {
14265               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
14266               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
14267               if((INT64)quotient != (INT64)((INT32)quotient))
14268               {
14269                  (mc68kcpu)->v_flag = VFLAG_SET;
14270                  return;
14271               }
14272            }
14273            else                    /* unsigned */
14274            {
14275               quotient = dividend / divisor;
14276               if(quotient > 0xffffffff)
14277               {
14278                  (mc68kcpu)->v_flag = VFLAG_SET;
14279                  return;
14280               }
14281               remainder = dividend % divisor;
14282            }
14283         }
14284         else    /* 32 bit */
14285         {
14286            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14287            if(BIT_B(word2))       /* signed */
14288            {
14289               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14290               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14291            }
14292            else                    /* unsigned */
14293            {
14294               quotient = dividend / divisor;
14295               remainder = dividend % divisor;
14296            }
14297         }
14298
14299         REG_D(mc68kcpu)[word2 & 7] = remainder;
14300         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14301
14302         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14303         (mc68kcpu)->not_z_flag = quotient;
14304         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14305         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14306         return;
14307      }
14308      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14309      return;
14310   }
14311   m68ki_exception_illegal(mc68kcpu);
14312}
14313
14314
14315void m68000_base_device_ops::m68k_op_divl_32_i(m68000_base_device* mc68kcpu)
14316{
14317   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
14318   {
14319      UINT32 word2 = OPER_I_16(mc68kcpu);
14320      UINT64 divisor = OPER_I_32(mc68kcpu);
14321      UINT64 dividend  = 0;
14322      UINT64 quotient  = 0;
14323      UINT64 remainder = 0;
14324
14325      if(divisor != 0)
14326      {
14327         if(BIT_A(word2))    /* 64 bit */
14328         {
14329            dividend = REG_D(mc68kcpu)[word2 & 7];
14330            dividend <<= 32;
14331            dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
14332
14333            if(BIT_B(word2))       /* signed */
14334            {
14335               quotient  = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
14336               remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
14337               if((INT64)quotient != (INT64)((INT32)quotient))
14338               {
14339                  (mc68kcpu)->v_flag = VFLAG_SET;
14340                  return;
14341               }
14342            }
14343            else                    /* unsigned */
14344            {
14345               quotient = dividend / divisor;
14346               if(quotient > 0xffffffff)
14347               {
14348                  (mc68kcpu)->v_flag = VFLAG_SET;
14349                  return;
14350               }
14351               remainder = dividend % divisor;
14352            }
14353         }
14354         else    /* 32 bit */
14355         {
14356            dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
14357            if(BIT_B(word2))       /* signed */
14358            {
14359               quotient  = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
14360               remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
14361            }
14362            else                    /* unsigned */
14363            {
14364               quotient = dividend / divisor;
14365               remainder = dividend % divisor;
14366            }
14367         }
14368
14369         REG_D(mc68kcpu)[word2 & 7] = remainder;
14370         REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
14371
14372         (mc68kcpu)->n_flag = NFLAG_32(quotient);
14373         (mc68kcpu)->not_z_flag = quotient;
14374         (mc68kcpu)->v_flag = VFLAG_CLEAR;
14375         (mc68kcpu)->c_flag = CFLAG_CLEAR;
14376         return;
14377      }
14378      m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
14379      return;
14380   }
14381   m68ki_exception_illegal(mc68kcpu);
14382}
14383
14384
14385void m68000_base_device_ops::m68k_op_eor_8_d(m68000_base_device* mc68kcpu)
14386{
14387   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= MASK_OUT_ABOVE_8(DX(mc68kcpu)));
14388
14389   (mc68kcpu)->n_flag = NFLAG_8(res);
14390   (mc68kcpu)->not_z_flag = res;
14391   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14393}
14394
14395
14396void m68000_base_device_ops::m68k_op_eor_8_ai(m68000_base_device* mc68kcpu)
14397{
14398   UINT32 ea = EA_AY_AI_8(mc68kcpu);
14399   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14400
14401   m68ki_write_8((mc68kcpu), ea, res);
14402
14403   (mc68kcpu)->n_flag = NFLAG_8(res);
14404   (mc68kcpu)->not_z_flag = res;
14405   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14406   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14407}
14408
14409
14410void m68000_base_device_ops::m68k_op_eor_8_pi(m68000_base_device* mc68kcpu)
14411{
14412   UINT32 ea = EA_AY_PI_8(mc68kcpu);
14413   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14414
14415   m68ki_write_8((mc68kcpu), ea, res);
14416
14417   (mc68kcpu)->n_flag = NFLAG_8(res);
14418   (mc68kcpu)->not_z_flag = res;
14419   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14420   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14421}
14422
14423
14424void m68000_base_device_ops::m68k_op_eor_8_pi7(m68000_base_device* mc68kcpu)
14425{
14426   UINT32 ea = EA_A7_PI_8(mc68kcpu);
14427   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14428
14429   m68ki_write_8((mc68kcpu), ea, res);
14430
14431   (mc68kcpu)->n_flag = NFLAG_8(res);
14432   (mc68kcpu)->not_z_flag = res;
14433   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14434   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14435}
14436
14437
14438void m68000_base_device_ops::m68k_op_eor_8_pd(m68000_base_device* mc68kcpu)
14439{
14440   UINT32 ea = EA_AY_PD_8(mc68kcpu);
14441   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14442
14443   m68ki_write_8((mc68kcpu), ea, res);
14444
14445   (mc68kcpu)->n_flag = NFLAG_8(res);
14446   (mc68kcpu)->not_z_flag = res;
14447   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14448   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14449}
14450
14451
14452void m68000_base_device_ops::m68k_op_eor_8_pd7(m68000_base_device* mc68kcpu)
14453{
14454   UINT32 ea = EA_A7_PD_8(mc68kcpu);
14455   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14456
14457   m68ki_write_8((mc68kcpu), ea, res);
14458
14459   (mc68kcpu)->n_flag = NFLAG_8(res);
14460   (mc68kcpu)->not_z_flag = res;
14461   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14462   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14463}
14464
14465
14466void m68000_base_device_ops::m68k_op_eor_8_di(m68000_base_device* mc68kcpu)
14467{
14468   UINT32 ea = EA_AY_DI_8(mc68kcpu);
14469   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14470
14471   m68ki_write_8((mc68kcpu), ea, res);
14472
14473   (mc68kcpu)->n_flag = NFLAG_8(res);
14474   (mc68kcpu)->not_z_flag = res;
14475   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14476   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14477}
14478
14479
14480void m68000_base_device_ops::m68k_op_eor_8_ix(m68000_base_device* mc68kcpu)
14481{
14482   UINT32 ea = EA_AY_IX_8(mc68kcpu);
14483   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14484
14485   m68ki_write_8((mc68kcpu), ea, res);
14486
14487   (mc68kcpu)->n_flag = NFLAG_8(res);
14488   (mc68kcpu)->not_z_flag = res;
14489   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14490   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14491}
14492
14493
14494void m68000_base_device_ops::m68k_op_eor_8_aw(m68000_base_device* mc68kcpu)
14495{
14496   UINT32 ea = EA_AW_8(mc68kcpu);
14497   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14498
14499   m68ki_write_8((mc68kcpu), ea, res);
14500
14501   (mc68kcpu)->n_flag = NFLAG_8(res);
14502   (mc68kcpu)->not_z_flag = res;
14503   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14504   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14505}
14506
14507
14508void m68000_base_device_ops::m68k_op_eor_8_al(m68000_base_device* mc68kcpu)
14509{
14510   UINT32 ea = EA_AL_8(mc68kcpu);
14511   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
14512
14513   m68ki_write_8((mc68kcpu), ea, res);
14514
14515   (mc68kcpu)->n_flag = NFLAG_8(res);
14516   (mc68kcpu)->not_z_flag = res;
14517   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14518   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14519}
14520
14521
14522void m68000_base_device_ops::m68k_op_eor_16_d(m68000_base_device* mc68kcpu)
14523{
14524   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= MASK_OUT_ABOVE_16(DX(mc68kcpu)));
14525
14526   (mc68kcpu)->n_flag = NFLAG_16(res);
14527   (mc68kcpu)->not_z_flag = res;
14528   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14529   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14530}
14531
14532
14533void m68000_base_device_ops::m68k_op_eor_16_ai(m68000_base_device* mc68kcpu)
14534{
14535   UINT32 ea = EA_AY_AI_16(mc68kcpu);
14536   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14537
14538   m68ki_write_16((mc68kcpu), ea, res);
14539
14540   (mc68kcpu)->n_flag = NFLAG_16(res);
14541   (mc68kcpu)->not_z_flag = res;
14542   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14543   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14544}
14545
14546
14547void m68000_base_device_ops::m68k_op_eor_16_pi(m68000_base_device* mc68kcpu)
14548{
14549   UINT32 ea = EA_AY_PI_16(mc68kcpu);
14550   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14551
14552   m68ki_write_16((mc68kcpu), ea, res);
14553
14554   (mc68kcpu)->n_flag = NFLAG_16(res);
14555   (mc68kcpu)->not_z_flag = res;
14556   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14557   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14558}
14559
14560
14561void m68000_base_device_ops::m68k_op_eor_16_pd(m68000_base_device* mc68kcpu)
14562{
14563   UINT32 ea = EA_AY_PD_16(mc68kcpu);
14564   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14565
14566   m68ki_write_16((mc68kcpu), ea, res);
14567
14568   (mc68kcpu)->n_flag = NFLAG_16(res);
14569   (mc68kcpu)->not_z_flag = res;
14570   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14571   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14572}
14573
14574
14575void m68000_base_device_ops::m68k_op_eor_16_di(m68000_base_device* mc68kcpu)
14576{
14577   UINT32 ea = EA_AY_DI_16(mc68kcpu);
14578   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14579
14580   m68ki_write_16((mc68kcpu), ea, res);
14581
14582   (mc68kcpu)->n_flag = NFLAG_16(res);
14583   (mc68kcpu)->not_z_flag = res;
14584   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14585   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14586}
14587
14588
14589void m68000_base_device_ops::m68k_op_eor_16_ix(m68000_base_device* mc68kcpu)
14590{
14591   UINT32 ea = EA_AY_IX_16(mc68kcpu);
14592   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14593
14594   m68ki_write_16((mc68kcpu), ea, res);
14595
14596   (mc68kcpu)->n_flag = NFLAG_16(res);
14597   (mc68kcpu)->not_z_flag = res;
14598   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14599   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14600}
14601
14602
14603void m68000_base_device_ops::m68k_op_eor_16_aw(m68000_base_device* mc68kcpu)
14604{
14605   UINT32 ea = EA_AW_16(mc68kcpu);
14606   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14607
14608   m68ki_write_16((mc68kcpu), ea, res);
14609
14610   (mc68kcpu)->n_flag = NFLAG_16(res);
14611   (mc68kcpu)->not_z_flag = res;
14612   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14613   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14614}
14615
14616
14617void m68000_base_device_ops::m68k_op_eor_16_al(m68000_base_device* mc68kcpu)
14618{
14619   UINT32 ea = EA_AL_16(mc68kcpu);
14620   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
14621
14622   m68ki_write_16((mc68kcpu), ea, res);
14623
14624   (mc68kcpu)->n_flag = NFLAG_16(res);
14625   (mc68kcpu)->not_z_flag = res;
14626   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14627   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14628}
14629
14630
14631void m68000_base_device_ops::m68k_op_eor_32_d(m68000_base_device* mc68kcpu)
14632{
14633   UINT32 res = DY(mc68kcpu) ^= DX(mc68kcpu);
14634
14635   (mc68kcpu)->n_flag = NFLAG_32(res);
14636   (mc68kcpu)->not_z_flag = res;
14637   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14638   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14639}
14640
14641
14642void m68000_base_device_ops::m68k_op_eor_32_ai(m68000_base_device* mc68kcpu)
14643{
14644   UINT32 ea = EA_AY_AI_32(mc68kcpu);
14645   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14646
14647   m68ki_write_32((mc68kcpu), ea, res);
14648
14649   (mc68kcpu)->n_flag = NFLAG_32(res);
14650   (mc68kcpu)->not_z_flag = res;
14651   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14652   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14653}
14654
14655
14656void m68000_base_device_ops::m68k_op_eor_32_pi(m68000_base_device* mc68kcpu)
14657{
14658   UINT32 ea = EA_AY_PI_32(mc68kcpu);
14659   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14660
14661   m68ki_write_32((mc68kcpu), ea, res);
14662
14663   (mc68kcpu)->n_flag = NFLAG_32(res);
14664   (mc68kcpu)->not_z_flag = res;
14665   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14666   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14667}
14668
14669
14670void m68000_base_device_ops::m68k_op_eor_32_pd(m68000_base_device* mc68kcpu)
14671{
14672   UINT32 ea = EA_AY_PD_32(mc68kcpu);
14673   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14674
14675   m68ki_write_32((mc68kcpu), ea, res);
14676
14677   (mc68kcpu)->n_flag = NFLAG_32(res);
14678   (mc68kcpu)->not_z_flag = res;
14679   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14680   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14681}
14682
14683
14684void m68000_base_device_ops::m68k_op_eor_32_di(m68000_base_device* mc68kcpu)
14685{
14686   UINT32 ea = EA_AY_DI_32(mc68kcpu);
14687   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14688
14689   m68ki_write_32((mc68kcpu), ea, res);
14690
14691   (mc68kcpu)->n_flag = NFLAG_32(res);
14692   (mc68kcpu)->not_z_flag = res;
14693   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14694   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14695}
14696
14697
14698void m68000_base_device_ops::m68k_op_eor_32_ix(m68000_base_device* mc68kcpu)
14699{
14700   UINT32 ea = EA_AY_IX_32(mc68kcpu);
14701   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14702
14703   m68ki_write_32((mc68kcpu), ea, res);
14704
14705   (mc68kcpu)->n_flag = NFLAG_32(res);
14706   (mc68kcpu)->not_z_flag = res;
14707   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14708   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14709}
14710
14711
14712void m68000_base_device_ops::m68k_op_eor_32_aw(m68000_base_device* mc68kcpu)
14713{
14714   UINT32 ea = EA_AW_32(mc68kcpu);
14715   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14716
14717   m68ki_write_32((mc68kcpu), ea, res);
14718
14719   (mc68kcpu)->n_flag = NFLAG_32(res);
14720   (mc68kcpu)->not_z_flag = res;
14721   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14722   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14723}
14724
14725
14726void m68000_base_device_ops::m68k_op_eor_32_al(m68000_base_device* mc68kcpu)
14727{
14728   UINT32 ea = EA_AL_32(mc68kcpu);
14729   UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
14730
14731   m68ki_write_32((mc68kcpu), ea, res);
14732
14733   (mc68kcpu)->n_flag = NFLAG_32(res);
14734   (mc68kcpu)->not_z_flag = res;
14735   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14736   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14737}
14738
14739
14740void m68000_base_device_ops::m68k_op_eori_8_d(m68000_base_device* mc68kcpu)
14741{
14742   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= OPER_I_8(mc68kcpu));
14743
14744   (mc68kcpu)->n_flag = NFLAG_8(res);
14745   (mc68kcpu)->not_z_flag = res;
14746   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14747   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14748}
14749
14750
14751void m68000_base_device_ops::m68k_op_eori_8_ai(m68000_base_device* mc68kcpu)
14752{
14753   UINT32 src = OPER_I_8(mc68kcpu);
14754   UINT32 ea = EA_AY_AI_8(mc68kcpu);
14755   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14756
14757   m68ki_write_8((mc68kcpu), ea, res);
14758
14759   (mc68kcpu)->n_flag = NFLAG_8(res);
14760   (mc68kcpu)->not_z_flag = res;
14761   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14762   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14763}
14764
14765
14766void m68000_base_device_ops::m68k_op_eori_8_pi(m68000_base_device* mc68kcpu)
14767{
14768   UINT32 src = OPER_I_8(mc68kcpu);
14769   UINT32 ea = EA_AY_PI_8(mc68kcpu);
14770   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14771
14772   m68ki_write_8((mc68kcpu), ea, res);
14773
14774   (mc68kcpu)->n_flag = NFLAG_8(res);
14775   (mc68kcpu)->not_z_flag = res;
14776   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14777   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14778}
14779
14780
14781void m68000_base_device_ops::m68k_op_eori_8_pi7(m68000_base_device* mc68kcpu)
14782{
14783   UINT32 src = OPER_I_8(mc68kcpu);
14784   UINT32 ea = EA_A7_PI_8(mc68kcpu);
14785   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14786
14787   m68ki_write_8((mc68kcpu), ea, res);
14788
14789   (mc68kcpu)->n_flag = NFLAG_8(res);
14790   (mc68kcpu)->not_z_flag = res;
14791   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14792   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14793}
14794
14795
14796void m68000_base_device_ops::m68k_op_eori_8_pd(m68000_base_device* mc68kcpu)
14797{
14798   UINT32 src = OPER_I_8(mc68kcpu);
14799   UINT32 ea = EA_AY_PD_8(mc68kcpu);
14800   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14801
14802   m68ki_write_8((mc68kcpu), ea, res);
14803
14804   (mc68kcpu)->n_flag = NFLAG_8(res);
14805   (mc68kcpu)->not_z_flag = res;
14806   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14807   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14808}
14809
14810
14811void m68000_base_device_ops::m68k_op_eori_8_pd7(m68000_base_device* mc68kcpu)
14812{
14813   UINT32 src = OPER_I_8(mc68kcpu);
14814   UINT32 ea = EA_A7_PD_8(mc68kcpu);
14815   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14816
14817   m68ki_write_8((mc68kcpu), ea, res);
14818
14819   (mc68kcpu)->n_flag = NFLAG_8(res);
14820   (mc68kcpu)->not_z_flag = res;
14821   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14822   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14823}
14824
14825
14826void m68000_base_device_ops::m68k_op_eori_8_di(m68000_base_device* mc68kcpu)
14827{
14828   UINT32 src = OPER_I_8(mc68kcpu);
14829   UINT32 ea = EA_AY_DI_8(mc68kcpu);
14830   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14831
14832   m68ki_write_8((mc68kcpu), ea, res);
14833
14834   (mc68kcpu)->n_flag = NFLAG_8(res);
14835   (mc68kcpu)->not_z_flag = res;
14836   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14837   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14838}
14839
14840
14841void m68000_base_device_ops::m68k_op_eori_8_ix(m68000_base_device* mc68kcpu)
14842{
14843   UINT32 src = OPER_I_8(mc68kcpu);
14844   UINT32 ea = EA_AY_IX_8(mc68kcpu);
14845   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14846
14847   m68ki_write_8((mc68kcpu), ea, res);
14848
14849   (mc68kcpu)->n_flag = NFLAG_8(res);
14850   (mc68kcpu)->not_z_flag = res;
14851   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14852   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14853}
14854
14855
14856void m68000_base_device_ops::m68k_op_eori_8_aw(m68000_base_device* mc68kcpu)
14857{
14858   UINT32 src = OPER_I_8(mc68kcpu);
14859   UINT32 ea = EA_AW_8(mc68kcpu);
14860   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14861
14862   m68ki_write_8((mc68kcpu), ea, res);
14863
14864   (mc68kcpu)->n_flag = NFLAG_8(res);
14865   (mc68kcpu)->not_z_flag = res;
14866   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14867   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14868}
14869
14870
14871void m68000_base_device_ops::m68k_op_eori_8_al(m68000_base_device* mc68kcpu)
14872{
14873   UINT32 src = OPER_I_8(mc68kcpu);
14874   UINT32 ea = EA_AL_8(mc68kcpu);
14875   UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
14876
14877   m68ki_write_8((mc68kcpu), ea, res);
14878
14879   (mc68kcpu)->n_flag = NFLAG_8(res);
14880   (mc68kcpu)->not_z_flag = res;
14881   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14882   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14883}
14884
14885
14886void m68000_base_device_ops::m68k_op_eori_16_d(m68000_base_device* mc68kcpu)
14887{
14888   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= OPER_I_16(mc68kcpu));
14889
14890   (mc68kcpu)->n_flag = NFLAG_16(res);
14891   (mc68kcpu)->not_z_flag = res;
14892   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14893   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14894}
14895
14896
14897void m68000_base_device_ops::m68k_op_eori_16_ai(m68000_base_device* mc68kcpu)
14898{
14899   UINT32 src = OPER_I_16(mc68kcpu);
14900   UINT32 ea = EA_AY_AI_16(mc68kcpu);
14901   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14902
14903   m68ki_write_16((mc68kcpu), ea, res);
14904
14905   (mc68kcpu)->n_flag = NFLAG_16(res);
14906   (mc68kcpu)->not_z_flag = res;
14907   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14908   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14909}
14910
14911
14912void m68000_base_device_ops::m68k_op_eori_16_pi(m68000_base_device* mc68kcpu)
14913{
14914   UINT32 src = OPER_I_16(mc68kcpu);
14915   UINT32 ea = EA_AY_PI_16(mc68kcpu);
14916   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14917
14918   m68ki_write_16((mc68kcpu), ea, res);
14919
14920   (mc68kcpu)->n_flag = NFLAG_16(res);
14921   (mc68kcpu)->not_z_flag = res;
14922   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14923   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14924}
14925
14926
14927void m68000_base_device_ops::m68k_op_eori_16_pd(m68000_base_device* mc68kcpu)
14928{
14929   UINT32 src = OPER_I_16(mc68kcpu);
14930   UINT32 ea = EA_AY_PD_16(mc68kcpu);
14931   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14932
14933   m68ki_write_16((mc68kcpu), ea, res);
14934
14935   (mc68kcpu)->n_flag = NFLAG_16(res);
14936   (mc68kcpu)->not_z_flag = res;
14937   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14938   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14939}
14940
14941
14942void m68000_base_device_ops::m68k_op_eori_16_di(m68000_base_device* mc68kcpu)
14943{
14944   UINT32 src = OPER_I_16(mc68kcpu);
14945   UINT32 ea = EA_AY_DI_16(mc68kcpu);
14946   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14947
14948   m68ki_write_16((mc68kcpu), ea, res);
14949
14950   (mc68kcpu)->n_flag = NFLAG_16(res);
14951   (mc68kcpu)->not_z_flag = res;
14952   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14953   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14954}
14955
14956
14957void m68000_base_device_ops::m68k_op_eori_16_ix(m68000_base_device* mc68kcpu)
14958{
14959   UINT32 src = OPER_I_16(mc68kcpu);
14960   UINT32 ea = EA_AY_IX_16(mc68kcpu);
14961   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14962
14963   m68ki_write_16((mc68kcpu), ea, res);
14964
14965   (mc68kcpu)->n_flag = NFLAG_16(res);
14966   (mc68kcpu)->not_z_flag = res;
14967   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14968   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14969}
14970
14971
14972void m68000_base_device_ops::m68k_op_eori_16_aw(m68000_base_device* mc68kcpu)
14973{
14974   UINT32 src = OPER_I_16(mc68kcpu);
14975   UINT32 ea = EA_AW_16(mc68kcpu);
14976   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14977
14978   m68ki_write_16((mc68kcpu), ea, res);
14979
14980   (mc68kcpu)->n_flag = NFLAG_16(res);
14981   (mc68kcpu)->not_z_flag = res;
14982   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14983   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14984}
14985
14986
14987void m68000_base_device_ops::m68k_op_eori_16_al(m68000_base_device* mc68kcpu)
14988{
14989   UINT32 src = OPER_I_16(mc68kcpu);
14990   UINT32 ea = EA_AL_16(mc68kcpu);
14991   UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
14992
14993   m68ki_write_16((mc68kcpu), ea, res);
14994
14995   (mc68kcpu)->n_flag = NFLAG_16(res);
14996   (mc68kcpu)->not_z_flag = res;
14997   (mc68kcpu)->c_flag = CFLAG_CLEAR;
14998   (mc68kcpu)->v_flag = VFLAG_CLEAR;
14999}
15000
15001
15002void m68000_base_device_ops::m68k_op_eori_32_d(m68000_base_device* mc68kcpu)
15003{
15004   UINT32 res = DY(mc68kcpu) ^= OPER_I_32(mc68kcpu);
15005
15006   (mc68kcpu)->n_flag = NFLAG_32(res);
15007   (mc68kcpu)->not_z_flag = res;
15008   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15009   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15010}
15011
15012
15013void m68000_base_device_ops::m68k_op_eori_32_ai(m68000_base_device* mc68kcpu)
15014{
15015   UINT32 src = OPER_I_32(mc68kcpu);
15016   UINT32 ea = EA_AY_AI_32(mc68kcpu);
15017   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15018
15019   m68ki_write_32((mc68kcpu), ea, res);
15020
15021   (mc68kcpu)->n_flag = NFLAG_32(res);
15022   (mc68kcpu)->not_z_flag = res;
15023   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15024   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15025}
15026
15027
15028void m68000_base_device_ops::m68k_op_eori_32_pi(m68000_base_device* mc68kcpu)
15029{
15030   UINT32 src = OPER_I_32(mc68kcpu);
15031   UINT32 ea = EA_AY_PI_32(mc68kcpu);
15032   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15033
15034   m68ki_write_32((mc68kcpu), ea, res);
15035
15036   (mc68kcpu)->n_flag = NFLAG_32(res);
15037   (mc68kcpu)->not_z_flag = res;
15038   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15039   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15040}
15041
15042
15043void m68000_base_device_ops::m68k_op_eori_32_pd(m68000_base_device* mc68kcpu)
15044{
15045   UINT32 src = OPER_I_32(mc68kcpu);
15046   UINT32 ea = EA_AY_PD_32(mc68kcpu);
15047   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15048
15049   m68ki_write_32((mc68kcpu), ea, res);
15050
15051   (mc68kcpu)->n_flag = NFLAG_32(res);
15052   (mc68kcpu)->not_z_flag = res;
15053   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15054   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15055}
15056
15057
15058void m68000_base_device_ops::m68k_op_eori_32_di(m68000_base_device* mc68kcpu)
15059{
15060   UINT32 src = OPER_I_32(mc68kcpu);
15061   UINT32 ea = EA_AY_DI_32(mc68kcpu);
15062   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15063
15064   m68ki_write_32((mc68kcpu), ea, res);
15065
15066   (mc68kcpu)->n_flag = NFLAG_32(res);
15067   (mc68kcpu)->not_z_flag = res;
15068   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15069   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15070}
15071
15072
15073void m68000_base_device_ops::m68k_op_eori_32_ix(m68000_base_device* mc68kcpu)
15074{
15075   UINT32 src = OPER_I_32(mc68kcpu);
15076   UINT32 ea = EA_AY_IX_32(mc68kcpu);
15077   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15078
15079   m68ki_write_32((mc68kcpu), ea, res);
15080
15081   (mc68kcpu)->n_flag = NFLAG_32(res);
15082   (mc68kcpu)->not_z_flag = res;
15083   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15084   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15085}
15086
15087
15088void m68000_base_device_ops::m68k_op_eori_32_aw(m68000_base_device* mc68kcpu)
15089{
15090   UINT32 src = OPER_I_32(mc68kcpu);
15091   UINT32 ea = EA_AW_32(mc68kcpu);
15092   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15093
15094   m68ki_write_32((mc68kcpu), ea, res);
15095
15096   (mc68kcpu)->n_flag = NFLAG_32(res);
15097   (mc68kcpu)->not_z_flag = res;
15098   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15099   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15100}
15101
15102
15103void m68000_base_device_ops::m68k_op_eori_32_al(m68000_base_device* mc68kcpu)
15104{
15105   UINT32 src = OPER_I_32(mc68kcpu);
15106   UINT32 ea = EA_AL_32(mc68kcpu);
15107   UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
15108
15109   m68ki_write_32((mc68kcpu), ea, res);
15110
15111   (mc68kcpu)->n_flag = NFLAG_32(res);
15112   (mc68kcpu)->not_z_flag = res;
15113   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15114   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15115}
15116
15117
15118void m68000_base_device_ops::m68k_op_eori_16_toc(m68000_base_device* mc68kcpu)
15119{
15120   m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) ^ OPER_I_16(mc68kcpu));
15121}
15122
15123
15124void m68000_base_device_ops::m68k_op_eori_16_tos(m68000_base_device* mc68kcpu)
15125{
15126   if((mc68kcpu)->s_flag)
15127   {
15128      UINT32 src = OPER_I_16(mc68kcpu);
15129      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
15130      m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) ^ src);
15131      return;
15132   }
15133   m68ki_exception_privilege_violation(mc68kcpu);
15134}
15135
15136
15137void m68000_base_device_ops::m68k_op_exg_32_dd(m68000_base_device* mc68kcpu)
15138{
15139   UINT32* reg_a = &DX(mc68kcpu);
15140   UINT32* reg_b = &DY(mc68kcpu);
15141   UINT32 tmp = *reg_a;
15142   *reg_a = *reg_b;
15143   *reg_b = tmp;
15144}
15145
15146
15147void m68000_base_device_ops::m68k_op_exg_32_aa(m68000_base_device* mc68kcpu)
15148{
15149   UINT32* reg_a = &AX(mc68kcpu);
15150   UINT32* reg_b = &AY(mc68kcpu);
15151   UINT32 tmp = *reg_a;
15152   *reg_a = *reg_b;
15153   *reg_b = tmp;
15154}
15155
15156
15157void m68000_base_device_ops::m68k_op_exg_32_da(m68000_base_device* mc68kcpu)
15158{
15159   UINT32* reg_a = &DX(mc68kcpu);
15160   UINT32* reg_b = &AY(mc68kcpu);
15161   UINT32 tmp = *reg_a;
15162   *reg_a = *reg_b;
15163   *reg_b = tmp;
15164}
15165
15166
15167void m68000_base_device_ops::m68k_op_ext_16(m68000_base_device* mc68kcpu)
15168{
15169   UINT32* r_dst = &DY(mc68kcpu);
15170
15171   *r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0);
15172
15173   (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
15174   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
15175   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15176   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15177}
15178
15179
15180void m68000_base_device_ops::m68k_op_ext_32(m68000_base_device* mc68kcpu)
15181{
15182   UINT32* r_dst = &DY(mc68kcpu);
15183
15184   *r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0);
15185
15186   (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
15187   (mc68kcpu)->not_z_flag = *r_dst;
15188   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15189   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15190}
15191
15192
15193void m68000_base_device_ops::m68k_op_extb_32(m68000_base_device* mc68kcpu)
15194{
15195   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
15196   {
15197      UINT32* r_dst = &DY(mc68kcpu);
15198
15199      *r_dst = MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xffffff00 : 0);
15200
15201      (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
15202      (mc68kcpu)->not_z_flag = *r_dst;
15203      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15204      (mc68kcpu)->c_flag = CFLAG_CLEAR;
15205      return;
15206   }
15207   m68ki_exception_illegal(mc68kcpu);
15208}
15209
15210
15211void m68000_base_device_ops::m68k_op_illegal(m68000_base_device* mc68kcpu)
15212{
15213   m68ki_exception_illegal(mc68kcpu);
15214}
15215
15216
15217void m68000_base_device_ops::m68k_op_jmp_32_ai(m68000_base_device* mc68kcpu)
15218{
15219   m68ki_jump((mc68kcpu), EA_AY_AI_32(mc68kcpu));
15220   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15221   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15222      (mc68kcpu)->remaining_cycles = 0;
15223}
15224
15225
15226void m68000_base_device_ops::m68k_op_jmp_32_di(m68000_base_device* mc68kcpu)
15227{
15228   m68ki_jump((mc68kcpu), EA_AY_DI_32(mc68kcpu));
15229   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15230   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15231      (mc68kcpu)->remaining_cycles = 0;
15232}
15233
15234
15235void m68000_base_device_ops::m68k_op_jmp_32_ix(m68000_base_device* mc68kcpu)
15236{
15237   m68ki_jump((mc68kcpu), EA_AY_IX_32(mc68kcpu));
15238   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15239   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15240      (mc68kcpu)->remaining_cycles = 0;
15241}
15242
15243
15244void m68000_base_device_ops::m68k_op_jmp_32_aw(m68000_base_device* mc68kcpu)
15245{
15246   m68ki_jump((mc68kcpu), EA_AW_32(mc68kcpu));
15247   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15248   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15249      (mc68kcpu)->remaining_cycles = 0;
15250}
15251
15252
15253void m68000_base_device_ops::m68k_op_jmp_32_al(m68000_base_device* mc68kcpu)
15254{
15255   m68ki_jump((mc68kcpu), EA_AL_32(mc68kcpu));
15256   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15257   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15258      (mc68kcpu)->remaining_cycles = 0;
15259}
15260
15261
15262void m68000_base_device_ops::m68k_op_jmp_32_pcdi(m68000_base_device* mc68kcpu)
15263{
15264   m68ki_jump((mc68kcpu), EA_PCDI_32(mc68kcpu));
15265   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15266   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15267      (mc68kcpu)->remaining_cycles = 0;
15268}
15269
15270
15271void m68000_base_device_ops::m68k_op_jmp_32_pcix(m68000_base_device* mc68kcpu)
15272{
15273   m68ki_jump((mc68kcpu), EA_PCIX_32(mc68kcpu));
15274   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15275   if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
15276      (mc68kcpu)->remaining_cycles = 0;
15277}
15278
15279
15280void m68000_base_device_ops::m68k_op_jsr_32_ai(m68000_base_device* mc68kcpu)
15281{
15282   UINT32 ea = EA_AY_AI_32(mc68kcpu);
15283   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15284   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15285   m68ki_jump((mc68kcpu), ea);
15286}
15287
15288
15289void m68000_base_device_ops::m68k_op_jsr_32_di(m68000_base_device* mc68kcpu)
15290{
15291   UINT32 ea = EA_AY_DI_32(mc68kcpu);
15292   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15293   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15294   m68ki_jump((mc68kcpu), ea);
15295}
15296
15297
15298void m68000_base_device_ops::m68k_op_jsr_32_ix(m68000_base_device* mc68kcpu)
15299{
15300   UINT32 ea = EA_AY_IX_32(mc68kcpu);
15301   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15302   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15303   m68ki_jump((mc68kcpu), ea);
15304}
15305
15306
15307void m68000_base_device_ops::m68k_op_jsr_32_aw(m68000_base_device* mc68kcpu)
15308{
15309   UINT32 ea = EA_AW_32(mc68kcpu);
15310   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15311   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15312   m68ki_jump((mc68kcpu), ea);
15313}
15314
15315
15316void m68000_base_device_ops::m68k_op_jsr_32_al(m68000_base_device* mc68kcpu)
15317{
15318   UINT32 ea = EA_AL_32(mc68kcpu);
15319   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15320   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15321   m68ki_jump((mc68kcpu), ea);
15322}
15323
15324
15325void m68000_base_device_ops::m68k_op_jsr_32_pcdi(m68000_base_device* mc68kcpu)
15326{
15327   UINT32 ea = EA_PCDI_32(mc68kcpu);
15328   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15329   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15330   m68ki_jump((mc68kcpu), ea);
15331}
15332
15333
15334void m68000_base_device_ops::m68k_op_jsr_32_pcix(m68000_base_device* mc68kcpu)
15335{
15336   UINT32 ea = EA_PCIX_32(mc68kcpu);
15337   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
15338   m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
15339   m68ki_jump((mc68kcpu), ea);
15340}
15341
15342
15343void m68000_base_device_ops::m68k_op_lea_32_ai(m68000_base_device* mc68kcpu)
15344{
15345   AX(mc68kcpu) = EA_AY_AI_32(mc68kcpu);
15346}
15347
15348
15349void m68000_base_device_ops::m68k_op_lea_32_di(m68000_base_device* mc68kcpu)
15350{
15351   AX(mc68kcpu) = EA_AY_DI_32(mc68kcpu);
15352}
15353
15354
15355void m68000_base_device_ops::m68k_op_lea_32_ix(m68000_base_device* mc68kcpu)
15356{
15357   AX(mc68kcpu) = EA_AY_IX_32(mc68kcpu);
15358}
15359
15360
15361void m68000_base_device_ops::m68k_op_lea_32_aw(m68000_base_device* mc68kcpu)
15362{
15363   AX(mc68kcpu) = EA_AW_32(mc68kcpu);
15364}
15365
15366
15367void m68000_base_device_ops::m68k_op_lea_32_al(m68000_base_device* mc68kcpu)
15368{
15369   AX(mc68kcpu) = EA_AL_32(mc68kcpu);
15370}
15371
15372
15373void m68000_base_device_ops::m68k_op_lea_32_pcdi(m68000_base_device* mc68kcpu)
15374{
15375   AX(mc68kcpu) = EA_PCDI_32(mc68kcpu);
15376}
15377
15378
15379void m68000_base_device_ops::m68k_op_lea_32_pcix(m68000_base_device* mc68kcpu)
15380{
15381   AX(mc68kcpu) = EA_PCIX_32(mc68kcpu);
15382}
15383
15384
15385void m68000_base_device_ops::m68k_op_link_16_a7(m68000_base_device* mc68kcpu)
15386{
15387   REG_A(mc68kcpu)[7] -= 4;
15388   m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[7], REG_A(mc68kcpu)[7]);
15389   REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
15390}
15391
15392
15393void m68000_base_device_ops::m68k_op_link_16(m68000_base_device* mc68kcpu)
15394{
15395   UINT32* r_dst = &AY(mc68kcpu);
15396
15397   m68ki_push_32((mc68kcpu), *r_dst);
15398   *r_dst = REG_A(mc68kcpu)[7];
15399   REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
15400}
15401
15402
15403void m68000_base_device_ops::m68k_op_link_32_a7(m68000_base_device* mc68kcpu)
15404{
15405   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
15406   {
15407      REG_A(mc68kcpu)[7] -= 4;
15408      m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[7], REG_A(mc68kcpu)[7]);
15409      REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + OPER_I_32(mc68kcpu));
15410      return;
15411   }
15412   m68ki_exception_illegal(mc68kcpu);
15413}
15414
15415
15416void m68000_base_device_ops::m68k_op_link_32(m68000_base_device* mc68kcpu)
15417{
15418   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
15419   {
15420      UINT32* r_dst = &AY(mc68kcpu);
15421
15422      m68ki_push_32((mc68kcpu), *r_dst);
15423      *r_dst = REG_A(mc68kcpu)[7];
15424      REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + OPER_I_32(mc68kcpu));
15425      return;
15426   }
15427   m68ki_exception_illegal(mc68kcpu);
15428}
15429
15430
15431void m68000_base_device_ops::m68k_op_lsr_8_s(m68000_base_device* mc68kcpu)
15432{
15433   UINT32* r_dst = &DY(mc68kcpu);
15434   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15435   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
15436   UINT32 res = src >> shift;
15437
15438   if(shift != 0)
15439      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15440
15441   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15442
15443   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15444   (mc68kcpu)->not_z_flag = res;
15445   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
15446   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15447}
15448
15449
15450void m68000_base_device_ops::m68k_op_lsr_16_s(m68000_base_device* mc68kcpu)
15451{
15452   UINT32* r_dst = &DY(mc68kcpu);
15453   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15454   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
15455   UINT32 res = src >> shift;
15456
15457   if(shift != 0)
15458      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15459
15460   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
15461
15462   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15463   (mc68kcpu)->not_z_flag = res;
15464   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
15465   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15466}
15467
15468
15469void m68000_base_device_ops::m68k_op_lsr_32_s(m68000_base_device* mc68kcpu)
15470{
15471   UINT32* r_dst = &DY(mc68kcpu);
15472   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15473   UINT32 src = *r_dst;
15474   UINT32 res = src >> shift;
15475
15476   if(shift != 0)
15477      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15478
15479   *r_dst = res;
15480
15481   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15482   (mc68kcpu)->not_z_flag = res;
15483   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
15484   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15485}
15486
15487
15488void m68000_base_device_ops::m68k_op_lsr_8_r(m68000_base_device* mc68kcpu)
15489{
15490   UINT32* r_dst = &DY(mc68kcpu);
15491   UINT32 shift = DX(mc68kcpu) & 0x3f;
15492   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
15493   UINT32 res = src >> shift;
15494
15495   if(shift != 0)
15496   {
15497      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15498
15499      if(shift <= 8)
15500      {
15501         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15502         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
15503         (mc68kcpu)->n_flag = NFLAG_CLEAR;
15504         (mc68kcpu)->not_z_flag = res;
15505         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15506         return;
15507      }
15508
15509      *r_dst &= 0xffffff00;
15510      (mc68kcpu)->x_flag = XFLAG_CLEAR;
15511      (mc68kcpu)->c_flag = CFLAG_CLEAR;
15512      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15513      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15514      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15515      return;
15516   }
15517
15518   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15519   (mc68kcpu)->n_flag = NFLAG_8(src);
15520   (mc68kcpu)->not_z_flag = src;
15521   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15522}
15523
15524
15525void m68000_base_device_ops::m68k_op_lsr_16_r(m68000_base_device* mc68kcpu)
15526{
15527   UINT32* r_dst = &DY(mc68kcpu);
15528   UINT32 shift = DX(mc68kcpu) & 0x3f;
15529   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
15530   UINT32 res = src >> shift;
15531
15532   if(shift != 0)
15533   {
15534      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15535
15536      if(shift <= 16)
15537      {
15538         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
15539         (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
15540         (mc68kcpu)->n_flag = NFLAG_CLEAR;
15541         (mc68kcpu)->not_z_flag = res;
15542         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15543         return;
15544      }
15545
15546      *r_dst &= 0xffff0000;
15547      (mc68kcpu)->x_flag = XFLAG_CLEAR;
15548      (mc68kcpu)->c_flag = CFLAG_CLEAR;
15549      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15550      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15551      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15552      return;
15553   }
15554
15555   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15556   (mc68kcpu)->n_flag = NFLAG_16(src);
15557   (mc68kcpu)->not_z_flag = src;
15558   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15559}
15560
15561
15562void m68000_base_device_ops::m68k_op_lsr_32_r(m68000_base_device* mc68kcpu)
15563{
15564   UINT32* r_dst = &DY(mc68kcpu);
15565   UINT32 shift = DX(mc68kcpu) & 0x3f;
15566   UINT32 src = *r_dst;
15567   UINT32 res = src >> shift;
15568
15569   if(shift != 0)
15570   {
15571      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15572
15573      if(shift < 32)
15574      {
15575         *r_dst = res;
15576         (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
15577         (mc68kcpu)->n_flag = NFLAG_CLEAR;
15578         (mc68kcpu)->not_z_flag = res;
15579         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15580         return;
15581      }
15582
15583      *r_dst = 0;
15584      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (shift == 32 ? GET_MSB_32(src)>>23 : 0);
15585      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15586      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15587      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15588      return;
15589   }
15590
15591   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15592   (mc68kcpu)->n_flag = NFLAG_32(src);
15593   (mc68kcpu)->not_z_flag = src;
15594   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15595}
15596
15597
15598void m68000_base_device_ops::m68k_op_lsr_16_ai(m68000_base_device* mc68kcpu)
15599{
15600   UINT32 ea = EA_AY_AI_16(mc68kcpu);
15601   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15602   UINT32 res = src >> 1;
15603
15604   m68ki_write_16((mc68kcpu), ea, res);
15605
15606   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15607   (mc68kcpu)->not_z_flag = res;
15608   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15609   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15610}
15611
15612
15613void m68000_base_device_ops::m68k_op_lsr_16_pi(m68000_base_device* mc68kcpu)
15614{
15615   UINT32 ea = EA_AY_PI_16(mc68kcpu);
15616   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15617   UINT32 res = src >> 1;
15618
15619   m68ki_write_16((mc68kcpu), ea, res);
15620
15621   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15622   (mc68kcpu)->not_z_flag = res;
15623   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15624   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15625}
15626
15627
15628void m68000_base_device_ops::m68k_op_lsr_16_pd(m68000_base_device* mc68kcpu)
15629{
15630   UINT32 ea = EA_AY_PD_16(mc68kcpu);
15631   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15632   UINT32 res = src >> 1;
15633
15634   m68ki_write_16((mc68kcpu), ea, res);
15635
15636   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15637   (mc68kcpu)->not_z_flag = res;
15638   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15639   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15640}
15641
15642
15643void m68000_base_device_ops::m68k_op_lsr_16_di(m68000_base_device* mc68kcpu)
15644{
15645   UINT32 ea = EA_AY_DI_16(mc68kcpu);
15646   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15647   UINT32 res = src >> 1;
15648
15649   m68ki_write_16((mc68kcpu), ea, res);
15650
15651   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15652   (mc68kcpu)->not_z_flag = res;
15653   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15654   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15655}
15656
15657
15658void m68000_base_device_ops::m68k_op_lsr_16_ix(m68000_base_device* mc68kcpu)
15659{
15660   UINT32 ea = EA_AY_IX_16(mc68kcpu);
15661   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15662   UINT32 res = src >> 1;
15663
15664   m68ki_write_16((mc68kcpu), ea, res);
15665
15666   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15667   (mc68kcpu)->not_z_flag = res;
15668   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15669   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15670}
15671
15672
15673void m68000_base_device_ops::m68k_op_lsr_16_aw(m68000_base_device* mc68kcpu)
15674{
15675   UINT32 ea = EA_AW_16(mc68kcpu);
15676   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15677   UINT32 res = src >> 1;
15678
15679   m68ki_write_16((mc68kcpu), ea, res);
15680
15681   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15682   (mc68kcpu)->not_z_flag = res;
15683   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15684   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15685}
15686
15687
15688void m68000_base_device_ops::m68k_op_lsr_16_al(m68000_base_device* mc68kcpu)
15689{
15690   UINT32 ea = EA_AL_16(mc68kcpu);
15691   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15692   UINT32 res = src >> 1;
15693
15694   m68ki_write_16((mc68kcpu), ea, res);
15695
15696   (mc68kcpu)->n_flag = NFLAG_CLEAR;
15697   (mc68kcpu)->not_z_flag = res;
15698   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
15699   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15700}
15701
15702
15703void m68000_base_device_ops::m68k_op_lsl_8_s(m68000_base_device* mc68kcpu)
15704{
15705   UINT32* r_dst = &DY(mc68kcpu);
15706   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15707   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
15708   UINT32 res = MASK_OUT_ABOVE_8(src << shift);
15709
15710   if(shift != 0)
15711      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15712
15713   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15714
15715   (mc68kcpu)->n_flag = NFLAG_8(res);
15716   (mc68kcpu)->not_z_flag = res;
15717   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
15718   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15719}
15720
15721
15722void m68000_base_device_ops::m68k_op_lsl_16_s(m68000_base_device* mc68kcpu)
15723{
15724   UINT32* r_dst = &DY(mc68kcpu);
15725   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15726   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
15727   UINT32 res = MASK_OUT_ABOVE_16(src << shift);
15728
15729   if(shift != 0)
15730      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15731
15732   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
15733
15734   (mc68kcpu)->n_flag = NFLAG_16(res);
15735   (mc68kcpu)->not_z_flag = res;
15736   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (8-shift);
15737   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15738}
15739
15740
15741void m68000_base_device_ops::m68k_op_lsl_32_s(m68000_base_device* mc68kcpu)
15742{
15743   UINT32* r_dst = &DY(mc68kcpu);
15744   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
15745   UINT32 src = *r_dst;
15746   UINT32 res = MASK_OUT_ABOVE_32(src << shift);
15747
15748   if(shift != 0)
15749      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15750
15751   *r_dst = res;
15752
15753   (mc68kcpu)->n_flag = NFLAG_32(res);
15754   (mc68kcpu)->not_z_flag = res;
15755   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (24-shift);
15756   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15757}
15758
15759
15760void m68000_base_device_ops::m68k_op_lsl_8_r(m68000_base_device* mc68kcpu)
15761{
15762   UINT32* r_dst = &DY(mc68kcpu);
15763   UINT32 shift = DX(mc68kcpu) & 0x3f;
15764   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
15765   UINT32 res = MASK_OUT_ABOVE_8(src << shift);
15766
15767   if(shift != 0)
15768   {
15769      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15770
15771      if(shift <= 8)
15772      {
15773         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15774         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
15775         (mc68kcpu)->n_flag = NFLAG_8(res);
15776         (mc68kcpu)->not_z_flag = res;
15777         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15778         return;
15779      }
15780
15781      *r_dst &= 0xffffff00;
15782      (mc68kcpu)->x_flag = XFLAG_CLEAR;
15783      (mc68kcpu)->c_flag = CFLAG_CLEAR;
15784      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15785      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15786      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15787      return;
15788   }
15789
15790   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15791   (mc68kcpu)->n_flag = NFLAG_8(src);
15792   (mc68kcpu)->not_z_flag = src;
15793   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15794}
15795
15796
15797void m68000_base_device_ops::m68k_op_lsl_16_r(m68000_base_device* mc68kcpu)
15798{
15799   UINT32* r_dst = &DY(mc68kcpu);
15800   UINT32 shift = DX(mc68kcpu) & 0x3f;
15801   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
15802   UINT32 res = MASK_OUT_ABOVE_16(src << shift);
15803
15804   if(shift != 0)
15805   {
15806      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15807
15808      if(shift <= 16)
15809      {
15810         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
15811         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src << shift) >> 8;
15812         (mc68kcpu)->n_flag = NFLAG_16(res);
15813         (mc68kcpu)->not_z_flag = res;
15814         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15815         return;
15816      }
15817
15818      *r_dst &= 0xffff0000;
15819      (mc68kcpu)->x_flag = XFLAG_CLEAR;
15820      (mc68kcpu)->c_flag = CFLAG_CLEAR;
15821      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15822      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15823      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15824      return;
15825   }
15826
15827   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15828   (mc68kcpu)->n_flag = NFLAG_16(src);
15829   (mc68kcpu)->not_z_flag = src;
15830   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15831}
15832
15833
15834void m68000_base_device_ops::m68k_op_lsl_32_r(m68000_base_device* mc68kcpu)
15835{
15836   UINT32* r_dst = &DY(mc68kcpu);
15837   UINT32 shift = DX(mc68kcpu) & 0x3f;
15838   UINT32 src = *r_dst;
15839   UINT32 res = MASK_OUT_ABOVE_32(src << shift);
15840
15841   if(shift != 0)
15842   {
15843      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
15844
15845      if(shift < 32)
15846      {
15847         *r_dst = res;
15848         (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src >> (32 - shift)) << 8;
15849         (mc68kcpu)->n_flag = NFLAG_32(res);
15850         (mc68kcpu)->not_z_flag = res;
15851         (mc68kcpu)->v_flag = VFLAG_CLEAR;
15852         return;
15853      }
15854
15855      *r_dst = 0;
15856      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 32 ? src & 1 : 0))<<8;
15857      (mc68kcpu)->n_flag = NFLAG_CLEAR;
15858      (mc68kcpu)->not_z_flag = ZFLAG_SET;
15859      (mc68kcpu)->v_flag = VFLAG_CLEAR;
15860      return;
15861   }
15862
15863   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15864   (mc68kcpu)->n_flag = NFLAG_32(src);
15865   (mc68kcpu)->not_z_flag = src;
15866   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15867}
15868
15869
15870void m68000_base_device_ops::m68k_op_lsl_16_ai(m68000_base_device* mc68kcpu)
15871{
15872   UINT32 ea = EA_AY_AI_16(mc68kcpu);
15873   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15874   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15875
15876   m68ki_write_16((mc68kcpu), ea, res);
15877
15878   (mc68kcpu)->n_flag = NFLAG_16(res);
15879   (mc68kcpu)->not_z_flag = res;
15880   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15881   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15882}
15883
15884
15885void m68000_base_device_ops::m68k_op_lsl_16_pi(m68000_base_device* mc68kcpu)
15886{
15887   UINT32 ea = EA_AY_PI_16(mc68kcpu);
15888   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15889   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15890
15891   m68ki_write_16((mc68kcpu), ea, res);
15892
15893   (mc68kcpu)->n_flag = NFLAG_16(res);
15894   (mc68kcpu)->not_z_flag = res;
15895   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15896   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15897}
15898
15899
15900void m68000_base_device_ops::m68k_op_lsl_16_pd(m68000_base_device* mc68kcpu)
15901{
15902   UINT32 ea = EA_AY_PD_16(mc68kcpu);
15903   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15904   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15905
15906   m68ki_write_16((mc68kcpu), ea, res);
15907
15908   (mc68kcpu)->n_flag = NFLAG_16(res);
15909   (mc68kcpu)->not_z_flag = res;
15910   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15911   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15912}
15913
15914
15915void m68000_base_device_ops::m68k_op_lsl_16_di(m68000_base_device* mc68kcpu)
15916{
15917   UINT32 ea = EA_AY_DI_16(mc68kcpu);
15918   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15919   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15920
15921   m68ki_write_16((mc68kcpu), ea, res);
15922
15923   (mc68kcpu)->n_flag = NFLAG_16(res);
15924   (mc68kcpu)->not_z_flag = res;
15925   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15926   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15927}
15928
15929
15930void m68000_base_device_ops::m68k_op_lsl_16_ix(m68000_base_device* mc68kcpu)
15931{
15932   UINT32 ea = EA_AY_IX_16(mc68kcpu);
15933   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15934   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15935
15936   m68ki_write_16((mc68kcpu), ea, res);
15937
15938   (mc68kcpu)->n_flag = NFLAG_16(res);
15939   (mc68kcpu)->not_z_flag = res;
15940   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15941   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15942}
15943
15944
15945void m68000_base_device_ops::m68k_op_lsl_16_aw(m68000_base_device* mc68kcpu)
15946{
15947   UINT32 ea = EA_AW_16(mc68kcpu);
15948   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15949   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15950
15951   m68ki_write_16((mc68kcpu), ea, res);
15952
15953   (mc68kcpu)->n_flag = NFLAG_16(res);
15954   (mc68kcpu)->not_z_flag = res;
15955   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15956   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15957}
15958
15959
15960void m68000_base_device_ops::m68k_op_lsl_16_al(m68000_base_device* mc68kcpu)
15961{
15962   UINT32 ea = EA_AL_16(mc68kcpu);
15963   UINT32 src = m68ki_read_16((mc68kcpu), ea);
15964   UINT32 res = MASK_OUT_ABOVE_16(src << 1);
15965
15966   m68ki_write_16((mc68kcpu), ea, res);
15967
15968   (mc68kcpu)->n_flag = NFLAG_16(res);
15969   (mc68kcpu)->not_z_flag = res;
15970   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
15971   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15972}
15973
15974
15975void m68000_base_device_ops::m68k_op_move_8_d_d(m68000_base_device* mc68kcpu)
15976{
15977   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
15978   UINT32* r_dst = &DX(mc68kcpu);
15979
15980   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15981
15982   (mc68kcpu)->n_flag = NFLAG_8(res);
15983   (mc68kcpu)->not_z_flag = res;
15984   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15985   (mc68kcpu)->c_flag = CFLAG_CLEAR;
15986}
15987
15988
15989void m68000_base_device_ops::m68k_op_move_8_d_ai(m68000_base_device* mc68kcpu)
15990{
15991   UINT32 res = OPER_AY_AI_8(mc68kcpu);
15992   UINT32* r_dst = &DX(mc68kcpu);
15993
15994   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
15995
15996   (mc68kcpu)->n_flag = NFLAG_8(res);
15997   (mc68kcpu)->not_z_flag = res;
15998   (mc68kcpu)->v_flag = VFLAG_CLEAR;
15999   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16000}
16001
16002
16003void m68000_base_device_ops::m68k_op_move_8_d_pi(m68000_base_device* mc68kcpu)
16004{
16005   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16006   UINT32* r_dst = &DX(mc68kcpu);
16007
16008   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16009
16010   (mc68kcpu)->n_flag = NFLAG_8(res);
16011   (mc68kcpu)->not_z_flag = res;
16012   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16013   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16014}
16015
16016
16017void m68000_base_device_ops::m68k_op_move_8_d_pi7(m68000_base_device* mc68kcpu)
16018{
16019   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16020   UINT32* r_dst = &DX(mc68kcpu);
16021
16022   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16023
16024   (mc68kcpu)->n_flag = NFLAG_8(res);
16025   (mc68kcpu)->not_z_flag = res;
16026   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16027   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16028}
16029
16030
16031void m68000_base_device_ops::m68k_op_move_8_d_pd(m68000_base_device* mc68kcpu)
16032{
16033   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16034   UINT32* r_dst = &DX(mc68kcpu);
16035
16036   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16037
16038   (mc68kcpu)->n_flag = NFLAG_8(res);
16039   (mc68kcpu)->not_z_flag = res;
16040   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16041   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16042}
16043
16044
16045void m68000_base_device_ops::m68k_op_move_8_d_pd7(m68000_base_device* mc68kcpu)
16046{
16047   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16048   UINT32* r_dst = &DX(mc68kcpu);
16049
16050   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16051
16052   (mc68kcpu)->n_flag = NFLAG_8(res);
16053   (mc68kcpu)->not_z_flag = res;
16054   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16055   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16056}
16057
16058
16059void m68000_base_device_ops::m68k_op_move_8_d_di(m68000_base_device* mc68kcpu)
16060{
16061   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16062   UINT32* r_dst = &DX(mc68kcpu);
16063
16064   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16065
16066   (mc68kcpu)->n_flag = NFLAG_8(res);
16067   (mc68kcpu)->not_z_flag = res;
16068   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16069   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16070}
16071
16072
16073void m68000_base_device_ops::m68k_op_move_8_d_ix(m68000_base_device* mc68kcpu)
16074{
16075   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16076   UINT32* r_dst = &DX(mc68kcpu);
16077
16078   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16079
16080   (mc68kcpu)->n_flag = NFLAG_8(res);
16081   (mc68kcpu)->not_z_flag = res;
16082   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16083   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16084}
16085
16086
16087void m68000_base_device_ops::m68k_op_move_8_d_aw(m68000_base_device* mc68kcpu)
16088{
16089   UINT32 res = OPER_AW_8(mc68kcpu);
16090   UINT32* r_dst = &DX(mc68kcpu);
16091
16092   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16093
16094   (mc68kcpu)->n_flag = NFLAG_8(res);
16095   (mc68kcpu)->not_z_flag = res;
16096   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16097   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16098}
16099
16100
16101void m68000_base_device_ops::m68k_op_move_8_d_al(m68000_base_device* mc68kcpu)
16102{
16103   UINT32 res = OPER_AL_8(mc68kcpu);
16104   UINT32* r_dst = &DX(mc68kcpu);
16105
16106   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16107
16108   (mc68kcpu)->n_flag = NFLAG_8(res);
16109   (mc68kcpu)->not_z_flag = res;
16110   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16111   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16112}
16113
16114
16115void m68000_base_device_ops::m68k_op_move_8_d_pcdi(m68000_base_device* mc68kcpu)
16116{
16117   UINT32 res = OPER_PCDI_8(mc68kcpu);
16118   UINT32* r_dst = &DX(mc68kcpu);
16119
16120   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16121
16122   (mc68kcpu)->n_flag = NFLAG_8(res);
16123   (mc68kcpu)->not_z_flag = res;
16124   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16125   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16126}
16127
16128
16129void m68000_base_device_ops::m68k_op_move_8_d_pcix(m68000_base_device* mc68kcpu)
16130{
16131   UINT32 res = OPER_PCIX_8(mc68kcpu);
16132   UINT32* r_dst = &DX(mc68kcpu);
16133
16134   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16135
16136   (mc68kcpu)->n_flag = NFLAG_8(res);
16137   (mc68kcpu)->not_z_flag = res;
16138   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16139   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16140}
16141
16142
16143void m68000_base_device_ops::m68k_op_move_8_d_i(m68000_base_device* mc68kcpu)
16144{
16145   UINT32 res = OPER_I_8(mc68kcpu);
16146   UINT32* r_dst = &DX(mc68kcpu);
16147
16148   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
16149
16150   (mc68kcpu)->n_flag = NFLAG_8(res);
16151   (mc68kcpu)->not_z_flag = res;
16152   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16153   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16154}
16155
16156
16157void m68000_base_device_ops::m68k_op_move_8_ai_d(m68000_base_device* mc68kcpu)
16158{
16159   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
16160   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16161
16162   m68ki_write_8((mc68kcpu), ea, res);
16163
16164   (mc68kcpu)->n_flag = NFLAG_8(res);
16165   (mc68kcpu)->not_z_flag = res;
16166   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16167   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16168}
16169
16170
16171void m68000_base_device_ops::m68k_op_move_8_ai_ai(m68000_base_device* mc68kcpu)
16172{
16173   UINT32 res = OPER_AY_AI_8(mc68kcpu);
16174   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16175
16176   m68ki_write_8((mc68kcpu), ea, res);
16177
16178   (mc68kcpu)->n_flag = NFLAG_8(res);
16179   (mc68kcpu)->not_z_flag = res;
16180   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16181   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16182}
16183
16184
16185void m68000_base_device_ops::m68k_op_move_8_ai_pi(m68000_base_device* mc68kcpu)
16186{
16187   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16188   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16189
16190   m68ki_write_8((mc68kcpu), ea, res);
16191
16192   (mc68kcpu)->n_flag = NFLAG_8(res);
16193   (mc68kcpu)->not_z_flag = res;
16194   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16195   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16196}
16197
16198
16199void m68000_base_device_ops::m68k_op_move_8_ai_pi7(m68000_base_device* mc68kcpu)
16200{
16201   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16202   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16203
16204   m68ki_write_8((mc68kcpu), ea, res);
16205
16206   (mc68kcpu)->n_flag = NFLAG_8(res);
16207   (mc68kcpu)->not_z_flag = res;
16208   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16209   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16210}
16211
16212
16213void m68000_base_device_ops::m68k_op_move_8_ai_pd(m68000_base_device* mc68kcpu)
16214{
16215   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16216   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16217
16218   m68ki_write_8((mc68kcpu), ea, res);
16219
16220   (mc68kcpu)->n_flag = NFLAG_8(res);
16221   (mc68kcpu)->not_z_flag = res;
16222   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16223   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16224}
16225
16226
16227void m68000_base_device_ops::m68k_op_move_8_ai_pd7(m68000_base_device* mc68kcpu)
16228{
16229   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16230   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16231
16232   m68ki_write_8((mc68kcpu), ea, res);
16233
16234   (mc68kcpu)->n_flag = NFLAG_8(res);
16235   (mc68kcpu)->not_z_flag = res;
16236   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16237   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16238}
16239
16240
16241void m68000_base_device_ops::m68k_op_move_8_ai_di(m68000_base_device* mc68kcpu)
16242{
16243   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16244   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16245
16246   m68ki_write_8((mc68kcpu), ea, res);
16247
16248   (mc68kcpu)->n_flag = NFLAG_8(res);
16249   (mc68kcpu)->not_z_flag = res;
16250   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16251   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16252}
16253
16254
16255void m68000_base_device_ops::m68k_op_move_8_ai_ix(m68000_base_device* mc68kcpu)
16256{
16257   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16258   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16259
16260   m68ki_write_8((mc68kcpu), ea, res);
16261
16262   (mc68kcpu)->n_flag = NFLAG_8(res);
16263   (mc68kcpu)->not_z_flag = res;
16264   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16265   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16266}
16267
16268
16269void m68000_base_device_ops::m68k_op_move_8_ai_aw(m68000_base_device* mc68kcpu)
16270{
16271   UINT32 res = OPER_AW_8(mc68kcpu);
16272   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16273
16274   m68ki_write_8((mc68kcpu), ea, res);
16275
16276   (mc68kcpu)->n_flag = NFLAG_8(res);
16277   (mc68kcpu)->not_z_flag = res;
16278   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16279   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16280}
16281
16282
16283void m68000_base_device_ops::m68k_op_move_8_ai_al(m68000_base_device* mc68kcpu)
16284{
16285   UINT32 res = OPER_AL_8(mc68kcpu);
16286   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16287
16288   m68ki_write_8((mc68kcpu), ea, res);
16289
16290   (mc68kcpu)->n_flag = NFLAG_8(res);
16291   (mc68kcpu)->not_z_flag = res;
16292   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16293   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16294}
16295
16296
16297void m68000_base_device_ops::m68k_op_move_8_ai_pcdi(m68000_base_device* mc68kcpu)
16298{
16299   UINT32 res = OPER_PCDI_8(mc68kcpu);
16300   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16301
16302   m68ki_write_8((mc68kcpu), ea, res);
16303
16304   (mc68kcpu)->n_flag = NFLAG_8(res);
16305   (mc68kcpu)->not_z_flag = res;
16306   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16307   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16308}
16309
16310
16311void m68000_base_device_ops::m68k_op_move_8_ai_pcix(m68000_base_device* mc68kcpu)
16312{
16313   UINT32 res = OPER_PCIX_8(mc68kcpu);
16314   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16315
16316   m68ki_write_8((mc68kcpu), ea, res);
16317
16318   (mc68kcpu)->n_flag = NFLAG_8(res);
16319   (mc68kcpu)->not_z_flag = res;
16320   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16321   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16322}
16323
16324
16325void m68000_base_device_ops::m68k_op_move_8_ai_i(m68000_base_device* mc68kcpu)
16326{
16327   UINT32 res = OPER_I_8(mc68kcpu);
16328   UINT32 ea = EA_AX_AI_8(mc68kcpu);
16329
16330   m68ki_write_8((mc68kcpu), ea, res);
16331
16332   (mc68kcpu)->n_flag = NFLAG_8(res);
16333   (mc68kcpu)->not_z_flag = res;
16334   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16335   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16336}
16337
16338
16339void m68000_base_device_ops::m68k_op_move_8_pi7_d(m68000_base_device* mc68kcpu)
16340{
16341   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
16342   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16343
16344   m68ki_write_8((mc68kcpu), ea, res);
16345
16346   (mc68kcpu)->n_flag = NFLAG_8(res);
16347   (mc68kcpu)->not_z_flag = res;
16348   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16349   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16350}
16351
16352
16353void m68000_base_device_ops::m68k_op_move_8_pi_d(m68000_base_device* mc68kcpu)
16354{
16355   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
16356   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16357
16358   m68ki_write_8((mc68kcpu), ea, res);
16359
16360   (mc68kcpu)->n_flag = NFLAG_8(res);
16361   (mc68kcpu)->not_z_flag = res;
16362   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16363   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16364}
16365
16366
16367void m68000_base_device_ops::m68k_op_move_8_pi7_ai(m68000_base_device* mc68kcpu)
16368{
16369   UINT32 res = OPER_AY_AI_8(mc68kcpu);
16370   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16371
16372   m68ki_write_8((mc68kcpu), ea, res);
16373
16374   (mc68kcpu)->n_flag = NFLAG_8(res);
16375   (mc68kcpu)->not_z_flag = res;
16376   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16377   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16378}
16379
16380
16381void m68000_base_device_ops::m68k_op_move_8_pi7_pi(m68000_base_device* mc68kcpu)
16382{
16383   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16384   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16385
16386   m68ki_write_8((mc68kcpu), ea, res);
16387
16388   (mc68kcpu)->n_flag = NFLAG_8(res);
16389   (mc68kcpu)->not_z_flag = res;
16390   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16391   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16392}
16393
16394
16395void m68000_base_device_ops::m68k_op_move_8_pi7_pi7(m68000_base_device* mc68kcpu)
16396{
16397   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16398   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16399
16400   m68ki_write_8((mc68kcpu), ea, res);
16401
16402   (mc68kcpu)->n_flag = NFLAG_8(res);
16403   (mc68kcpu)->not_z_flag = res;
16404   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16405   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16406}
16407
16408
16409void m68000_base_device_ops::m68k_op_move_8_pi7_pd(m68000_base_device* mc68kcpu)
16410{
16411   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16412   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16413
16414   m68ki_write_8((mc68kcpu), ea, res);
16415
16416   (mc68kcpu)->n_flag = NFLAG_8(res);
16417   (mc68kcpu)->not_z_flag = res;
16418   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16419   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16420}
16421
16422
16423void m68000_base_device_ops::m68k_op_move_8_pi7_pd7(m68000_base_device* mc68kcpu)
16424{
16425   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16426   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16427
16428   m68ki_write_8((mc68kcpu), ea, res);
16429
16430   (mc68kcpu)->n_flag = NFLAG_8(res);
16431   (mc68kcpu)->not_z_flag = res;
16432   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16433   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16434}
16435
16436
16437void m68000_base_device_ops::m68k_op_move_8_pi7_di(m68000_base_device* mc68kcpu)
16438{
16439   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16440   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16441
16442   m68ki_write_8((mc68kcpu), ea, res);
16443
16444   (mc68kcpu)->n_flag = NFLAG_8(res);
16445   (mc68kcpu)->not_z_flag = res;
16446   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16447   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16448}
16449
16450
16451void m68000_base_device_ops::m68k_op_move_8_pi7_ix(m68000_base_device* mc68kcpu)
16452{
16453   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16454   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16455
16456   m68ki_write_8((mc68kcpu), ea, res);
16457
16458   (mc68kcpu)->n_flag = NFLAG_8(res);
16459   (mc68kcpu)->not_z_flag = res;
16460   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16461   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16462}
16463
16464
16465void m68000_base_device_ops::m68k_op_move_8_pi7_aw(m68000_base_device* mc68kcpu)
16466{
16467   UINT32 res = OPER_AW_8(mc68kcpu);
16468   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16469
16470   m68ki_write_8((mc68kcpu), ea, res);
16471
16472   (mc68kcpu)->n_flag = NFLAG_8(res);
16473   (mc68kcpu)->not_z_flag = res;
16474   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16475   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16476}
16477
16478
16479void m68000_base_device_ops::m68k_op_move_8_pi7_al(m68000_base_device* mc68kcpu)
16480{
16481   UINT32 res = OPER_AL_8(mc68kcpu);
16482   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16483
16484   m68ki_write_8((mc68kcpu), ea, res);
16485
16486   (mc68kcpu)->n_flag = NFLAG_8(res);
16487   (mc68kcpu)->not_z_flag = res;
16488   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16489   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16490}
16491
16492
16493void m68000_base_device_ops::m68k_op_move_8_pi7_pcdi(m68000_base_device* mc68kcpu)
16494{
16495   UINT32 res = OPER_PCDI_8(mc68kcpu);
16496   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16497
16498   m68ki_write_8((mc68kcpu), ea, res);
16499
16500   (mc68kcpu)->n_flag = NFLAG_8(res);
16501   (mc68kcpu)->not_z_flag = res;
16502   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16503   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16504}
16505
16506
16507void m68000_base_device_ops::m68k_op_move_8_pi7_pcix(m68000_base_device* mc68kcpu)
16508{
16509   UINT32 res = OPER_PCIX_8(mc68kcpu);
16510   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16511
16512   m68ki_write_8((mc68kcpu), ea, res);
16513
16514   (mc68kcpu)->n_flag = NFLAG_8(res);
16515   (mc68kcpu)->not_z_flag = res;
16516   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16517   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16518}
16519
16520
16521void m68000_base_device_ops::m68k_op_move_8_pi7_i(m68000_base_device* mc68kcpu)
16522{
16523   UINT32 res = OPER_I_8(mc68kcpu);
16524   UINT32 ea = EA_A7_PI_8(mc68kcpu);
16525
16526   m68ki_write_8((mc68kcpu), ea, res);
16527
16528   (mc68kcpu)->n_flag = NFLAG_8(res);
16529   (mc68kcpu)->not_z_flag = res;
16530   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16531   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16532}
16533
16534
16535void m68000_base_device_ops::m68k_op_move_8_pi_ai(m68000_base_device* mc68kcpu)
16536{
16537   UINT32 res = OPER_AY_AI_8(mc68kcpu);
16538   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16539
16540   m68ki_write_8((mc68kcpu), ea, res);
16541
16542   (mc68kcpu)->n_flag = NFLAG_8(res);
16543   (mc68kcpu)->not_z_flag = res;
16544   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16545   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16546}
16547
16548
16549void m68000_base_device_ops::m68k_op_move_8_pi_pi(m68000_base_device* mc68kcpu)
16550{
16551   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16552   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16553
16554   m68ki_write_8((mc68kcpu), ea, res);
16555
16556   (mc68kcpu)->n_flag = NFLAG_8(res);
16557   (mc68kcpu)->not_z_flag = res;
16558   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16559   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16560}
16561
16562
16563void m68000_base_device_ops::m68k_op_move_8_pi_pi7(m68000_base_device* mc68kcpu)
16564{
16565   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16566   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16567
16568   m68ki_write_8((mc68kcpu), ea, res);
16569
16570   (mc68kcpu)->n_flag = NFLAG_8(res);
16571   (mc68kcpu)->not_z_flag = res;
16572   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16573   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16574}
16575
16576
16577void m68000_base_device_ops::m68k_op_move_8_pi_pd(m68000_base_device* mc68kcpu)
16578{
16579   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16580   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16581
16582   m68ki_write_8((mc68kcpu), ea, res);
16583
16584   (mc68kcpu)->n_flag = NFLAG_8(res);
16585   (mc68kcpu)->not_z_flag = res;
16586   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16587   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16588}
16589
16590
16591void m68000_base_device_ops::m68k_op_move_8_pi_pd7(m68000_base_device* mc68kcpu)
16592{
16593   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16594   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16595
16596   m68ki_write_8((mc68kcpu), ea, res);
16597
16598   (mc68kcpu)->n_flag = NFLAG_8(res);
16599   (mc68kcpu)->not_z_flag = res;
16600   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16601   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16602}
16603
16604
16605void m68000_base_device_ops::m68k_op_move_8_pi_di(m68000_base_device* mc68kcpu)
16606{
16607   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16608   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16609
16610   m68ki_write_8((mc68kcpu), ea, res);
16611
16612   (mc68kcpu)->n_flag = NFLAG_8(res);
16613   (mc68kcpu)->not_z_flag = res;
16614   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16615   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16616}
16617
16618
16619void m68000_base_device_ops::m68k_op_move_8_pi_ix(m68000_base_device* mc68kcpu)
16620{
16621   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16622   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16623
16624   m68ki_write_8((mc68kcpu), ea, res);
16625
16626   (mc68kcpu)->n_flag = NFLAG_8(res);
16627   (mc68kcpu)->not_z_flag = res;
16628   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16629   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16630}
16631
16632
16633void m68000_base_device_ops::m68k_op_move_8_pi_aw(m68000_base_device* mc68kcpu)
16634{
16635   UINT32 res = OPER_AW_8(mc68kcpu);
16636   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16637
16638   m68ki_write_8((mc68kcpu), ea, res);
16639
16640   (mc68kcpu)->n_flag = NFLAG_8(res);
16641   (mc68kcpu)->not_z_flag = res;
16642   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16643   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16644}
16645
16646
16647void m68000_base_device_ops::m68k_op_move_8_pi_al(m68000_base_device* mc68kcpu)
16648{
16649   UINT32 res = OPER_AL_8(mc68kcpu);
16650   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16651
16652   m68ki_write_8((mc68kcpu), ea, res);
16653
16654   (mc68kcpu)->n_flag = NFLAG_8(res);
16655   (mc68kcpu)->not_z_flag = res;
16656   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16657   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16658}
16659
16660
16661void m68000_base_device_ops::m68k_op_move_8_pi_pcdi(m68000_base_device* mc68kcpu)
16662{
16663   UINT32 res = OPER_PCDI_8(mc68kcpu);
16664   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16665
16666   m68ki_write_8((mc68kcpu), ea, res);
16667
16668   (mc68kcpu)->n_flag = NFLAG_8(res);
16669   (mc68kcpu)->not_z_flag = res;
16670   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16671   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16672}
16673
16674
16675void m68000_base_device_ops::m68k_op_move_8_pi_pcix(m68000_base_device* mc68kcpu)
16676{
16677   UINT32 res = OPER_PCIX_8(mc68kcpu);
16678   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16679
16680   m68ki_write_8((mc68kcpu), ea, res);
16681
16682   (mc68kcpu)->n_flag = NFLAG_8(res);
16683   (mc68kcpu)->not_z_flag = res;
16684   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16685   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16686}
16687
16688
16689void m68000_base_device_ops::m68k_op_move_8_pi_i(m68000_base_device* mc68kcpu)
16690{
16691   UINT32 res = OPER_I_8(mc68kcpu);
16692   UINT32 ea = EA_AX_PI_8(mc68kcpu);
16693
16694   m68ki_write_8((mc68kcpu), ea, res);
16695
16696   (mc68kcpu)->n_flag = NFLAG_8(res);
16697   (mc68kcpu)->not_z_flag = res;
16698   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16699   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16700}
16701
16702
16703void m68000_base_device_ops::m68k_op_move_8_pd7_d(m68000_base_device* mc68kcpu)
16704{
16705   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
16706   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16707
16708   m68ki_write_8((mc68kcpu), ea, res);
16709
16710   (mc68kcpu)->n_flag = NFLAG_8(res);
16711   (mc68kcpu)->not_z_flag = res;
16712   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16713   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16714}
16715
16716
16717void m68000_base_device_ops::m68k_op_move_8_pd_d(m68000_base_device* mc68kcpu)
16718{
16719   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
16720   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16721
16722   m68ki_write_8((mc68kcpu), ea, res);
16723
16724   (mc68kcpu)->n_flag = NFLAG_8(res);
16725   (mc68kcpu)->not_z_flag = res;
16726   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16727   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16728}
16729
16730
16731void m68000_base_device_ops::m68k_op_move_8_pd7_ai(m68000_base_device* mc68kcpu)
16732{
16733   UINT32 res = OPER_AY_AI_8(mc68kcpu);
16734   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16735
16736   m68ki_write_8((mc68kcpu), ea, res);
16737
16738   (mc68kcpu)->n_flag = NFLAG_8(res);
16739   (mc68kcpu)->not_z_flag = res;
16740   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16741   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16742}
16743
16744
16745void m68000_base_device_ops::m68k_op_move_8_pd7_pi(m68000_base_device* mc68kcpu)
16746{
16747   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16748   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16749
16750   m68ki_write_8((mc68kcpu), ea, res);
16751
16752   (mc68kcpu)->n_flag = NFLAG_8(res);
16753   (mc68kcpu)->not_z_flag = res;
16754   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16755   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16756}
16757
16758
16759void m68000_base_device_ops::m68k_op_move_8_pd7_pi7(m68000_base_device* mc68kcpu)
16760{
16761   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16762   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16763
16764   m68ki_write_8((mc68kcpu), ea, res);
16765
16766   (mc68kcpu)->n_flag = NFLAG_8(res);
16767   (mc68kcpu)->not_z_flag = res;
16768   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16769   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16770}
16771
16772
16773void m68000_base_device_ops::m68k_op_move_8_pd7_pd(m68000_base_device* mc68kcpu)
16774{
16775   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16776   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16777
16778   m68ki_write_8((mc68kcpu), ea, res);
16779
16780   (mc68kcpu)->n_flag = NFLAG_8(res);
16781   (mc68kcpu)->not_z_flag = res;
16782   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16783   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16784}
16785
16786
16787void m68000_base_device_ops::m68k_op_move_8_pd7_pd7(m68000_base_device* mc68kcpu)
16788{
16789   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16790   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16791
16792   m68ki_write_8((mc68kcpu), ea, res);
16793
16794   (mc68kcpu)->n_flag = NFLAG_8(res);
16795   (mc68kcpu)->not_z_flag = res;
16796   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16797   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16798}
16799
16800
16801void m68000_base_device_ops::m68k_op_move_8_pd7_di(m68000_base_device* mc68kcpu)
16802{
16803   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16804   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16805
16806   m68ki_write_8((mc68kcpu), ea, res);
16807
16808   (mc68kcpu)->n_flag = NFLAG_8(res);
16809   (mc68kcpu)->not_z_flag = res;
16810   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16811   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16812}
16813
16814
16815void m68000_base_device_ops::m68k_op_move_8_pd7_ix(m68000_base_device* mc68kcpu)
16816{
16817   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16818   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16819
16820   m68ki_write_8((mc68kcpu), ea, res);
16821
16822   (mc68kcpu)->n_flag = NFLAG_8(res);
16823   (mc68kcpu)->not_z_flag = res;
16824   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16825   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16826}
16827
16828
16829void m68000_base_device_ops::m68k_op_move_8_pd7_aw(m68000_base_device* mc68kcpu)
16830{
16831   UINT32 res = OPER_AW_8(mc68kcpu);
16832   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16833
16834   m68ki_write_8((mc68kcpu), ea, res);
16835
16836   (mc68kcpu)->n_flag = NFLAG_8(res);
16837   (mc68kcpu)->not_z_flag = res;
16838   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16839   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16840}
16841
16842
16843void m68000_base_device_ops::m68k_op_move_8_pd7_al(m68000_base_device* mc68kcpu)
16844{
16845   UINT32 res = OPER_AL_8(mc68kcpu);
16846   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16847
16848   m68ki_write_8((mc68kcpu), ea, res);
16849
16850   (mc68kcpu)->n_flag = NFLAG_8(res);
16851   (mc68kcpu)->not_z_flag = res;
16852   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16853   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16854}
16855
16856
16857void m68000_base_device_ops::m68k_op_move_8_pd7_pcdi(m68000_base_device* mc68kcpu)
16858{
16859   UINT32 res = OPER_PCDI_8(mc68kcpu);
16860   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16861
16862   m68ki_write_8((mc68kcpu), ea, res);
16863
16864   (mc68kcpu)->n_flag = NFLAG_8(res);
16865   (mc68kcpu)->not_z_flag = res;
16866   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16867   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16868}
16869
16870
16871void m68000_base_device_ops::m68k_op_move_8_pd7_pcix(m68000_base_device* mc68kcpu)
16872{
16873   UINT32 res = OPER_PCIX_8(mc68kcpu);
16874   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16875
16876   m68ki_write_8((mc68kcpu), ea, res);
16877
16878   (mc68kcpu)->n_flag = NFLAG_8(res);
16879   (mc68kcpu)->not_z_flag = res;
16880   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16881   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16882}
16883
16884
16885void m68000_base_device_ops::m68k_op_move_8_pd7_i(m68000_base_device* mc68kcpu)
16886{
16887   UINT32 res = OPER_I_8(mc68kcpu);
16888   UINT32 ea = EA_A7_PD_8(mc68kcpu);
16889
16890   m68ki_write_8((mc68kcpu), ea, res);
16891
16892   (mc68kcpu)->n_flag = NFLAG_8(res);
16893   (mc68kcpu)->not_z_flag = res;
16894   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16895   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16896}
16897
16898
16899void m68000_base_device_ops::m68k_op_move_8_pd_ai(m68000_base_device* mc68kcpu)
16900{
16901   UINT32 res = OPER_AY_AI_8(mc68kcpu);
16902   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16903
16904   m68ki_write_8((mc68kcpu), ea, res);
16905
16906   (mc68kcpu)->n_flag = NFLAG_8(res);
16907   (mc68kcpu)->not_z_flag = res;
16908   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16909   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16910}
16911
16912
16913void m68000_base_device_ops::m68k_op_move_8_pd_pi(m68000_base_device* mc68kcpu)
16914{
16915   UINT32 res = OPER_AY_PI_8(mc68kcpu);
16916   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16917
16918   m68ki_write_8((mc68kcpu), ea, res);
16919
16920   (mc68kcpu)->n_flag = NFLAG_8(res);
16921   (mc68kcpu)->not_z_flag = res;
16922   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16923   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16924}
16925
16926
16927void m68000_base_device_ops::m68k_op_move_8_pd_pi7(m68000_base_device* mc68kcpu)
16928{
16929   UINT32 res = OPER_A7_PI_8(mc68kcpu);
16930   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16931
16932   m68ki_write_8((mc68kcpu), ea, res);
16933
16934   (mc68kcpu)->n_flag = NFLAG_8(res);
16935   (mc68kcpu)->not_z_flag = res;
16936   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16937   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16938}
16939
16940
16941void m68000_base_device_ops::m68k_op_move_8_pd_pd(m68000_base_device* mc68kcpu)
16942{
16943   UINT32 res = OPER_AY_PD_8(mc68kcpu);
16944   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16945
16946   m68ki_write_8((mc68kcpu), ea, res);
16947
16948   (mc68kcpu)->n_flag = NFLAG_8(res);
16949   (mc68kcpu)->not_z_flag = res;
16950   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16951   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16952}
16953
16954
16955void m68000_base_device_ops::m68k_op_move_8_pd_pd7(m68000_base_device* mc68kcpu)
16956{
16957   UINT32 res = OPER_A7_PD_8(mc68kcpu);
16958   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16959
16960   m68ki_write_8((mc68kcpu), ea, res);
16961
16962   (mc68kcpu)->n_flag = NFLAG_8(res);
16963   (mc68kcpu)->not_z_flag = res;
16964   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16965   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16966}
16967
16968
16969void m68000_base_device_ops::m68k_op_move_8_pd_di(m68000_base_device* mc68kcpu)
16970{
16971   UINT32 res = OPER_AY_DI_8(mc68kcpu);
16972   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16973
16974   m68ki_write_8((mc68kcpu), ea, res);
16975
16976   (mc68kcpu)->n_flag = NFLAG_8(res);
16977   (mc68kcpu)->not_z_flag = res;
16978   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16979   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16980}
16981
16982
16983void m68000_base_device_ops::m68k_op_move_8_pd_ix(m68000_base_device* mc68kcpu)
16984{
16985   UINT32 res = OPER_AY_IX_8(mc68kcpu);
16986   UINT32 ea = EA_AX_PD_8(mc68kcpu);
16987
16988   m68ki_write_8((mc68kcpu), ea, res);
16989
16990   (mc68kcpu)->n_flag = NFLAG_8(res);
16991   (mc68kcpu)->not_z_flag = res;
16992   (mc68kcpu)->v_flag = VFLAG_CLEAR;
16993   (mc68kcpu)->c_flag = CFLAG_CLEAR;
16994}
16995
16996
16997void m68000_base_device_ops::m68k_op_move_8_pd_aw(m68000_base_device* mc68kcpu)
16998{
16999   UINT32 res = OPER_AW_8(mc68kcpu);
17000   UINT32 ea = EA_AX_PD_8(mc68kcpu);
17001
17002   m68ki_write_8((mc68kcpu), ea, res);
17003
17004   (mc68kcpu)->n_flag = NFLAG_8(res);
17005   (mc68kcpu)->not_z_flag = res;
17006   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17007   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17008}
17009
17010
17011void m68000_base_device_ops::m68k_op_move_8_pd_al(m68000_base_device* mc68kcpu)
17012{
17013   UINT32 res = OPER_AL_8(mc68kcpu);
17014   UINT32 ea = EA_AX_PD_8(mc68kcpu);
17015
17016   m68ki_write_8((mc68kcpu), ea, res);
17017
17018   (mc68kcpu)->n_flag = NFLAG_8(res);
17019   (mc68kcpu)->not_z_flag = res;
17020   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17021   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17022}
17023
17024
17025void m68000_base_device_ops::m68k_op_move_8_pd_pcdi(m68000_base_device* mc68kcpu)
17026{
17027   UINT32 res = OPER_PCDI_8(mc68kcpu);
17028   UINT32 ea = EA_AX_PD_8(mc68kcpu);
17029
17030   m68ki_write_8((mc68kcpu), ea, res);
17031
17032   (mc68kcpu)->n_flag = NFLAG_8(res);
17033   (mc68kcpu)->not_z_flag = res;
17034   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17035   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17036}
17037
17038
17039void m68000_base_device_ops::m68k_op_move_8_pd_pcix(m68000_base_device* mc68kcpu)
17040{
17041   UINT32 res = OPER_PCIX_8(mc68kcpu);
17042   UINT32 ea = EA_AX_PD_8(mc68kcpu);
17043
17044   m68ki_write_8((mc68kcpu), ea, res);
17045
17046   (mc68kcpu)->n_flag = NFLAG_8(res);
17047   (mc68kcpu)->not_z_flag = res;
17048   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17049   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17050}
17051
17052
17053void m68000_base_device_ops::m68k_op_move_8_pd_i(m68000_base_device* mc68kcpu)
17054{
17055   UINT32 res = OPER_I_8(mc68kcpu);
17056   UINT32 ea = EA_AX_PD_8(mc68kcpu);
17057
17058   m68ki_write_8((mc68kcpu), ea, res);
17059
17060   (mc68kcpu)->n_flag = NFLAG_8(res);
17061   (mc68kcpu)->not_z_flag = res;
17062   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17063   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17064}
17065
17066
17067void m68000_base_device_ops::m68k_op_move_8_di_d(m68000_base_device* mc68kcpu)
17068{
17069   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
17070   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17071
17072   m68ki_write_8((mc68kcpu), ea, res);
17073
17074   (mc68kcpu)->n_flag = NFLAG_8(res);
17075   (mc68kcpu)->not_z_flag = res;
17076   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17077   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17078}
17079
17080
17081void m68000_base_device_ops::m68k_op_move_8_di_ai(m68000_base_device* mc68kcpu)
17082{
17083   UINT32 res = OPER_AY_AI_8(mc68kcpu);
17084   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17085
17086   m68ki_write_8((mc68kcpu), ea, res);
17087
17088   (mc68kcpu)->n_flag = NFLAG_8(res);
17089   (mc68kcpu)->not_z_flag = res;
17090   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17091   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17092}
17093
17094
17095void m68000_base_device_ops::m68k_op_move_8_di_pi(m68000_base_device* mc68kcpu)
17096{
17097   UINT32 res = OPER_AY_PI_8(mc68kcpu);
17098   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17099
17100   m68ki_write_8((mc68kcpu), ea, res);
17101
17102   (mc68kcpu)->n_flag = NFLAG_8(res);
17103   (mc68kcpu)->not_z_flag = res;
17104   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17105   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17106}
17107
17108
17109void m68000_base_device_ops::m68k_op_move_8_di_pi7(m68000_base_device* mc68kcpu)
17110{
17111   UINT32 res = OPER_A7_PI_8(mc68kcpu);
17112   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17113
17114   m68ki_write_8((mc68kcpu), ea, res);
17115
17116   (mc68kcpu)->n_flag = NFLAG_8(res);
17117   (mc68kcpu)->not_z_flag = res;
17118   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17119   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17120}
17121
17122
17123void m68000_base_device_ops::m68k_op_move_8_di_pd(m68000_base_device* mc68kcpu)
17124{
17125   UINT32 res = OPER_AY_PD_8(mc68kcpu);
17126   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17127
17128   m68ki_write_8((mc68kcpu), ea, res);
17129
17130   (mc68kcpu)->n_flag = NFLAG_8(res);
17131   (mc68kcpu)->not_z_flag = res;
17132   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17133   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17134}
17135
17136
17137void m68000_base_device_ops::m68k_op_move_8_di_pd7(m68000_base_device* mc68kcpu)
17138{
17139   UINT32 res = OPER_A7_PD_8(mc68kcpu);
17140   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17141
17142   m68ki_write_8((mc68kcpu), ea, res);
17143
17144   (mc68kcpu)->n_flag = NFLAG_8(res);
17145   (mc68kcpu)->not_z_flag = res;
17146   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17147   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17148}
17149
17150
17151void m68000_base_device_ops::m68k_op_move_8_di_di(m68000_base_device* mc68kcpu)
17152{
17153   UINT32 res = OPER_AY_DI_8(mc68kcpu);
17154   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17155
17156   m68ki_write_8((mc68kcpu), ea, res);
17157
17158   (mc68kcpu)->n_flag = NFLAG_8(res);
17159   (mc68kcpu)->not_z_flag = res;
17160   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17161   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17162}
17163
17164
17165void m68000_base_device_ops::m68k_op_move_8_di_ix(m68000_base_device* mc68kcpu)
17166{
17167   UINT32 res = OPER_AY_IX_8(mc68kcpu);
17168   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17169
17170   m68ki_write_8((mc68kcpu), ea, res);
17171
17172   (mc68kcpu)->n_flag = NFLAG_8(res);
17173   (mc68kcpu)->not_z_flag = res;
17174   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17175   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17176}
17177
17178
17179void m68000_base_device_ops::m68k_op_move_8_di_aw(m68000_base_device* mc68kcpu)
17180{
17181   UINT32 res = OPER_AW_8(mc68kcpu);
17182   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17183
17184   m68ki_write_8((mc68kcpu), ea, res);
17185
17186   (mc68kcpu)->n_flag = NFLAG_8(res);
17187   (mc68kcpu)->not_z_flag = res;
17188   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17189   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17190}
17191
17192
17193void m68000_base_device_ops::m68k_op_move_8_di_al(m68000_base_device* mc68kcpu)
17194{
17195   UINT32 res = OPER_AL_8(mc68kcpu);
17196   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17197
17198   m68ki_write_8((mc68kcpu), ea, res);
17199
17200   (mc68kcpu)->n_flag = NFLAG_8(res);
17201   (mc68kcpu)->not_z_flag = res;
17202   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17203   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17204}
17205
17206
17207void m68000_base_device_ops::m68k_op_move_8_di_pcdi(m68000_base_device* mc68kcpu)
17208{
17209   UINT32 res = OPER_PCDI_8(mc68kcpu);
17210   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17211
17212   m68ki_write_8((mc68kcpu), ea, res);
17213
17214   (mc68kcpu)->n_flag = NFLAG_8(res);
17215   (mc68kcpu)->not_z_flag = res;
17216   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17217   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17218}
17219
17220
17221void m68000_base_device_ops::m68k_op_move_8_di_pcix(m68000_base_device* mc68kcpu)
17222{
17223   UINT32 res = OPER_PCIX_8(mc68kcpu);
17224   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17225
17226   m68ki_write_8((mc68kcpu), ea, res);
17227
17228   (mc68kcpu)->n_flag = NFLAG_8(res);
17229   (mc68kcpu)->not_z_flag = res;
17230   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17231   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17232}
17233
17234
17235void m68000_base_device_ops::m68k_op_move_8_di_i(m68000_base_device* mc68kcpu)
17236{
17237   UINT32 res = OPER_I_8(mc68kcpu);
17238   UINT32 ea = EA_AX_DI_8(mc68kcpu);
17239
17240   m68ki_write_8((mc68kcpu), ea, res);
17241
17242   (mc68kcpu)->n_flag = NFLAG_8(res);
17243   (mc68kcpu)->not_z_flag = res;
17244   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17245   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17246}
17247
17248
17249void m68000_base_device_ops::m68k_op_move_8_ix_d(m68000_base_device* mc68kcpu)
17250{
17251   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
17252   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17253
17254   m68ki_write_8((mc68kcpu), ea, res);
17255
17256   (mc68kcpu)->n_flag = NFLAG_8(res);
17257   (mc68kcpu)->not_z_flag = res;
17258   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17259   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17260}
17261
17262
17263void m68000_base_device_ops::m68k_op_move_8_ix_ai(m68000_base_device* mc68kcpu)
17264{
17265   UINT32 res = OPER_AY_AI_8(mc68kcpu);
17266   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17267
17268   m68ki_write_8((mc68kcpu), ea, res);
17269
17270   (mc68kcpu)->n_flag = NFLAG_8(res);
17271   (mc68kcpu)->not_z_flag = res;
17272   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17273   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17274}
17275
17276
17277void m68000_base_device_ops::m68k_op_move_8_ix_pi(m68000_base_device* mc68kcpu)
17278{
17279   UINT32 res = OPER_AY_PI_8(mc68kcpu);
17280   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17281
17282   m68ki_write_8((mc68kcpu), ea, res);
17283
17284   (mc68kcpu)->n_flag = NFLAG_8(res);
17285   (mc68kcpu)->not_z_flag = res;
17286   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17287   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17288}
17289
17290
17291void m68000_base_device_ops::m68k_op_move_8_ix_pi7(m68000_base_device* mc68kcpu)
17292{
17293   UINT32 res = OPER_A7_PI_8(mc68kcpu);
17294   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17295
17296   m68ki_write_8((mc68kcpu), ea, res);
17297
17298   (mc68kcpu)->n_flag = NFLAG_8(res);
17299   (mc68kcpu)->not_z_flag = res;
17300   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17301   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17302}
17303
17304
17305void m68000_base_device_ops::m68k_op_move_8_ix_pd(m68000_base_device* mc68kcpu)
17306{
17307   UINT32 res = OPER_AY_PD_8(mc68kcpu);
17308   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17309
17310   m68ki_write_8((mc68kcpu), ea, res);
17311
17312   (mc68kcpu)->n_flag = NFLAG_8(res);
17313   (mc68kcpu)->not_z_flag = res;
17314   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17315   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17316}
17317
17318
17319void m68000_base_device_ops::m68k_op_move_8_ix_pd7(m68000_base_device* mc68kcpu)
17320{
17321   UINT32 res = OPER_A7_PD_8(mc68kcpu);
17322   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17323
17324   m68ki_write_8((mc68kcpu), ea, res);
17325
17326   (mc68kcpu)->n_flag = NFLAG_8(res);
17327   (mc68kcpu)->not_z_flag = res;
17328   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17329   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17330}
17331
17332
17333void m68000_base_device_ops::m68k_op_move_8_ix_di(m68000_base_device* mc68kcpu)
17334{
17335   UINT32 res = OPER_AY_DI_8(mc68kcpu);
17336   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17337
17338   m68ki_write_8((mc68kcpu), ea, res);
17339
17340   (mc68kcpu)->n_flag = NFLAG_8(res);
17341   (mc68kcpu)->not_z_flag = res;
17342   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17343   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17344}
17345
17346
17347void m68000_base_device_ops::m68k_op_move_8_ix_ix(m68000_base_device* mc68kcpu)
17348{
17349   UINT32 res = OPER_AY_IX_8(mc68kcpu);
17350   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17351
17352   m68ki_write_8((mc68kcpu), ea, res);
17353
17354   (mc68kcpu)->n_flag = NFLAG_8(res);
17355   (mc68kcpu)->not_z_flag = res;
17356   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17357   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17358}
17359
17360
17361void m68000_base_device_ops::m68k_op_move_8_ix_aw(m68000_base_device* mc68kcpu)
17362{
17363   UINT32 res = OPER_AW_8(mc68kcpu);
17364   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17365
17366   m68ki_write_8((mc68kcpu), ea, res);
17367
17368   (mc68kcpu)->n_flag = NFLAG_8(res);
17369   (mc68kcpu)->not_z_flag = res;
17370   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17371   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17372}
17373
17374
17375void m68000_base_device_ops::m68k_op_move_8_ix_al(m68000_base_device* mc68kcpu)
17376{
17377   UINT32 res = OPER_AL_8(mc68kcpu);
17378   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17379
17380   m68ki_write_8((mc68kcpu), ea, res);
17381
17382   (mc68kcpu)->n_flag = NFLAG_8(res);
17383   (mc68kcpu)->not_z_flag = res;
17384   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17385   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17386}
17387
17388
17389void m68000_base_device_ops::m68k_op_move_8_ix_pcdi(m68000_base_device* mc68kcpu)
17390{
17391   UINT32 res = OPER_PCDI_8(mc68kcpu);
17392   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17393
17394   m68ki_write_8((mc68kcpu), ea, res);
17395
17396   (mc68kcpu)->n_flag = NFLAG_8(res);
17397   (mc68kcpu)->not_z_flag = res;
17398   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17399   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17400}
17401
17402
17403void m68000_base_device_ops::m68k_op_move_8_ix_pcix(m68000_base_device* mc68kcpu)
17404{
17405   UINT32 res = OPER_PCIX_8(mc68kcpu);
17406   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17407
17408   m68ki_write_8((mc68kcpu), ea, res);
17409
17410   (mc68kcpu)->n_flag = NFLAG_8(res);
17411   (mc68kcpu)->not_z_flag = res;
17412   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17413   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17414}
17415
17416
17417void m68000_base_device_ops::m68k_op_move_8_ix_i(m68000_base_device* mc68kcpu)
17418{
17419   UINT32 res = OPER_I_8(mc68kcpu);
17420   UINT32 ea = EA_AX_IX_8(mc68kcpu);
17421
17422   m68ki_write_8((mc68kcpu), ea, res);
17423
17424   (mc68kcpu)->n_flag = NFLAG_8(res);
17425   (mc68kcpu)->not_z_flag = res;
17426   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17427   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17428}
17429
17430
17431void m68000_base_device_ops::m68k_op_move_8_aw_d(m68000_base_device* mc68kcpu)
17432{
17433   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
17434   UINT32 ea = EA_AW_8(mc68kcpu);
17435
17436   m68ki_write_8((mc68kcpu), ea, res);
17437
17438   (mc68kcpu)->n_flag = NFLAG_8(res);
17439   (mc68kcpu)->not_z_flag = res;
17440   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17441   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17442}
17443
17444
17445void m68000_base_device_ops::m68k_op_move_8_aw_ai(m68000_base_device* mc68kcpu)
17446{
17447   UINT32 res = OPER_AY_AI_8(mc68kcpu);
17448   UINT32 ea = EA_AW_8(mc68kcpu);
17449
17450   m68ki_write_8((mc68kcpu), ea, res);
17451
17452   (mc68kcpu)->n_flag = NFLAG_8(res);
17453   (mc68kcpu)->not_z_flag = res;
17454   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17455   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17456}
17457
17458
17459void m68000_base_device_ops::m68k_op_move_8_aw_pi(m68000_base_device* mc68kcpu)
17460{
17461   UINT32 res = OPER_AY_PI_8(mc68kcpu);
17462   UINT32 ea = EA_AW_8(mc68kcpu);
17463
17464   m68ki_write_8((mc68kcpu), ea, res);
17465
17466   (mc68kcpu)->n_flag = NFLAG_8(res);
17467   (mc68kcpu)->not_z_flag = res;
17468   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17469   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17470}
17471
17472
17473void m68000_base_device_ops::m68k_op_move_8_aw_pi7(m68000_base_device* mc68kcpu)
17474{
17475   UINT32 res = OPER_A7_PI_8(mc68kcpu);
17476   UINT32 ea = EA_AW_8(mc68kcpu);
17477
17478   m68ki_write_8((mc68kcpu), ea, res);
17479
17480   (mc68kcpu)->n_flag = NFLAG_8(res);
17481   (mc68kcpu)->not_z_flag = res;
17482   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17483   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17484}
17485
17486
17487void m68000_base_device_ops::m68k_op_move_8_aw_pd(m68000_base_device* mc68kcpu)
17488{
17489   UINT32 res = OPER_AY_PD_8(mc68kcpu);
17490   UINT32 ea = EA_AW_8(mc68kcpu);
17491
17492   m68ki_write_8((mc68kcpu), ea, res);
17493
17494   (mc68kcpu)->n_flag = NFLAG_8(res);
17495   (mc68kcpu)->not_z_flag = res;
17496   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17497   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17498}
17499
17500
17501void m68000_base_device_ops::m68k_op_move_8_aw_pd7(m68000_base_device* mc68kcpu)
17502{
17503   UINT32 res = OPER_A7_PD_8(mc68kcpu);
17504   UINT32 ea = EA_AW_8(mc68kcpu);
17505
17506   m68ki_write_8((mc68kcpu), ea, res);
17507
17508   (mc68kcpu)->n_flag = NFLAG_8(res);
17509   (mc68kcpu)->not_z_flag = res;
17510   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17511   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17512}
17513
17514
17515void m68000_base_device_ops::m68k_op_move_8_aw_di(m68000_base_device* mc68kcpu)
17516{
17517   UINT32 res = OPER_AY_DI_8(mc68kcpu);
17518   UINT32 ea = EA_AW_8(mc68kcpu);
17519
17520   m68ki_write_8((mc68kcpu), ea, res);
17521
17522   (mc68kcpu)->n_flag = NFLAG_8(res);
17523   (mc68kcpu)->not_z_flag = res;
17524   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17525   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17526}
17527
17528
17529void m68000_base_device_ops::m68k_op_move_8_aw_ix(m68000_base_device* mc68kcpu)
17530{
17531   UINT32 res = OPER_AY_IX_8(mc68kcpu);
17532   UINT32 ea = EA_AW_8(mc68kcpu);
17533
17534   m68ki_write_8((mc68kcpu), ea, res);
17535
17536   (mc68kcpu)->n_flag = NFLAG_8(res);
17537   (mc68kcpu)->not_z_flag = res;
17538   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17539   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17540}
17541
17542
17543void m68000_base_device_ops::m68k_op_move_8_aw_aw(m68000_base_device* mc68kcpu)
17544{
17545   UINT32 res = OPER_AW_8(mc68kcpu);
17546   UINT32 ea = EA_AW_8(mc68kcpu);
17547
17548   m68ki_write_8((mc68kcpu), ea, res);
17549
17550   (mc68kcpu)->n_flag = NFLAG_8(res);
17551   (mc68kcpu)->not_z_flag = res;
17552   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17553   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17554}
17555
17556
17557void m68000_base_device_ops::m68k_op_move_8_aw_al(m68000_base_device* mc68kcpu)
17558{
17559   UINT32 res = OPER_AL_8(mc68kcpu);
17560   UINT32 ea = EA_AW_8(mc68kcpu);
17561
17562   m68ki_write_8((mc68kcpu), ea, res);
17563
17564   (mc68kcpu)->n_flag = NFLAG_8(res);
17565   (mc68kcpu)->not_z_flag = res;
17566   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17567   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17568}
17569
17570
17571void m68000_base_device_ops::m68k_op_move_8_aw_pcdi(m68000_base_device* mc68kcpu)
17572{
17573   UINT32 res = OPER_PCDI_8(mc68kcpu);
17574   UINT32 ea = EA_AW_8(mc68kcpu);
17575
17576   m68ki_write_8((mc68kcpu), ea, res);
17577
17578   (mc68kcpu)->n_flag = NFLAG_8(res);
17579   (mc68kcpu)->not_z_flag = res;
17580   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17581   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17582}
17583
17584
17585void m68000_base_device_ops::m68k_op_move_8_aw_pcix(m68000_base_device* mc68kcpu)
17586{
17587   UINT32 res = OPER_PCIX_8(mc68kcpu);
17588   UINT32 ea = EA_AW_8(mc68kcpu);
17589
17590   m68ki_write_8((mc68kcpu), ea, res);
17591
17592   (mc68kcpu)->n_flag = NFLAG_8(res);
17593   (mc68kcpu)->not_z_flag = res;
17594   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17595   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17596}
17597
17598
17599void m68000_base_device_ops::m68k_op_move_8_aw_i(m68000_base_device* mc68kcpu)
17600{
17601   UINT32 res = OPER_I_8(mc68kcpu);
17602   UINT32 ea = EA_AW_8(mc68kcpu);
17603
17604   m68ki_write_8((mc68kcpu), ea, res);
17605
17606   (mc68kcpu)->n_flag = NFLAG_8(res);
17607   (mc68kcpu)->not_z_flag = res;
17608   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17609   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17610}
17611
17612
17613void m68000_base_device_ops::m68k_op_move_8_al_d(m68000_base_device* mc68kcpu)
17614{
17615   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
17616   UINT32 ea = EA_AL_8(mc68kcpu);
17617
17618   m68ki_write_8((mc68kcpu), ea, res);
17619
17620   (mc68kcpu)->n_flag = NFLAG_8(res);
17621   (mc68kcpu)->not_z_flag = res;
17622   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17623   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17624}
17625
17626
17627void m68000_base_device_ops::m68k_op_move_8_al_ai(m68000_base_device* mc68kcpu)
17628{
17629   UINT32 res = OPER_AY_AI_8(mc68kcpu);
17630   UINT32 ea = EA_AL_8(mc68kcpu);
17631
17632   m68ki_write_8((mc68kcpu), ea, res);
17633
17634   (mc68kcpu)->n_flag = NFLAG_8(res);
17635   (mc68kcpu)->not_z_flag = res;
17636   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17637   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17638}
17639
17640
17641void m68000_base_device_ops::m68k_op_move_8_al_pi(m68000_base_device* mc68kcpu)
17642{
17643   UINT32 res = OPER_AY_PI_8(mc68kcpu);
17644   UINT32 ea = EA_AL_8(mc68kcpu);
17645
17646   m68ki_write_8((mc68kcpu), ea, res);
17647
17648   (mc68kcpu)->n_flag = NFLAG_8(res);
17649   (mc68kcpu)->not_z_flag = res;
17650   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17651   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17652}
17653
17654
17655void m68000_base_device_ops::m68k_op_move_8_al_pi7(m68000_base_device* mc68kcpu)
17656{
17657   UINT32 res = OPER_A7_PI_8(mc68kcpu);
17658   UINT32 ea = EA_AL_8(mc68kcpu);
17659
17660   m68ki_write_8((mc68kcpu), ea, res);
17661
17662   (mc68kcpu)->n_flag = NFLAG_8(res);
17663   (mc68kcpu)->not_z_flag = res;
17664   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17665   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17666}
17667
17668
17669void m68000_base_device_ops::m68k_op_move_8_al_pd(m68000_base_device* mc68kcpu)
17670{
17671   UINT32 res = OPER_AY_PD_8(mc68kcpu);
17672   UINT32 ea = EA_AL_8(mc68kcpu);
17673
17674   m68ki_write_8((mc68kcpu), ea, res);
17675
17676   (mc68kcpu)->n_flag = NFLAG_8(res);
17677   (mc68kcpu)->not_z_flag = res;
17678   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17679   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17680}
17681
17682
17683void m68000_base_device_ops::m68k_op_move_8_al_pd7(m68000_base_device* mc68kcpu)
17684{
17685   UINT32 res = OPER_A7_PD_8(mc68kcpu);
17686   UINT32 ea = EA_AL_8(mc68kcpu);
17687
17688   m68ki_write_8((mc68kcpu), ea, res);
17689
17690   (mc68kcpu)->n_flag = NFLAG_8(res);
17691   (mc68kcpu)->not_z_flag = res;
17692   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17693   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17694}
17695
17696
17697void m68000_base_device_ops::m68k_op_move_8_al_di(m68000_base_device* mc68kcpu)
17698{
17699   UINT32 res = OPER_AY_DI_8(mc68kcpu);
17700   UINT32 ea = EA_AL_8(mc68kcpu);
17701
17702   m68ki_write_8((mc68kcpu), ea, res);
17703
17704   (mc68kcpu)->n_flag = NFLAG_8(res);
17705   (mc68kcpu)->not_z_flag = res;
17706   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17707   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17708}
17709
17710
17711void m68000_base_device_ops::m68k_op_move_8_al_ix(m68000_base_device* mc68kcpu)
17712{
17713   UINT32 res = OPER_AY_IX_8(mc68kcpu);
17714   UINT32 ea = EA_AL_8(mc68kcpu);
17715
17716   m68ki_write_8((mc68kcpu), ea, res);
17717
17718   (mc68kcpu)->n_flag = NFLAG_8(res);
17719   (mc68kcpu)->not_z_flag = res;
17720   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17721   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17722}
17723
17724
17725void m68000_base_device_ops::m68k_op_move_8_al_aw(m68000_base_device* mc68kcpu)
17726{
17727   UINT32 res = OPER_AW_8(mc68kcpu);
17728   UINT32 ea = EA_AL_8(mc68kcpu);
17729
17730   m68ki_write_8((mc68kcpu), ea, res);
17731
17732   (mc68kcpu)->n_flag = NFLAG_8(res);
17733   (mc68kcpu)->not_z_flag = res;
17734   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17735   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17736}
17737
17738
17739void m68000_base_device_ops::m68k_op_move_8_al_al(m68000_base_device* mc68kcpu)
17740{
17741   UINT32 res = OPER_AL_8(mc68kcpu);
17742   UINT32 ea = EA_AL_8(mc68kcpu);
17743
17744   m68ki_write_8((mc68kcpu), ea, res);
17745
17746   (mc68kcpu)->n_flag = NFLAG_8(res);
17747   (mc68kcpu)->not_z_flag = res;
17748   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17749   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17750}
17751
17752
17753void m68000_base_device_ops::m68k_op_move_8_al_pcdi(m68000_base_device* mc68kcpu)
17754{
17755   UINT32 res = OPER_PCDI_8(mc68kcpu);
17756   UINT32 ea = EA_AL_8(mc68kcpu);
17757
17758   m68ki_write_8((mc68kcpu), ea, res);
17759
17760   (mc68kcpu)->n_flag = NFLAG_8(res);
17761   (mc68kcpu)->not_z_flag = res;
17762   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17763   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17764}
17765
17766
17767void m68000_base_device_ops::m68k_op_move_8_al_pcix(m68000_base_device* mc68kcpu)
17768{
17769   UINT32 res = OPER_PCIX_8(mc68kcpu);
17770   UINT32 ea = EA_AL_8(mc68kcpu);
17771
17772   m68ki_write_8((mc68kcpu), ea, res);
17773
17774   (mc68kcpu)->n_flag = NFLAG_8(res);
17775   (mc68kcpu)->not_z_flag = res;
17776   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17777   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17778}
17779
17780
17781void m68000_base_device_ops::m68k_op_move_8_al_i(m68000_base_device* mc68kcpu)
17782{
17783   UINT32 res = OPER_I_8(mc68kcpu);
17784   UINT32 ea = EA_AL_8(mc68kcpu);
17785
17786   m68ki_write_8((mc68kcpu), ea, res);
17787
17788   (mc68kcpu)->n_flag = NFLAG_8(res);
17789   (mc68kcpu)->not_z_flag = res;
17790   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17791   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17792}
17793
17794
17795void m68000_base_device_ops::m68k_op_move_16_d_d(m68000_base_device* mc68kcpu)
17796{
17797   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
17798   UINT32* r_dst = &DX(mc68kcpu);
17799
17800   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17801
17802   (mc68kcpu)->n_flag = NFLAG_16(res);
17803   (mc68kcpu)->not_z_flag = res;
17804   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17805   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17806}
17807
17808
17809void m68000_base_device_ops::m68k_op_move_16_d_a(m68000_base_device* mc68kcpu)
17810{
17811   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
17812   UINT32* r_dst = &DX(mc68kcpu);
17813
17814   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17815
17816   (mc68kcpu)->n_flag = NFLAG_16(res);
17817   (mc68kcpu)->not_z_flag = res;
17818   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17819   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17820}
17821
17822
17823void m68000_base_device_ops::m68k_op_move_16_d_ai(m68000_base_device* mc68kcpu)
17824{
17825   UINT32 res = OPER_AY_AI_16(mc68kcpu);
17826   UINT32* r_dst = &DX(mc68kcpu);
17827
17828   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17829
17830   (mc68kcpu)->n_flag = NFLAG_16(res);
17831   (mc68kcpu)->not_z_flag = res;
17832   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17833   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17834}
17835
17836
17837void m68000_base_device_ops::m68k_op_move_16_d_pi(m68000_base_device* mc68kcpu)
17838{
17839   UINT32 res = OPER_AY_PI_16(mc68kcpu);
17840   UINT32* r_dst = &DX(mc68kcpu);
17841
17842   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17843
17844   (mc68kcpu)->n_flag = NFLAG_16(res);
17845   (mc68kcpu)->not_z_flag = res;
17846   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17847   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17848}
17849
17850
17851void m68000_base_device_ops::m68k_op_move_16_d_pd(m68000_base_device* mc68kcpu)
17852{
17853   UINT32 res = OPER_AY_PD_16(mc68kcpu);
17854   UINT32* r_dst = &DX(mc68kcpu);
17855
17856   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17857
17858   (mc68kcpu)->n_flag = NFLAG_16(res);
17859   (mc68kcpu)->not_z_flag = res;
17860   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17861   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17862}
17863
17864
17865void m68000_base_device_ops::m68k_op_move_16_d_di(m68000_base_device* mc68kcpu)
17866{
17867   UINT32 res = OPER_AY_DI_16(mc68kcpu);
17868   UINT32* r_dst = &DX(mc68kcpu);
17869
17870   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17871
17872   (mc68kcpu)->n_flag = NFLAG_16(res);
17873   (mc68kcpu)->not_z_flag = res;
17874   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17875   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17876}
17877
17878
17879void m68000_base_device_ops::m68k_op_move_16_d_ix(m68000_base_device* mc68kcpu)
17880{
17881   UINT32 res = OPER_AY_IX_16(mc68kcpu);
17882   UINT32* r_dst = &DX(mc68kcpu);
17883
17884   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17885
17886   (mc68kcpu)->n_flag = NFLAG_16(res);
17887   (mc68kcpu)->not_z_flag = res;
17888   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17889   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17890}
17891
17892
17893void m68000_base_device_ops::m68k_op_move_16_d_aw(m68000_base_device* mc68kcpu)
17894{
17895   UINT32 res = OPER_AW_16(mc68kcpu);
17896   UINT32* r_dst = &DX(mc68kcpu);
17897
17898   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17899
17900   (mc68kcpu)->n_flag = NFLAG_16(res);
17901   (mc68kcpu)->not_z_flag = res;
17902   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17903   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17904}
17905
17906
17907void m68000_base_device_ops::m68k_op_move_16_d_al(m68000_base_device* mc68kcpu)
17908{
17909   UINT32 res = OPER_AL_16(mc68kcpu);
17910   UINT32* r_dst = &DX(mc68kcpu);
17911
17912   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17913
17914   (mc68kcpu)->n_flag = NFLAG_16(res);
17915   (mc68kcpu)->not_z_flag = res;
17916   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17917   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17918}
17919
17920
17921void m68000_base_device_ops::m68k_op_move_16_d_pcdi(m68000_base_device* mc68kcpu)
17922{
17923   UINT32 res = OPER_PCDI_16(mc68kcpu);
17924   UINT32* r_dst = &DX(mc68kcpu);
17925
17926   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17927
17928   (mc68kcpu)->n_flag = NFLAG_16(res);
17929   (mc68kcpu)->not_z_flag = res;
17930   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17931   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17932}
17933
17934
17935void m68000_base_device_ops::m68k_op_move_16_d_pcix(m68000_base_device* mc68kcpu)
17936{
17937   UINT32 res = OPER_PCIX_16(mc68kcpu);
17938   UINT32* r_dst = &DX(mc68kcpu);
17939
17940   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17941
17942   (mc68kcpu)->n_flag = NFLAG_16(res);
17943   (mc68kcpu)->not_z_flag = res;
17944   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17945   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17946}
17947
17948
17949void m68000_base_device_ops::m68k_op_move_16_d_i(m68000_base_device* mc68kcpu)
17950{
17951   UINT32 res = OPER_I_16(mc68kcpu);
17952   UINT32* r_dst = &DX(mc68kcpu);
17953
17954   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
17955
17956   (mc68kcpu)->n_flag = NFLAG_16(res);
17957   (mc68kcpu)->not_z_flag = res;
17958   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17959   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17960}
17961
17962
17963void m68000_base_device_ops::m68k_op_move_16_ai_d(m68000_base_device* mc68kcpu)
17964{
17965   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
17966   UINT32 ea = EA_AX_AI_16(mc68kcpu);
17967
17968   m68ki_write_16((mc68kcpu), ea, res);
17969
17970   (mc68kcpu)->n_flag = NFLAG_16(res);
17971   (mc68kcpu)->not_z_flag = res;
17972   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17973   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17974}
17975
17976
17977void m68000_base_device_ops::m68k_op_move_16_ai_a(m68000_base_device* mc68kcpu)
17978{
17979   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
17980   UINT32 ea = EA_AX_AI_16(mc68kcpu);
17981
17982   m68ki_write_16((mc68kcpu), ea, res);
17983
17984   (mc68kcpu)->n_flag = NFLAG_16(res);
17985   (mc68kcpu)->not_z_flag = res;
17986   (mc68kcpu)->v_flag = VFLAG_CLEAR;
17987   (mc68kcpu)->c_flag = CFLAG_CLEAR;
17988}
17989
17990
17991void m68000_base_device_ops::m68k_op_move_16_ai_ai(m68000_base_device* mc68kcpu)
17992{
17993   UINT32 res = OPER_AY_AI_16(mc68kcpu);
17994   UINT32 ea = EA_AX_AI_16(mc68kcpu);
17995
17996   m68ki_write_16((mc68kcpu), ea, res);
17997
17998   (mc68kcpu)->n_flag = NFLAG_16(res);
17999   (mc68kcpu)->not_z_flag = res;
18000   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18001   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18002}
18003
18004
18005void m68000_base_device_ops::m68k_op_move_16_ai_pi(m68000_base_device* mc68kcpu)
18006{
18007   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18008   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18009
18010   m68ki_write_16((mc68kcpu), ea, res);
18011
18012   (mc68kcpu)->n_flag = NFLAG_16(res);
18013   (mc68kcpu)->not_z_flag = res;
18014   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18015   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18016}
18017
18018
18019void m68000_base_device_ops::m68k_op_move_16_ai_pd(m68000_base_device* mc68kcpu)
18020{
18021   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18022   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18023
18024   m68ki_write_16((mc68kcpu), ea, res);
18025
18026   (mc68kcpu)->n_flag = NFLAG_16(res);
18027   (mc68kcpu)->not_z_flag = res;
18028   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18029   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18030}
18031
18032
18033void m68000_base_device_ops::m68k_op_move_16_ai_di(m68000_base_device* mc68kcpu)
18034{
18035   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18036   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18037
18038   m68ki_write_16((mc68kcpu), ea, res);
18039
18040   (mc68kcpu)->n_flag = NFLAG_16(res);
18041   (mc68kcpu)->not_z_flag = res;
18042   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18043   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18044}
18045
18046
18047void m68000_base_device_ops::m68k_op_move_16_ai_ix(m68000_base_device* mc68kcpu)
18048{
18049   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18050   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18051
18052   m68ki_write_16((mc68kcpu), ea, res);
18053
18054   (mc68kcpu)->n_flag = NFLAG_16(res);
18055   (mc68kcpu)->not_z_flag = res;
18056   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18057   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18058}
18059
18060
18061void m68000_base_device_ops::m68k_op_move_16_ai_aw(m68000_base_device* mc68kcpu)
18062{
18063   UINT32 res = OPER_AW_16(mc68kcpu);
18064   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18065
18066   m68ki_write_16((mc68kcpu), ea, res);
18067
18068   (mc68kcpu)->n_flag = NFLAG_16(res);
18069   (mc68kcpu)->not_z_flag = res;
18070   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18071   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18072}
18073
18074
18075void m68000_base_device_ops::m68k_op_move_16_ai_al(m68000_base_device* mc68kcpu)
18076{
18077   UINT32 res = OPER_AL_16(mc68kcpu);
18078   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18079
18080   m68ki_write_16((mc68kcpu), ea, res);
18081
18082   (mc68kcpu)->n_flag = NFLAG_16(res);
18083   (mc68kcpu)->not_z_flag = res;
18084   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18085   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18086}
18087
18088
18089void m68000_base_device_ops::m68k_op_move_16_ai_pcdi(m68000_base_device* mc68kcpu)
18090{
18091   UINT32 res = OPER_PCDI_16(mc68kcpu);
18092   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18093
18094   m68ki_write_16((mc68kcpu), ea, res);
18095
18096   (mc68kcpu)->n_flag = NFLAG_16(res);
18097   (mc68kcpu)->not_z_flag = res;
18098   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18099   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18100}
18101
18102
18103void m68000_base_device_ops::m68k_op_move_16_ai_pcix(m68000_base_device* mc68kcpu)
18104{
18105   UINT32 res = OPER_PCIX_16(mc68kcpu);
18106   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18107
18108   m68ki_write_16((mc68kcpu), ea, res);
18109
18110   (mc68kcpu)->n_flag = NFLAG_16(res);
18111   (mc68kcpu)->not_z_flag = res;
18112   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18113   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18114}
18115
18116
18117void m68000_base_device_ops::m68k_op_move_16_ai_i(m68000_base_device* mc68kcpu)
18118{
18119   UINT32 res = OPER_I_16(mc68kcpu);
18120   UINT32 ea = EA_AX_AI_16(mc68kcpu);
18121
18122   m68ki_write_16((mc68kcpu), ea, res);
18123
18124   (mc68kcpu)->n_flag = NFLAG_16(res);
18125   (mc68kcpu)->not_z_flag = res;
18126   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18127   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18128}
18129
18130
18131void m68000_base_device_ops::m68k_op_move_16_pi_d(m68000_base_device* mc68kcpu)
18132{
18133   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18134   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18135
18136   m68ki_write_16((mc68kcpu), ea, res);
18137
18138   (mc68kcpu)->n_flag = NFLAG_16(res);
18139   (mc68kcpu)->not_z_flag = res;
18140   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18141   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18142}
18143
18144
18145void m68000_base_device_ops::m68k_op_move_16_pi_a(m68000_base_device* mc68kcpu)
18146{
18147   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18148   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18149
18150   m68ki_write_16((mc68kcpu), ea, res);
18151
18152   (mc68kcpu)->n_flag = NFLAG_16(res);
18153   (mc68kcpu)->not_z_flag = res;
18154   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18155   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18156}
18157
18158
18159void m68000_base_device_ops::m68k_op_move_16_pi_ai(m68000_base_device* mc68kcpu)
18160{
18161   UINT32 res = OPER_AY_AI_16(mc68kcpu);
18162   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18163
18164   m68ki_write_16((mc68kcpu), ea, res);
18165
18166   (mc68kcpu)->n_flag = NFLAG_16(res);
18167   (mc68kcpu)->not_z_flag = res;
18168   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18169   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18170}
18171
18172
18173void m68000_base_device_ops::m68k_op_move_16_pi_pi(m68000_base_device* mc68kcpu)
18174{
18175   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18176   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18177
18178   m68ki_write_16((mc68kcpu), ea, res);
18179
18180   (mc68kcpu)->n_flag = NFLAG_16(res);
18181   (mc68kcpu)->not_z_flag = res;
18182   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18183   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18184}
18185
18186
18187void m68000_base_device_ops::m68k_op_move_16_pi_pd(m68000_base_device* mc68kcpu)
18188{
18189   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18190   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18191
18192   m68ki_write_16((mc68kcpu), ea, res);
18193
18194   (mc68kcpu)->n_flag = NFLAG_16(res);
18195   (mc68kcpu)->not_z_flag = res;
18196   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18197   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18198}
18199
18200
18201void m68000_base_device_ops::m68k_op_move_16_pi_di(m68000_base_device* mc68kcpu)
18202{
18203   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18204   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18205
18206   m68ki_write_16((mc68kcpu), ea, res);
18207
18208   (mc68kcpu)->n_flag = NFLAG_16(res);
18209   (mc68kcpu)->not_z_flag = res;
18210   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18211   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18212}
18213
18214
18215void m68000_base_device_ops::m68k_op_move_16_pi_ix(m68000_base_device* mc68kcpu)
18216{
18217   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18218   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18219
18220   m68ki_write_16((mc68kcpu), ea, res);
18221
18222   (mc68kcpu)->n_flag = NFLAG_16(res);
18223   (mc68kcpu)->not_z_flag = res;
18224   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18225   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18226}
18227
18228
18229void m68000_base_device_ops::m68k_op_move_16_pi_aw(m68000_base_device* mc68kcpu)
18230{
18231   UINT32 res = OPER_AW_16(mc68kcpu);
18232   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18233
18234   m68ki_write_16((mc68kcpu), ea, res);
18235
18236   (mc68kcpu)->n_flag = NFLAG_16(res);
18237   (mc68kcpu)->not_z_flag = res;
18238   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18239   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18240}
18241
18242
18243void m68000_base_device_ops::m68k_op_move_16_pi_al(m68000_base_device* mc68kcpu)
18244{
18245   UINT32 res = OPER_AL_16(mc68kcpu);
18246   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18247
18248   m68ki_write_16((mc68kcpu), ea, res);
18249
18250   (mc68kcpu)->n_flag = NFLAG_16(res);
18251   (mc68kcpu)->not_z_flag = res;
18252   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18253   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18254}
18255
18256
18257void m68000_base_device_ops::m68k_op_move_16_pi_pcdi(m68000_base_device* mc68kcpu)
18258{
18259   UINT32 res = OPER_PCDI_16(mc68kcpu);
18260   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18261
18262   m68ki_write_16((mc68kcpu), ea, res);
18263
18264   (mc68kcpu)->n_flag = NFLAG_16(res);
18265   (mc68kcpu)->not_z_flag = res;
18266   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18267   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18268}
18269
18270
18271void m68000_base_device_ops::m68k_op_move_16_pi_pcix(m68000_base_device* mc68kcpu)
18272{
18273   UINT32 res = OPER_PCIX_16(mc68kcpu);
18274   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18275
18276   m68ki_write_16((mc68kcpu), ea, res);
18277
18278   (mc68kcpu)->n_flag = NFLAG_16(res);
18279   (mc68kcpu)->not_z_flag = res;
18280   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18281   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18282}
18283
18284
18285void m68000_base_device_ops::m68k_op_move_16_pi_i(m68000_base_device* mc68kcpu)
18286{
18287   UINT32 res = OPER_I_16(mc68kcpu);
18288   UINT32 ea = EA_AX_PI_16(mc68kcpu);
18289
18290   m68ki_write_16((mc68kcpu), ea, res);
18291
18292   (mc68kcpu)->n_flag = NFLAG_16(res);
18293   (mc68kcpu)->not_z_flag = res;
18294   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18295   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18296}
18297
18298
18299void m68000_base_device_ops::m68k_op_move_16_pd_d(m68000_base_device* mc68kcpu)
18300{
18301   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18302   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18303
18304   m68ki_write_16((mc68kcpu), ea, res);
18305
18306   (mc68kcpu)->n_flag = NFLAG_16(res);
18307   (mc68kcpu)->not_z_flag = res;
18308   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18309   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18310}
18311
18312
18313void m68000_base_device_ops::m68k_op_move_16_pd_a(m68000_base_device* mc68kcpu)
18314{
18315   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18316   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18317
18318   m68ki_write_16((mc68kcpu), ea, res);
18319
18320   (mc68kcpu)->n_flag = NFLAG_16(res);
18321   (mc68kcpu)->not_z_flag = res;
18322   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18323   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18324}
18325
18326
18327void m68000_base_device_ops::m68k_op_move_16_pd_ai(m68000_base_device* mc68kcpu)
18328{
18329   UINT32 res = OPER_AY_AI_16(mc68kcpu);
18330   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18331
18332   m68ki_write_16((mc68kcpu), ea, res);
18333
18334   (mc68kcpu)->n_flag = NFLAG_16(res);
18335   (mc68kcpu)->not_z_flag = res;
18336   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18337   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18338}
18339
18340
18341void m68000_base_device_ops::m68k_op_move_16_pd_pi(m68000_base_device* mc68kcpu)
18342{
18343   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18344   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18345
18346   m68ki_write_16((mc68kcpu), ea, res);
18347
18348   (mc68kcpu)->n_flag = NFLAG_16(res);
18349   (mc68kcpu)->not_z_flag = res;
18350   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18351   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18352}
18353
18354
18355void m68000_base_device_ops::m68k_op_move_16_pd_pd(m68000_base_device* mc68kcpu)
18356{
18357   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18358   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18359
18360   m68ki_write_16((mc68kcpu), ea, res);
18361
18362   (mc68kcpu)->n_flag = NFLAG_16(res);
18363   (mc68kcpu)->not_z_flag = res;
18364   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18365   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18366}
18367
18368
18369void m68000_base_device_ops::m68k_op_move_16_pd_di(m68000_base_device* mc68kcpu)
18370{
18371   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18372   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18373
18374   m68ki_write_16((mc68kcpu), ea, res);
18375
18376   (mc68kcpu)->n_flag = NFLAG_16(res);
18377   (mc68kcpu)->not_z_flag = res;
18378   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18379   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18380}
18381
18382
18383void m68000_base_device_ops::m68k_op_move_16_pd_ix(m68000_base_device* mc68kcpu)
18384{
18385   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18386   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18387
18388   m68ki_write_16((mc68kcpu), ea, res);
18389
18390   (mc68kcpu)->n_flag = NFLAG_16(res);
18391   (mc68kcpu)->not_z_flag = res;
18392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18393   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18394}
18395
18396
18397void m68000_base_device_ops::m68k_op_move_16_pd_aw(m68000_base_device* mc68kcpu)
18398{
18399   UINT32 res = OPER_AW_16(mc68kcpu);
18400   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18401
18402   m68ki_write_16((mc68kcpu), ea, res);
18403
18404   (mc68kcpu)->n_flag = NFLAG_16(res);
18405   (mc68kcpu)->not_z_flag = res;
18406   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18407   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18408}
18409
18410
18411void m68000_base_device_ops::m68k_op_move_16_pd_al(m68000_base_device* mc68kcpu)
18412{
18413   UINT32 res = OPER_AL_16(mc68kcpu);
18414   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18415
18416   m68ki_write_16((mc68kcpu), ea, res);
18417
18418   (mc68kcpu)->n_flag = NFLAG_16(res);
18419   (mc68kcpu)->not_z_flag = res;
18420   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18421   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18422}
18423
18424
18425void m68000_base_device_ops::m68k_op_move_16_pd_pcdi(m68000_base_device* mc68kcpu)
18426{
18427   UINT32 res = OPER_PCDI_16(mc68kcpu);
18428   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18429
18430   m68ki_write_16((mc68kcpu), ea, res);
18431
18432   (mc68kcpu)->n_flag = NFLAG_16(res);
18433   (mc68kcpu)->not_z_flag = res;
18434   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18435   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18436}
18437
18438
18439void m68000_base_device_ops::m68k_op_move_16_pd_pcix(m68000_base_device* mc68kcpu)
18440{
18441   UINT32 res = OPER_PCIX_16(mc68kcpu);
18442   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18443
18444   m68ki_write_16((mc68kcpu), ea, res);
18445
18446   (mc68kcpu)->n_flag = NFLAG_16(res);
18447   (mc68kcpu)->not_z_flag = res;
18448   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18449   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18450}
18451
18452
18453void m68000_base_device_ops::m68k_op_move_16_pd_i(m68000_base_device* mc68kcpu)
18454{
18455   UINT32 res = OPER_I_16(mc68kcpu);
18456   UINT32 ea = EA_AX_PD_16(mc68kcpu);
18457
18458   m68ki_write_16((mc68kcpu), ea, res);
18459
18460   (mc68kcpu)->n_flag = NFLAG_16(res);
18461   (mc68kcpu)->not_z_flag = res;
18462   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18463   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18464}
18465
18466
18467void m68000_base_device_ops::m68k_op_move_16_di_d(m68000_base_device* mc68kcpu)
18468{
18469   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18470   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18471
18472   m68ki_write_16((mc68kcpu), ea, res);
18473
18474   (mc68kcpu)->n_flag = NFLAG_16(res);
18475   (mc68kcpu)->not_z_flag = res;
18476   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18477   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18478}
18479
18480
18481void m68000_base_device_ops::m68k_op_move_16_di_a(m68000_base_device* mc68kcpu)
18482{
18483   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18484   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18485
18486   m68ki_write_16((mc68kcpu), ea, res);
18487
18488   (mc68kcpu)->n_flag = NFLAG_16(res);
18489   (mc68kcpu)->not_z_flag = res;
18490   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18491   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18492}
18493
18494
18495void m68000_base_device_ops::m68k_op_move_16_di_ai(m68000_base_device* mc68kcpu)
18496{
18497   UINT32 res = OPER_AY_AI_16(mc68kcpu);
18498   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18499
18500   m68ki_write_16((mc68kcpu), ea, res);
18501
18502   (mc68kcpu)->n_flag = NFLAG_16(res);
18503   (mc68kcpu)->not_z_flag = res;
18504   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18505   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18506}
18507
18508
18509void m68000_base_device_ops::m68k_op_move_16_di_pi(m68000_base_device* mc68kcpu)
18510{
18511   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18512   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18513
18514   m68ki_write_16((mc68kcpu), ea, res);
18515
18516   (mc68kcpu)->n_flag = NFLAG_16(res);
18517   (mc68kcpu)->not_z_flag = res;
18518   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18519   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18520}
18521
18522
18523void m68000_base_device_ops::m68k_op_move_16_di_pd(m68000_base_device* mc68kcpu)
18524{
18525   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18526   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18527
18528   m68ki_write_16((mc68kcpu), ea, res);
18529
18530   (mc68kcpu)->n_flag = NFLAG_16(res);
18531   (mc68kcpu)->not_z_flag = res;
18532   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18533   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18534}
18535
18536
18537void m68000_base_device_ops::m68k_op_move_16_di_di(m68000_base_device* mc68kcpu)
18538{
18539   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18540   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18541
18542   m68ki_write_16((mc68kcpu), ea, res);
18543
18544   (mc68kcpu)->n_flag = NFLAG_16(res);
18545   (mc68kcpu)->not_z_flag = res;
18546   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18547   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18548}
18549
18550
18551void m68000_base_device_ops::m68k_op_move_16_di_ix(m68000_base_device* mc68kcpu)
18552{
18553   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18554   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18555
18556   m68ki_write_16((mc68kcpu), ea, res);
18557
18558   (mc68kcpu)->n_flag = NFLAG_16(res);
18559   (mc68kcpu)->not_z_flag = res;
18560   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18561   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18562}
18563
18564
18565void m68000_base_device_ops::m68k_op_move_16_di_aw(m68000_base_device* mc68kcpu)
18566{
18567   UINT32 res = OPER_AW_16(mc68kcpu);
18568   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18569
18570   m68ki_write_16((mc68kcpu), ea, res);
18571
18572   (mc68kcpu)->n_flag = NFLAG_16(res);
18573   (mc68kcpu)->not_z_flag = res;
18574   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18575   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18576}
18577
18578
18579void m68000_base_device_ops::m68k_op_move_16_di_al(m68000_base_device* mc68kcpu)
18580{
18581   UINT32 res = OPER_AL_16(mc68kcpu);
18582   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18583
18584   m68ki_write_16((mc68kcpu), ea, res);
18585
18586   (mc68kcpu)->n_flag = NFLAG_16(res);
18587   (mc68kcpu)->not_z_flag = res;
18588   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18589   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18590}
18591
18592
18593void m68000_base_device_ops::m68k_op_move_16_di_pcdi(m68000_base_device* mc68kcpu)
18594{
18595   UINT32 res = OPER_PCDI_16(mc68kcpu);
18596   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18597
18598   m68ki_write_16((mc68kcpu), ea, res);
18599
18600   (mc68kcpu)->n_flag = NFLAG_16(res);
18601   (mc68kcpu)->not_z_flag = res;
18602   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18603   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18604}
18605
18606
18607void m68000_base_device_ops::m68k_op_move_16_di_pcix(m68000_base_device* mc68kcpu)
18608{
18609   UINT32 res = OPER_PCIX_16(mc68kcpu);
18610   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18611
18612   m68ki_write_16((mc68kcpu), ea, res);
18613
18614   (mc68kcpu)->n_flag = NFLAG_16(res);
18615   (mc68kcpu)->not_z_flag = res;
18616   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18617   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18618}
18619
18620
18621void m68000_base_device_ops::m68k_op_move_16_di_i(m68000_base_device* mc68kcpu)
18622{
18623   UINT32 res = OPER_I_16(mc68kcpu);
18624   UINT32 ea = EA_AX_DI_16(mc68kcpu);
18625
18626   m68ki_write_16((mc68kcpu), ea, res);
18627
18628   (mc68kcpu)->n_flag = NFLAG_16(res);
18629   (mc68kcpu)->not_z_flag = res;
18630   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18631   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18632}
18633
18634
18635void m68000_base_device_ops::m68k_op_move_16_ix_d(m68000_base_device* mc68kcpu)
18636{
18637   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18638   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18639
18640   m68ki_write_16((mc68kcpu), ea, res);
18641
18642   (mc68kcpu)->n_flag = NFLAG_16(res);
18643   (mc68kcpu)->not_z_flag = res;
18644   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18645   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18646}
18647
18648
18649void m68000_base_device_ops::m68k_op_move_16_ix_a(m68000_base_device* mc68kcpu)
18650{
18651   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18652   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18653
18654   m68ki_write_16((mc68kcpu), ea, res);
18655
18656   (mc68kcpu)->n_flag = NFLAG_16(res);
18657   (mc68kcpu)->not_z_flag = res;
18658   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18659   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18660}
18661
18662
18663void m68000_base_device_ops::m68k_op_move_16_ix_ai(m68000_base_device* mc68kcpu)
18664{
18665   UINT32 res = OPER_AY_AI_16(mc68kcpu);
18666   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18667
18668   m68ki_write_16((mc68kcpu), ea, res);
18669
18670   (mc68kcpu)->n_flag = NFLAG_16(res);
18671   (mc68kcpu)->not_z_flag = res;
18672   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18673   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18674}
18675
18676
18677void m68000_base_device_ops::m68k_op_move_16_ix_pi(m68000_base_device* mc68kcpu)
18678{
18679   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18680   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18681
18682   m68ki_write_16((mc68kcpu), ea, res);
18683
18684   (mc68kcpu)->n_flag = NFLAG_16(res);
18685   (mc68kcpu)->not_z_flag = res;
18686   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18687   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18688}
18689
18690
18691void m68000_base_device_ops::m68k_op_move_16_ix_pd(m68000_base_device* mc68kcpu)
18692{
18693   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18694   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18695
18696   m68ki_write_16((mc68kcpu), ea, res);
18697
18698   (mc68kcpu)->n_flag = NFLAG_16(res);
18699   (mc68kcpu)->not_z_flag = res;
18700   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18701   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18702}
18703
18704
18705void m68000_base_device_ops::m68k_op_move_16_ix_di(m68000_base_device* mc68kcpu)
18706{
18707   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18708   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18709
18710   m68ki_write_16((mc68kcpu), ea, res);
18711
18712   (mc68kcpu)->n_flag = NFLAG_16(res);
18713   (mc68kcpu)->not_z_flag = res;
18714   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18715   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18716}
18717
18718
18719void m68000_base_device_ops::m68k_op_move_16_ix_ix(m68000_base_device* mc68kcpu)
18720{
18721   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18722   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18723
18724   m68ki_write_16((mc68kcpu), ea, res);
18725
18726   (mc68kcpu)->n_flag = NFLAG_16(res);
18727   (mc68kcpu)->not_z_flag = res;
18728   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18729   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18730}
18731
18732
18733void m68000_base_device_ops::m68k_op_move_16_ix_aw(m68000_base_device* mc68kcpu)
18734{
18735   UINT32 res = OPER_AW_16(mc68kcpu);
18736   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18737
18738   m68ki_write_16((mc68kcpu), ea, res);
18739
18740   (mc68kcpu)->n_flag = NFLAG_16(res);
18741   (mc68kcpu)->not_z_flag = res;
18742   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18743   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18744}
18745
18746
18747void m68000_base_device_ops::m68k_op_move_16_ix_al(m68000_base_device* mc68kcpu)
18748{
18749   UINT32 res = OPER_AL_16(mc68kcpu);
18750   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18751
18752   m68ki_write_16((mc68kcpu), ea, res);
18753
18754   (mc68kcpu)->n_flag = NFLAG_16(res);
18755   (mc68kcpu)->not_z_flag = res;
18756   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18757   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18758}
18759
18760
18761void m68000_base_device_ops::m68k_op_move_16_ix_pcdi(m68000_base_device* mc68kcpu)
18762{
18763   UINT32 res = OPER_PCDI_16(mc68kcpu);
18764   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18765
18766   m68ki_write_16((mc68kcpu), ea, res);
18767
18768   (mc68kcpu)->n_flag = NFLAG_16(res);
18769   (mc68kcpu)->not_z_flag = res;
18770   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18771   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18772}
18773
18774
18775void m68000_base_device_ops::m68k_op_move_16_ix_pcix(m68000_base_device* mc68kcpu)
18776{
18777   UINT32 res = OPER_PCIX_16(mc68kcpu);
18778   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18779
18780   m68ki_write_16((mc68kcpu), ea, res);
18781
18782   (mc68kcpu)->n_flag = NFLAG_16(res);
18783   (mc68kcpu)->not_z_flag = res;
18784   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18785   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18786}
18787
18788
18789void m68000_base_device_ops::m68k_op_move_16_ix_i(m68000_base_device* mc68kcpu)
18790{
18791   UINT32 res = OPER_I_16(mc68kcpu);
18792   UINT32 ea = EA_AX_IX_16(mc68kcpu);
18793
18794   m68ki_write_16((mc68kcpu), ea, res);
18795
18796   (mc68kcpu)->n_flag = NFLAG_16(res);
18797   (mc68kcpu)->not_z_flag = res;
18798   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18799   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18800}
18801
18802
18803void m68000_base_device_ops::m68k_op_move_16_aw_d(m68000_base_device* mc68kcpu)
18804{
18805   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18806   UINT32 ea = EA_AW_16(mc68kcpu);
18807
18808   m68ki_write_16((mc68kcpu), ea, res);
18809
18810   (mc68kcpu)->n_flag = NFLAG_16(res);
18811   (mc68kcpu)->not_z_flag = res;
18812   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18813   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18814}
18815
18816
18817void m68000_base_device_ops::m68k_op_move_16_aw_a(m68000_base_device* mc68kcpu)
18818{
18819   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18820   UINT32 ea = EA_AW_16(mc68kcpu);
18821
18822   m68ki_write_16((mc68kcpu), ea, res);
18823
18824   (mc68kcpu)->n_flag = NFLAG_16(res);
18825   (mc68kcpu)->not_z_flag = res;
18826   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18827   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18828}
18829
18830
18831void m68000_base_device_ops::m68k_op_move_16_aw_ai(m68000_base_device* mc68kcpu)
18832{
18833   UINT32 res = OPER_AY_AI_16(mc68kcpu);
18834   UINT32 ea = EA_AW_16(mc68kcpu);
18835
18836   m68ki_write_16((mc68kcpu), ea, res);
18837
18838   (mc68kcpu)->n_flag = NFLAG_16(res);
18839   (mc68kcpu)->not_z_flag = res;
18840   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18841   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18842}
18843
18844
18845void m68000_base_device_ops::m68k_op_move_16_aw_pi(m68000_base_device* mc68kcpu)
18846{
18847   UINT32 res = OPER_AY_PI_16(mc68kcpu);
18848   UINT32 ea = EA_AW_16(mc68kcpu);
18849
18850   m68ki_write_16((mc68kcpu), ea, res);
18851
18852   (mc68kcpu)->n_flag = NFLAG_16(res);
18853   (mc68kcpu)->not_z_flag = res;
18854   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18855   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18856}
18857
18858
18859void m68000_base_device_ops::m68k_op_move_16_aw_pd(m68000_base_device* mc68kcpu)
18860{
18861   UINT32 res = OPER_AY_PD_16(mc68kcpu);
18862   UINT32 ea = EA_AW_16(mc68kcpu);
18863
18864   m68ki_write_16((mc68kcpu), ea, res);
18865
18866   (mc68kcpu)->n_flag = NFLAG_16(res);
18867   (mc68kcpu)->not_z_flag = res;
18868   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18869   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18870}
18871
18872
18873void m68000_base_device_ops::m68k_op_move_16_aw_di(m68000_base_device* mc68kcpu)
18874{
18875   UINT32 res = OPER_AY_DI_16(mc68kcpu);
18876   UINT32 ea = EA_AW_16(mc68kcpu);
18877
18878   m68ki_write_16((mc68kcpu), ea, res);
18879
18880   (mc68kcpu)->n_flag = NFLAG_16(res);
18881   (mc68kcpu)->not_z_flag = res;
18882   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18883   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18884}
18885
18886
18887void m68000_base_device_ops::m68k_op_move_16_aw_ix(m68000_base_device* mc68kcpu)
18888{
18889   UINT32 res = OPER_AY_IX_16(mc68kcpu);
18890   UINT32 ea = EA_AW_16(mc68kcpu);
18891
18892   m68ki_write_16((mc68kcpu), ea, res);
18893
18894   (mc68kcpu)->n_flag = NFLAG_16(res);
18895   (mc68kcpu)->not_z_flag = res;
18896   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18897   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18898}
18899
18900
18901void m68000_base_device_ops::m68k_op_move_16_aw_aw(m68000_base_device* mc68kcpu)
18902{
18903   UINT32 res = OPER_AW_16(mc68kcpu);
18904   UINT32 ea = EA_AW_16(mc68kcpu);
18905
18906   m68ki_write_16((mc68kcpu), ea, res);
18907
18908   (mc68kcpu)->n_flag = NFLAG_16(res);
18909   (mc68kcpu)->not_z_flag = res;
18910   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18911   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18912}
18913
18914
18915void m68000_base_device_ops::m68k_op_move_16_aw_al(m68000_base_device* mc68kcpu)
18916{
18917   UINT32 res = OPER_AL_16(mc68kcpu);
18918   UINT32 ea = EA_AW_16(mc68kcpu);
18919
18920   m68ki_write_16((mc68kcpu), ea, res);
18921
18922   (mc68kcpu)->n_flag = NFLAG_16(res);
18923   (mc68kcpu)->not_z_flag = res;
18924   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18925   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18926}
18927
18928
18929void m68000_base_device_ops::m68k_op_move_16_aw_pcdi(m68000_base_device* mc68kcpu)
18930{
18931   UINT32 res = OPER_PCDI_16(mc68kcpu);
18932   UINT32 ea = EA_AW_16(mc68kcpu);
18933
18934   m68ki_write_16((mc68kcpu), ea, res);
18935
18936   (mc68kcpu)->n_flag = NFLAG_16(res);
18937   (mc68kcpu)->not_z_flag = res;
18938   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18939   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18940}
18941
18942
18943void m68000_base_device_ops::m68k_op_move_16_aw_pcix(m68000_base_device* mc68kcpu)
18944{
18945   UINT32 res = OPER_PCIX_16(mc68kcpu);
18946   UINT32 ea = EA_AW_16(mc68kcpu);
18947
18948   m68ki_write_16((mc68kcpu), ea, res);
18949
18950   (mc68kcpu)->n_flag = NFLAG_16(res);
18951   (mc68kcpu)->not_z_flag = res;
18952   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18953   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18954}
18955
18956
18957void m68000_base_device_ops::m68k_op_move_16_aw_i(m68000_base_device* mc68kcpu)
18958{
18959   UINT32 res = OPER_I_16(mc68kcpu);
18960   UINT32 ea = EA_AW_16(mc68kcpu);
18961
18962   m68ki_write_16((mc68kcpu), ea, res);
18963
18964   (mc68kcpu)->n_flag = NFLAG_16(res);
18965   (mc68kcpu)->not_z_flag = res;
18966   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18967   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18968}
18969
18970
18971void m68000_base_device_ops::m68k_op_move_16_al_d(m68000_base_device* mc68kcpu)
18972{
18973   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
18974   UINT32 ea = EA_AL_16(mc68kcpu);
18975
18976   m68ki_write_16((mc68kcpu), ea, res);
18977
18978   (mc68kcpu)->n_flag = NFLAG_16(res);
18979   (mc68kcpu)->not_z_flag = res;
18980   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18981   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18982}
18983
18984
18985void m68000_base_device_ops::m68k_op_move_16_al_a(m68000_base_device* mc68kcpu)
18986{
18987   UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
18988   UINT32 ea = EA_AL_16(mc68kcpu);
18989
18990   m68ki_write_16((mc68kcpu), ea, res);
18991
18992   (mc68kcpu)->n_flag = NFLAG_16(res);
18993   (mc68kcpu)->not_z_flag = res;
18994   (mc68kcpu)->v_flag = VFLAG_CLEAR;
18995   (mc68kcpu)->c_flag = CFLAG_CLEAR;
18996}
18997
18998
18999void m68000_base_device_ops::m68k_op_move_16_al_ai(m68000_base_device* mc68kcpu)
19000{
19001   UINT32 res = OPER_AY_AI_16(mc68kcpu);
19002   UINT32 ea = EA_AL_16(mc68kcpu);
19003
19004   m68ki_write_16((mc68kcpu), ea, res);
19005
19006   (mc68kcpu)->n_flag = NFLAG_16(res);
19007   (mc68kcpu)->not_z_flag = res;
19008   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19009   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19010}
19011
19012
19013void m68000_base_device_ops::m68k_op_move_16_al_pi(m68000_base_device* mc68kcpu)
19014{
19015   UINT32 res = OPER_AY_PI_16(mc68kcpu);
19016   UINT32 ea = EA_AL_16(mc68kcpu);
19017
19018   m68ki_write_16((mc68kcpu), ea, res);
19019
19020   (mc68kcpu)->n_flag = NFLAG_16(res);
19021   (mc68kcpu)->not_z_flag = res;
19022   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19023   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19024}
19025
19026
19027void m68000_base_device_ops::m68k_op_move_16_al_pd(m68000_base_device* mc68kcpu)
19028{
19029   UINT32 res = OPER_AY_PD_16(mc68kcpu);
19030   UINT32 ea = EA_AL_16(mc68kcpu);
19031
19032   m68ki_write_16((mc68kcpu), ea, res);
19033
19034   (mc68kcpu)->n_flag = NFLAG_16(res);
19035   (mc68kcpu)->not_z_flag = res;
19036   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19037   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19038}
19039
19040
19041void m68000_base_device_ops::m68k_op_move_16_al_di(m68000_base_device* mc68kcpu)
19042{
19043   UINT32 res = OPER_AY_DI_16(mc68kcpu);
19044   UINT32 ea = EA_AL_16(mc68kcpu);
19045
19046   m68ki_write_16((mc68kcpu), ea, res);
19047
19048   (mc68kcpu)->n_flag = NFLAG_16(res);
19049   (mc68kcpu)->not_z_flag = res;
19050   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19051   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19052}
19053
19054
19055void m68000_base_device_ops::m68k_op_move_16_al_ix(m68000_base_device* mc68kcpu)
19056{
19057   UINT32 res = OPER_AY_IX_16(mc68kcpu);
19058   UINT32 ea = EA_AL_16(mc68kcpu);
19059
19060   m68ki_write_16((mc68kcpu), ea, res);
19061
19062   (mc68kcpu)->n_flag = NFLAG_16(res);
19063   (mc68kcpu)->not_z_flag = res;
19064   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19065   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19066}
19067
19068
19069void m68000_base_device_ops::m68k_op_move_16_al_aw(m68000_base_device* mc68kcpu)
19070{
19071   UINT32 res = OPER_AW_16(mc68kcpu);
19072   UINT32 ea = EA_AL_16(mc68kcpu);
19073
19074   m68ki_write_16((mc68kcpu), ea, res);
19075
19076   (mc68kcpu)->n_flag = NFLAG_16(res);
19077   (mc68kcpu)->not_z_flag = res;
19078   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19079   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19080}
19081
19082
19083void m68000_base_device_ops::m68k_op_move_16_al_al(m68000_base_device* mc68kcpu)
19084{
19085   UINT32 res = OPER_AL_16(mc68kcpu);
19086   UINT32 ea = EA_AL_16(mc68kcpu);
19087
19088   m68ki_write_16((mc68kcpu), ea, res);
19089
19090   (mc68kcpu)->n_flag = NFLAG_16(res);
19091   (mc68kcpu)->not_z_flag = res;
19092   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19093   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19094}
19095
19096
19097void m68000_base_device_ops::m68k_op_move_16_al_pcdi(m68000_base_device* mc68kcpu)
19098{
19099   UINT32 res = OPER_PCDI_16(mc68kcpu);
19100   UINT32 ea = EA_AL_16(mc68kcpu);
19101
19102   m68ki_write_16((mc68kcpu), ea, res);
19103
19104   (mc68kcpu)->n_flag = NFLAG_16(res);
19105   (mc68kcpu)->not_z_flag = res;
19106   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19107   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19108}
19109
19110
19111void m68000_base_device_ops::m68k_op_move_16_al_pcix(m68000_base_device* mc68kcpu)
19112{
19113   UINT32 res = OPER_PCIX_16(mc68kcpu);
19114   UINT32 ea = EA_AL_16(mc68kcpu);
19115
19116   m68ki_write_16((mc68kcpu), ea, res);
19117
19118   (mc68kcpu)->n_flag = NFLAG_16(res);
19119   (mc68kcpu)->not_z_flag = res;
19120   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19121   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19122}
19123
19124
19125void m68000_base_device_ops::m68k_op_move_16_al_i(m68000_base_device* mc68kcpu)
19126{
19127   UINT32 res = OPER_I_16(mc68kcpu);
19128   UINT32 ea = EA_AL_16(mc68kcpu);
19129
19130   m68ki_write_16((mc68kcpu), ea, res);
19131
19132   (mc68kcpu)->n_flag = NFLAG_16(res);
19133   (mc68kcpu)->not_z_flag = res;
19134   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19135   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19136}
19137
19138
19139void m68000_base_device_ops::m68k_op_move_32_d_d(m68000_base_device* mc68kcpu)
19140{
19141   UINT32 res = DY(mc68kcpu);
19142   UINT32* r_dst = &DX(mc68kcpu);
19143
19144   *r_dst = res;
19145
19146   (mc68kcpu)->n_flag = NFLAG_32(res);
19147   (mc68kcpu)->not_z_flag = res;
19148   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19149   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19150}
19151
19152
19153void m68000_base_device_ops::m68k_op_move_32_d_a(m68000_base_device* mc68kcpu)
19154{
19155   UINT32 res = AY(mc68kcpu);
19156   UINT32* r_dst = &DX(mc68kcpu);
19157
19158   *r_dst = res;
19159
19160   (mc68kcpu)->n_flag = NFLAG_32(res);
19161   (mc68kcpu)->not_z_flag = res;
19162   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19163   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19164}
19165
19166
19167void m68000_base_device_ops::m68k_op_move_32_d_ai(m68000_base_device* mc68kcpu)
19168{
19169   UINT32 res = OPER_AY_AI_32(mc68kcpu);
19170   UINT32* r_dst = &DX(mc68kcpu);
19171
19172   *r_dst = res;
19173
19174   (mc68kcpu)->n_flag = NFLAG_32(res);
19175   (mc68kcpu)->not_z_flag = res;
19176   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19177   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19178}
19179
19180
19181void m68000_base_device_ops::m68k_op_move_32_d_pi(m68000_base_device* mc68kcpu)
19182{
19183   UINT32 res = OPER_AY_PI_32(mc68kcpu);
19184   UINT32* r_dst = &DX(mc68kcpu);
19185
19186   *r_dst = res;
19187
19188   (mc68kcpu)->n_flag = NFLAG_32(res);
19189   (mc68kcpu)->not_z_flag = res;
19190   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19191   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19192}
19193
19194
19195void m68000_base_device_ops::m68k_op_move_32_d_pd(m68000_base_device* mc68kcpu)
19196{
19197   UINT32 res = OPER_AY_PD_32(mc68kcpu);
19198   UINT32* r_dst = &DX(mc68kcpu);
19199
19200   *r_dst = res;
19201
19202   (mc68kcpu)->n_flag = NFLAG_32(res);
19203   (mc68kcpu)->not_z_flag = res;
19204   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19205   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19206}
19207
19208
19209void m68000_base_device_ops::m68k_op_move_32_d_di(m68000_base_device* mc68kcpu)
19210{
19211   UINT32 res = OPER_AY_DI_32(mc68kcpu);
19212   UINT32* r_dst = &DX(mc68kcpu);
19213
19214   *r_dst = res;
19215
19216   (mc68kcpu)->n_flag = NFLAG_32(res);
19217   (mc68kcpu)->not_z_flag = res;
19218   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19219   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19220}
19221
19222
19223void m68000_base_device_ops::m68k_op_move_32_d_ix(m68000_base_device* mc68kcpu)
19224{
19225   UINT32 res = OPER_AY_IX_32(mc68kcpu);
19226   UINT32* r_dst = &DX(mc68kcpu);
19227
19228   *r_dst = res;
19229
19230   (mc68kcpu)->n_flag = NFLAG_32(res);
19231   (mc68kcpu)->not_z_flag = res;
19232   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19233   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19234}
19235
19236
19237void m68000_base_device_ops::m68k_op_move_32_d_aw(m68000_base_device* mc68kcpu)
19238{
19239   UINT32 res = OPER_AW_32(mc68kcpu);
19240   UINT32* r_dst = &DX(mc68kcpu);
19241
19242   *r_dst = res;
19243
19244   (mc68kcpu)->n_flag = NFLAG_32(res);
19245   (mc68kcpu)->not_z_flag = res;
19246   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19247   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19248}
19249
19250
19251void m68000_base_device_ops::m68k_op_move_32_d_al(m68000_base_device* mc68kcpu)
19252{
19253   UINT32 res = OPER_AL_32(mc68kcpu);
19254   UINT32* r_dst = &DX(mc68kcpu);
19255
19256   *r_dst = res;
19257
19258   (mc68kcpu)->n_flag = NFLAG_32(res);
19259   (mc68kcpu)->not_z_flag = res;
19260   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19261   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19262}
19263
19264
19265void m68000_base_device_ops::m68k_op_move_32_d_pcdi(m68000_base_device* mc68kcpu)
19266{
19267   UINT32 res = OPER_PCDI_32(mc68kcpu);
19268   UINT32* r_dst = &DX(mc68kcpu);
19269
19270   *r_dst = res;
19271
19272   (mc68kcpu)->n_flag = NFLAG_32(res);
19273   (mc68kcpu)->not_z_flag = res;
19274   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19275   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19276}
19277
19278
19279void m68000_base_device_ops::m68k_op_move_32_d_pcix(m68000_base_device* mc68kcpu)
19280{
19281   UINT32 res = OPER_PCIX_32(mc68kcpu);
19282   UINT32* r_dst = &DX(mc68kcpu);
19283
19284   *r_dst = res;
19285
19286   (mc68kcpu)->n_flag = NFLAG_32(res);
19287   (mc68kcpu)->not_z_flag = res;
19288   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19289   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19290}
19291
19292
19293void m68000_base_device_ops::m68k_op_move_32_d_i(m68000_base_device* mc68kcpu)
19294{
19295   UINT32 res = OPER_I_32(mc68kcpu);
19296   UINT32* r_dst = &DX(mc68kcpu);
19297
19298   *r_dst = res;
19299
19300   (mc68kcpu)->n_flag = NFLAG_32(res);
19301   (mc68kcpu)->not_z_flag = res;
19302   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19303   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19304}
19305
19306
19307void m68000_base_device_ops::m68k_op_move_32_ai_d(m68000_base_device* mc68kcpu)
19308{
19309   UINT32 res = DY(mc68kcpu);
19310   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19311
19312   m68ki_write_32((mc68kcpu), ea, res);
19313
19314   (mc68kcpu)->n_flag = NFLAG_32(res);
19315   (mc68kcpu)->not_z_flag = res;
19316   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19317   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19318}
19319
19320
19321void m68000_base_device_ops::m68k_op_move_32_ai_a(m68000_base_device* mc68kcpu)
19322{
19323   UINT32 res = AY(mc68kcpu);
19324   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19325
19326   m68ki_write_32((mc68kcpu), ea, res);
19327
19328   (mc68kcpu)->n_flag = NFLAG_32(res);
19329   (mc68kcpu)->not_z_flag = res;
19330   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19331   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19332}
19333
19334
19335void m68000_base_device_ops::m68k_op_move_32_ai_ai(m68000_base_device* mc68kcpu)
19336{
19337   UINT32 res = OPER_AY_AI_32(mc68kcpu);
19338   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19339
19340   m68ki_write_32((mc68kcpu), ea, res);
19341
19342   (mc68kcpu)->n_flag = NFLAG_32(res);
19343   (mc68kcpu)->not_z_flag = res;
19344   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19345   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19346}
19347
19348
19349void m68000_base_device_ops::m68k_op_move_32_ai_pi(m68000_base_device* mc68kcpu)
19350{
19351   UINT32 res = OPER_AY_PI_32(mc68kcpu);
19352   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19353
19354   m68ki_write_32((mc68kcpu), ea, res);
19355
19356   (mc68kcpu)->n_flag = NFLAG_32(res);
19357   (mc68kcpu)->not_z_flag = res;
19358   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19359   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19360}
19361
19362
19363void m68000_base_device_ops::m68k_op_move_32_ai_pd(m68000_base_device* mc68kcpu)
19364{
19365   UINT32 res = OPER_AY_PD_32(mc68kcpu);
19366   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19367
19368   m68ki_write_32((mc68kcpu), ea, res);
19369
19370   (mc68kcpu)->n_flag = NFLAG_32(res);
19371   (mc68kcpu)->not_z_flag = res;
19372   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19373   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19374}
19375
19376
19377void m68000_base_device_ops::m68k_op_move_32_ai_di(m68000_base_device* mc68kcpu)
19378{
19379   UINT32 res = OPER_AY_DI_32(mc68kcpu);
19380   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19381
19382   m68ki_write_32((mc68kcpu), ea, res);
19383
19384   (mc68kcpu)->n_flag = NFLAG_32(res);
19385   (mc68kcpu)->not_z_flag = res;
19386   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19387   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19388}
19389
19390
19391void m68000_base_device_ops::m68k_op_move_32_ai_ix(m68000_base_device* mc68kcpu)
19392{
19393   UINT32 res = OPER_AY_IX_32(mc68kcpu);
19394   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19395
19396   m68ki_write_32((mc68kcpu), ea, res);
19397
19398   (mc68kcpu)->n_flag = NFLAG_32(res);
19399   (mc68kcpu)->not_z_flag = res;
19400   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19401   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19402}
19403
19404
19405void m68000_base_device_ops::m68k_op_move_32_ai_aw(m68000_base_device* mc68kcpu)
19406{
19407   UINT32 res = OPER_AW_32(mc68kcpu);
19408   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19409
19410   m68ki_write_32((mc68kcpu), ea, res);
19411
19412   (mc68kcpu)->n_flag = NFLAG_32(res);
19413   (mc68kcpu)->not_z_flag = res;
19414   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19415   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19416}
19417
19418
19419void m68000_base_device_ops::m68k_op_move_32_ai_al(m68000_base_device* mc68kcpu)
19420{
19421   UINT32 res = OPER_AL_32(mc68kcpu);
19422   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19423
19424   m68ki_write_32((mc68kcpu), ea, res);
19425
19426   (mc68kcpu)->n_flag = NFLAG_32(res);
19427   (mc68kcpu)->not_z_flag = res;
19428   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19429   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19430}
19431
19432
19433void m68000_base_device_ops::m68k_op_move_32_ai_pcdi(m68000_base_device* mc68kcpu)
19434{
19435   UINT32 res = OPER_PCDI_32(mc68kcpu);
19436   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19437
19438   m68ki_write_32((mc68kcpu), ea, res);
19439
19440   (mc68kcpu)->n_flag = NFLAG_32(res);
19441   (mc68kcpu)->not_z_flag = res;
19442   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19443   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19444}
19445
19446
19447void m68000_base_device_ops::m68k_op_move_32_ai_pcix(m68000_base_device* mc68kcpu)
19448{
19449   UINT32 res = OPER_PCIX_32(mc68kcpu);
19450   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19451
19452   m68ki_write_32((mc68kcpu), ea, res);
19453
19454   (mc68kcpu)->n_flag = NFLAG_32(res);
19455   (mc68kcpu)->not_z_flag = res;
19456   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19457   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19458}
19459
19460
19461void m68000_base_device_ops::m68k_op_move_32_ai_i(m68000_base_device* mc68kcpu)
19462{
19463   UINT32 res = OPER_I_32(mc68kcpu);
19464   UINT32 ea = EA_AX_AI_32(mc68kcpu);
19465
19466   m68ki_write_32((mc68kcpu), ea, res);
19467
19468   (mc68kcpu)->n_flag = NFLAG_32(res);
19469   (mc68kcpu)->not_z_flag = res;
19470   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19471   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19472}
19473
19474
19475void m68000_base_device_ops::m68k_op_move_32_pi_d(m68000_base_device* mc68kcpu)
19476{
19477   UINT32 res = DY(mc68kcpu);
19478   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19479
19480   m68ki_write_32((mc68kcpu), ea, res);
19481
19482   (mc68kcpu)->n_flag = NFLAG_32(res);
19483   (mc68kcpu)->not_z_flag = res;
19484   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19485   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19486}
19487
19488
19489void m68000_base_device_ops::m68k_op_move_32_pi_a(m68000_base_device* mc68kcpu)
19490{
19491   UINT32 res = AY(mc68kcpu);
19492   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19493
19494   m68ki_write_32((mc68kcpu), ea, res);
19495
19496   (mc68kcpu)->n_flag = NFLAG_32(res);
19497   (mc68kcpu)->not_z_flag = res;
19498   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19499   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19500}
19501
19502
19503void m68000_base_device_ops::m68k_op_move_32_pi_ai(m68000_base_device* mc68kcpu)
19504{
19505   UINT32 res = OPER_AY_AI_32(mc68kcpu);
19506   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19507
19508   m68ki_write_32((mc68kcpu), ea, res);
19509
19510   (mc68kcpu)->n_flag = NFLAG_32(res);
19511   (mc68kcpu)->not_z_flag = res;
19512   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19513   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19514}
19515
19516
19517void m68000_base_device_ops::m68k_op_move_32_pi_pi(m68000_base_device* mc68kcpu)
19518{
19519   UINT32 res = OPER_AY_PI_32(mc68kcpu);
19520   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19521
19522   m68ki_write_32((mc68kcpu), ea, res);
19523
19524   (mc68kcpu)->n_flag = NFLAG_32(res);
19525   (mc68kcpu)->not_z_flag = res;
19526   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19527   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19528}
19529
19530
19531void m68000_base_device_ops::m68k_op_move_32_pi_pd(m68000_base_device* mc68kcpu)
19532{
19533   UINT32 res = OPER_AY_PD_32(mc68kcpu);
19534   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19535
19536   m68ki_write_32((mc68kcpu), ea, res);
19537
19538   (mc68kcpu)->n_flag = NFLAG_32(res);
19539   (mc68kcpu)->not_z_flag = res;
19540   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19541   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19542}
19543
19544
19545void m68000_base_device_ops::m68k_op_move_32_pi_di(m68000_base_device* mc68kcpu)
19546{
19547   UINT32 res = OPER_AY_DI_32(mc68kcpu);
19548   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19549
19550   m68ki_write_32((mc68kcpu), ea, res);
19551
19552   (mc68kcpu)->n_flag = NFLAG_32(res);
19553   (mc68kcpu)->not_z_flag = res;
19554   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19555   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19556}
19557
19558
19559void m68000_base_device_ops::m68k_op_move_32_pi_ix(m68000_base_device* mc68kcpu)
19560{
19561   UINT32 res = OPER_AY_IX_32(mc68kcpu);
19562   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19563
19564   m68ki_write_32((mc68kcpu), ea, res);
19565
19566   (mc68kcpu)->n_flag = NFLAG_32(res);
19567   (mc68kcpu)->not_z_flag = res;
19568   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19569   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19570}
19571
19572
19573void m68000_base_device_ops::m68k_op_move_32_pi_aw(m68000_base_device* mc68kcpu)
19574{
19575   UINT32 res = OPER_AW_32(mc68kcpu);
19576   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19577
19578   m68ki_write_32((mc68kcpu), ea, res);
19579
19580   (mc68kcpu)->n_flag = NFLAG_32(res);
19581   (mc68kcpu)->not_z_flag = res;
19582   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19583   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19584}
19585
19586
19587void m68000_base_device_ops::m68k_op_move_32_pi_al(m68000_base_device* mc68kcpu)
19588{
19589   UINT32 res = OPER_AL_32(mc68kcpu);
19590   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19591
19592   m68ki_write_32((mc68kcpu), ea, res);
19593
19594   (mc68kcpu)->n_flag = NFLAG_32(res);
19595   (mc68kcpu)->not_z_flag = res;
19596   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19597   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19598}
19599
19600
19601void m68000_base_device_ops::m68k_op_move_32_pi_pcdi(m68000_base_device* mc68kcpu)
19602{
19603   UINT32 res = OPER_PCDI_32(mc68kcpu);
19604   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19605
19606   m68ki_write_32((mc68kcpu), ea, res);
19607
19608   (mc68kcpu)->n_flag = NFLAG_32(res);
19609   (mc68kcpu)->not_z_flag = res;
19610   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19611   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19612}
19613
19614
19615void m68000_base_device_ops::m68k_op_move_32_pi_pcix(m68000_base_device* mc68kcpu)
19616{
19617   UINT32 res = OPER_PCIX_32(mc68kcpu);
19618   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19619
19620   m68ki_write_32((mc68kcpu), ea, res);
19621
19622   (mc68kcpu)->n_flag = NFLAG_32(res);
19623   (mc68kcpu)->not_z_flag = res;
19624   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19625   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19626}
19627
19628
19629void m68000_base_device_ops::m68k_op_move_32_pi_i(m68000_base_device* mc68kcpu)
19630{
19631   UINT32 res = OPER_I_32(mc68kcpu);
19632   UINT32 ea = EA_AX_PI_32(mc68kcpu);
19633
19634   m68ki_write_32((mc68kcpu), ea, res);
19635
19636   (mc68kcpu)->n_flag = NFLAG_32(res);
19637   (mc68kcpu)->not_z_flag = res;
19638   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19639   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19640}
19641
19642
19643void m68000_base_device_ops::m68k_op_move_32_pd_d(m68000_base_device* mc68kcpu)
19644{
19645   UINT32 res = DY(mc68kcpu);
19646   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19647
19648   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19649   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19650
19651   (mc68kcpu)->n_flag = NFLAG_32(res);
19652   (mc68kcpu)->not_z_flag = res;
19653   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19654   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19655}
19656
19657
19658void m68000_base_device_ops::m68k_op_move_32_pd_a(m68000_base_device* mc68kcpu)
19659{
19660   UINT32 res = AY(mc68kcpu);
19661   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19662
19663   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19664   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19665
19666   (mc68kcpu)->n_flag = NFLAG_32(res);
19667   (mc68kcpu)->not_z_flag = res;
19668   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19669   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19670}
19671
19672
19673void m68000_base_device_ops::m68k_op_move_32_pd_ai(m68000_base_device* mc68kcpu)
19674{
19675   UINT32 res = OPER_AY_AI_32(mc68kcpu);
19676   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19677
19678   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19679   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19680
19681   (mc68kcpu)->n_flag = NFLAG_32(res);
19682   (mc68kcpu)->not_z_flag = res;
19683   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19684   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19685}
19686
19687
19688void m68000_base_device_ops::m68k_op_move_32_pd_pi(m68000_base_device* mc68kcpu)
19689{
19690   UINT32 res = OPER_AY_PI_32(mc68kcpu);
19691   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19692
19693   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19694   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19695
19696   (mc68kcpu)->n_flag = NFLAG_32(res);
19697   (mc68kcpu)->not_z_flag = res;
19698   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19699   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19700}
19701
19702
19703void m68000_base_device_ops::m68k_op_move_32_pd_pd(m68000_base_device* mc68kcpu)
19704{
19705   UINT32 res = OPER_AY_PD_32(mc68kcpu);
19706   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19707
19708   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19709   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19710
19711   (mc68kcpu)->n_flag = NFLAG_32(res);
19712   (mc68kcpu)->not_z_flag = res;
19713   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19714   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19715}
19716
19717
19718void m68000_base_device_ops::m68k_op_move_32_pd_di(m68000_base_device* mc68kcpu)
19719{
19720   UINT32 res = OPER_AY_DI_32(mc68kcpu);
19721   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19722
19723   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19724   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19725
19726   (mc68kcpu)->n_flag = NFLAG_32(res);
19727   (mc68kcpu)->not_z_flag = res;
19728   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19729   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19730}
19731
19732
19733void m68000_base_device_ops::m68k_op_move_32_pd_ix(m68000_base_device* mc68kcpu)
19734{
19735   UINT32 res = OPER_AY_IX_32(mc68kcpu);
19736   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19737
19738   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19739   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19740
19741   (mc68kcpu)->n_flag = NFLAG_32(res);
19742   (mc68kcpu)->not_z_flag = res;
19743   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19744   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19745}
19746
19747
19748void m68000_base_device_ops::m68k_op_move_32_pd_aw(m68000_base_device* mc68kcpu)
19749{
19750   UINT32 res = OPER_AW_32(mc68kcpu);
19751   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19752
19753   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19754   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19755
19756   (mc68kcpu)->n_flag = NFLAG_32(res);
19757   (mc68kcpu)->not_z_flag = res;
19758   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19759   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19760}
19761
19762
19763void m68000_base_device_ops::m68k_op_move_32_pd_al(m68000_base_device* mc68kcpu)
19764{
19765   UINT32 res = OPER_AL_32(mc68kcpu);
19766   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19767
19768   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19769   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19770
19771   (mc68kcpu)->n_flag = NFLAG_32(res);
19772   (mc68kcpu)->not_z_flag = res;
19773   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19774   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19775}
19776
19777
19778void m68000_base_device_ops::m68k_op_move_32_pd_pcdi(m68000_base_device* mc68kcpu)
19779{
19780   UINT32 res = OPER_PCDI_32(mc68kcpu);
19781   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19782
19783   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19784   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19785
19786   (mc68kcpu)->n_flag = NFLAG_32(res);
19787   (mc68kcpu)->not_z_flag = res;
19788   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19789   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19790}
19791
19792
19793void m68000_base_device_ops::m68k_op_move_32_pd_pcix(m68000_base_device* mc68kcpu)
19794{
19795   UINT32 res = OPER_PCIX_32(mc68kcpu);
19796   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19797
19798   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19799   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19800
19801   (mc68kcpu)->n_flag = NFLAG_32(res);
19802   (mc68kcpu)->not_z_flag = res;
19803   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19804   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19805}
19806
19807
19808void m68000_base_device_ops::m68k_op_move_32_pd_i(m68000_base_device* mc68kcpu)
19809{
19810   UINT32 res = OPER_I_32(mc68kcpu);
19811   UINT32 ea = EA_AX_PD_32(mc68kcpu);
19812
19813   m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
19814   m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
19815
19816   (mc68kcpu)->n_flag = NFLAG_32(res);
19817   (mc68kcpu)->not_z_flag = res;
19818   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19819   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19820}
19821
19822
19823void m68000_base_device_ops::m68k_op_move_32_di_d(m68000_base_device* mc68kcpu)
19824{
19825   UINT32 res = DY(mc68kcpu);
19826   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19827
19828   m68ki_write_32((mc68kcpu), ea, res);
19829
19830   (mc68kcpu)->n_flag = NFLAG_32(res);
19831   (mc68kcpu)->not_z_flag = res;
19832   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19833   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19834}
19835
19836
19837void m68000_base_device_ops::m68k_op_move_32_di_a(m68000_base_device* mc68kcpu)
19838{
19839   UINT32 res = AY(mc68kcpu);
19840   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19841
19842   m68ki_write_32((mc68kcpu), ea, res);
19843
19844   (mc68kcpu)->n_flag = NFLAG_32(res);
19845   (mc68kcpu)->not_z_flag = res;
19846   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19847   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19848}
19849
19850
19851void m68000_base_device_ops::m68k_op_move_32_di_ai(m68000_base_device* mc68kcpu)
19852{
19853   UINT32 res = OPER_AY_AI_32(mc68kcpu);
19854   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19855
19856   m68ki_write_32((mc68kcpu), ea, res);
19857
19858   (mc68kcpu)->n_flag = NFLAG_32(res);
19859   (mc68kcpu)->not_z_flag = res;
19860   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19861   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19862}
19863
19864
19865void m68000_base_device_ops::m68k_op_move_32_di_pi(m68000_base_device* mc68kcpu)
19866{
19867   UINT32 res = OPER_AY_PI_32(mc68kcpu);
19868   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19869
19870   m68ki_write_32((mc68kcpu), ea, res);
19871
19872   (mc68kcpu)->n_flag = NFLAG_32(res);
19873   (mc68kcpu)->not_z_flag = res;
19874   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19875   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19876}
19877
19878
19879void m68000_base_device_ops::m68k_op_move_32_di_pd(m68000_base_device* mc68kcpu)
19880{
19881   UINT32 res = OPER_AY_PD_32(mc68kcpu);
19882   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19883
19884   m68ki_write_32((mc68kcpu), ea, res);
19885
19886   (mc68kcpu)->n_flag = NFLAG_32(res);
19887   (mc68kcpu)->not_z_flag = res;
19888   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19889   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19890}
19891
19892
19893void m68000_base_device_ops::m68k_op_move_32_di_di(m68000_base_device* mc68kcpu)
19894{
19895   UINT32 res = OPER_AY_DI_32(mc68kcpu);
19896   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19897
19898   m68ki_write_32((mc68kcpu), ea, res);
19899
19900   (mc68kcpu)->n_flag = NFLAG_32(res);
19901   (mc68kcpu)->not_z_flag = res;
19902   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19903   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19904}
19905
19906
19907void m68000_base_device_ops::m68k_op_move_32_di_ix(m68000_base_device* mc68kcpu)
19908{
19909   UINT32 res = OPER_AY_IX_32(mc68kcpu);
19910   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19911
19912   m68ki_write_32((mc68kcpu), ea, res);
19913
19914   (mc68kcpu)->n_flag = NFLAG_32(res);
19915   (mc68kcpu)->not_z_flag = res;
19916   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19917   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19918}
19919
19920
19921void m68000_base_device_ops::m68k_op_move_32_di_aw(m68000_base_device* mc68kcpu)
19922{
19923   UINT32 res = OPER_AW_32(mc68kcpu);
19924   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19925
19926   m68ki_write_32((mc68kcpu), ea, res);
19927
19928   (mc68kcpu)->n_flag = NFLAG_32(res);
19929   (mc68kcpu)->not_z_flag = res;
19930   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19931   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19932}
19933
19934
19935void m68000_base_device_ops::m68k_op_move_32_di_al(m68000_base_device* mc68kcpu)
19936{
19937   UINT32 res = OPER_AL_32(mc68kcpu);
19938   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19939
19940   m68ki_write_32((mc68kcpu), ea, res);
19941
19942   (mc68kcpu)->n_flag = NFLAG_32(res);
19943   (mc68kcpu)->not_z_flag = res;
19944   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19945   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19946}
19947
19948
19949void m68000_base_device_ops::m68k_op_move_32_di_pcdi(m68000_base_device* mc68kcpu)
19950{
19951   UINT32 res = OPER_PCDI_32(mc68kcpu);
19952   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19953
19954   m68ki_write_32((mc68kcpu), ea, res);
19955
19956   (mc68kcpu)->n_flag = NFLAG_32(res);
19957   (mc68kcpu)->not_z_flag = res;
19958   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19959   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19960}
19961
19962
19963void m68000_base_device_ops::m68k_op_move_32_di_pcix(m68000_base_device* mc68kcpu)
19964{
19965   UINT32 res = OPER_PCIX_32(mc68kcpu);
19966   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19967
19968   m68ki_write_32((mc68kcpu), ea, res);
19969
19970   (mc68kcpu)->n_flag = NFLAG_32(res);
19971   (mc68kcpu)->not_z_flag = res;
19972   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19973   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19974}
19975
19976
19977void m68000_base_device_ops::m68k_op_move_32_di_i(m68000_base_device* mc68kcpu)
19978{
19979   UINT32 res = OPER_I_32(mc68kcpu);
19980   UINT32 ea = EA_AX_DI_32(mc68kcpu);
19981
19982   m68ki_write_32((mc68kcpu), ea, res);
19983
19984   (mc68kcpu)->n_flag = NFLAG_32(res);
19985   (mc68kcpu)->not_z_flag = res;
19986   (mc68kcpu)->v_flag = VFLAG_CLEAR;
19987   (mc68kcpu)->c_flag = CFLAG_CLEAR;
19988}
19989
19990
19991void m68000_base_device_ops::m68k_op_move_32_ix_d(m68000_base_device* mc68kcpu)
19992{
19993   UINT32 res = DY(mc68kcpu);
19994   UINT32 ea = EA_AX_IX_32(mc68kcpu);
19995
19996   m68ki_write_32((mc68kcpu), ea, res);
19997
19998   (mc68kcpu)->n_flag = NFLAG_32(res);
19999   (mc68kcpu)->not_z_flag = res;
20000   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20001   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20002}
20003
20004
20005void m68000_base_device_ops::m68k_op_move_32_ix_a(m68000_base_device* mc68kcpu)
20006{
20007   UINT32 res = AY(mc68kcpu);
20008   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20009
20010   m68ki_write_32((mc68kcpu), ea, res);
20011
20012   (mc68kcpu)->n_flag = NFLAG_32(res);
20013   (mc68kcpu)->not_z_flag = res;
20014   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20015   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20016}
20017
20018
20019void m68000_base_device_ops::m68k_op_move_32_ix_ai(m68000_base_device* mc68kcpu)
20020{
20021   UINT32 res = OPER_AY_AI_32(mc68kcpu);
20022   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20023
20024   m68ki_write_32((mc68kcpu), ea, res);
20025
20026   (mc68kcpu)->n_flag = NFLAG_32(res);
20027   (mc68kcpu)->not_z_flag = res;
20028   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20029   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20030}
20031
20032
20033void m68000_base_device_ops::m68k_op_move_32_ix_pi(m68000_base_device* mc68kcpu)
20034{
20035   UINT32 res = OPER_AY_PI_32(mc68kcpu);
20036   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20037
20038   m68ki_write_32((mc68kcpu), ea, res);
20039
20040   (mc68kcpu)->n_flag = NFLAG_32(res);
20041   (mc68kcpu)->not_z_flag = res;
20042   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20043   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20044}
20045
20046
20047void m68000_base_device_ops::m68k_op_move_32_ix_pd(m68000_base_device* mc68kcpu)
20048{
20049   UINT32 res = OPER_AY_PD_32(mc68kcpu);
20050   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20051
20052   m68ki_write_32((mc68kcpu), ea, res);
20053
20054   (mc68kcpu)->n_flag = NFLAG_32(res);
20055   (mc68kcpu)->not_z_flag = res;
20056   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20057   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20058}
20059
20060
20061void m68000_base_device_ops::m68k_op_move_32_ix_di(m68000_base_device* mc68kcpu)
20062{
20063   UINT32 res = OPER_AY_DI_32(mc68kcpu);
20064   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20065
20066   m68ki_write_32((mc68kcpu), ea, res);
20067
20068   (mc68kcpu)->n_flag = NFLAG_32(res);
20069   (mc68kcpu)->not_z_flag = res;
20070   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20071   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20072}
20073
20074
20075void m68000_base_device_ops::m68k_op_move_32_ix_ix(m68000_base_device* mc68kcpu)
20076{
20077   UINT32 res = OPER_AY_IX_32(mc68kcpu);
20078   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20079
20080   m68ki_write_32((mc68kcpu), ea, res);
20081
20082   (mc68kcpu)->n_flag = NFLAG_32(res);
20083   (mc68kcpu)->not_z_flag = res;
20084   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20085   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20086}
20087
20088
20089void m68000_base_device_ops::m68k_op_move_32_ix_aw(m68000_base_device* mc68kcpu)
20090{
20091   UINT32 res = OPER_AW_32(mc68kcpu);
20092   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20093
20094   m68ki_write_32((mc68kcpu), ea, res);
20095
20096   (mc68kcpu)->n_flag = NFLAG_32(res);
20097   (mc68kcpu)->not_z_flag = res;
20098   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20099   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20100}
20101
20102
20103void m68000_base_device_ops::m68k_op_move_32_ix_al(m68000_base_device* mc68kcpu)
20104{
20105   UINT32 res = OPER_AL_32(mc68kcpu);
20106   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20107
20108   m68ki_write_32((mc68kcpu), ea, res);
20109
20110   (mc68kcpu)->n_flag = NFLAG_32(res);
20111   (mc68kcpu)->not_z_flag = res;
20112   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20113   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20114}
20115
20116
20117void m68000_base_device_ops::m68k_op_move_32_ix_pcdi(m68000_base_device* mc68kcpu)
20118{
20119   UINT32 res = OPER_PCDI_32(mc68kcpu);
20120   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20121
20122   m68ki_write_32((mc68kcpu), ea, res);
20123
20124   (mc68kcpu)->n_flag = NFLAG_32(res);
20125   (mc68kcpu)->not_z_flag = res;
20126   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20127   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20128}
20129
20130
20131void m68000_base_device_ops::m68k_op_move_32_ix_pcix(m68000_base_device* mc68kcpu)
20132{
20133   UINT32 res = OPER_PCIX_32(mc68kcpu);
20134   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20135
20136   m68ki_write_32((mc68kcpu), ea, res);
20137
20138   (mc68kcpu)->n_flag = NFLAG_32(res);
20139   (mc68kcpu)->not_z_flag = res;
20140   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20141   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20142}
20143
20144
20145void m68000_base_device_ops::m68k_op_move_32_ix_i(m68000_base_device* mc68kcpu)
20146{
20147   UINT32 res = OPER_I_32(mc68kcpu);
20148   UINT32 ea = EA_AX_IX_32(mc68kcpu);
20149
20150   m68ki_write_32((mc68kcpu), ea, res);
20151
20152   (mc68kcpu)->n_flag = NFLAG_32(res);
20153   (mc68kcpu)->not_z_flag = res;
20154   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20155   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20156}
20157
20158
20159void m68000_base_device_ops::m68k_op_move_32_aw_d(m68000_base_device* mc68kcpu)
20160{
20161   UINT32 res = DY(mc68kcpu);
20162   UINT32 ea = EA_AW_32(mc68kcpu);
20163
20164   m68ki_write_32((mc68kcpu), ea, res);
20165
20166   (mc68kcpu)->n_flag = NFLAG_32(res);
20167   (mc68kcpu)->not_z_flag = res;
20168   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20169   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20170}
20171
20172
20173void m68000_base_device_ops::m68k_op_move_32_aw_a(m68000_base_device* mc68kcpu)
20174{
20175   UINT32 res = AY(mc68kcpu);
20176   UINT32 ea = EA_AW_32(mc68kcpu);
20177
20178   m68ki_write_32((mc68kcpu), ea, res);
20179
20180   (mc68kcpu)->n_flag = NFLAG_32(res);
20181   (mc68kcpu)->not_z_flag = res;
20182   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20183   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20184}
20185
20186
20187void m68000_base_device_ops::m68k_op_move_32_aw_ai(m68000_base_device* mc68kcpu)
20188{
20189   UINT32 res = OPER_AY_AI_32(mc68kcpu);
20190   UINT32 ea = EA_AW_32(mc68kcpu);
20191
20192   m68ki_write_32((mc68kcpu), ea, res);
20193
20194   (mc68kcpu)->n_flag = NFLAG_32(res);
20195   (mc68kcpu)->not_z_flag = res;
20196   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20197   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20198}
20199
20200
20201void m68000_base_device_ops::m68k_op_move_32_aw_pi(m68000_base_device* mc68kcpu)
20202{
20203   UINT32 res = OPER_AY_PI_32(mc68kcpu);
20204   UINT32 ea = EA_AW_32(mc68kcpu);
20205
20206   m68ki_write_32((mc68kcpu), ea, res);
20207
20208   (mc68kcpu)->n_flag = NFLAG_32(res);
20209   (mc68kcpu)->not_z_flag = res;
20210   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20211   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20212}
20213
20214
20215void m68000_base_device_ops::m68k_op_move_32_aw_pd(m68000_base_device* mc68kcpu)
20216{
20217   UINT32 res = OPER_AY_PD_32(mc68kcpu);
20218   UINT32 ea = EA_AW_32(mc68kcpu);
20219
20220   m68ki_write_32((mc68kcpu), ea, res);
20221
20222   (mc68kcpu)->n_flag = NFLAG_32(res);
20223   (mc68kcpu)->not_z_flag = res;
20224   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20225   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20226}
20227
20228
20229void m68000_base_device_ops::m68k_op_move_32_aw_di(m68000_base_device* mc68kcpu)
20230{
20231   UINT32 res = OPER_AY_DI_32(mc68kcpu);
20232   UINT32 ea = EA_AW_32(mc68kcpu);
20233
20234   m68ki_write_32((mc68kcpu), ea, res);
20235
20236   (mc68kcpu)->n_flag = NFLAG_32(res);
20237   (mc68kcpu)->not_z_flag = res;
20238   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20239   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20240}
20241
20242
20243void m68000_base_device_ops::m68k_op_move_32_aw_ix(m68000_base_device* mc68kcpu)
20244{
20245   UINT32 res = OPER_AY_IX_32(mc68kcpu);
20246   UINT32 ea = EA_AW_32(mc68kcpu);
20247
20248   m68ki_write_32((mc68kcpu), ea, res);
20249
20250   (mc68kcpu)->n_flag = NFLAG_32(res);
20251   (mc68kcpu)->not_z_flag = res;
20252   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20253   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20254}
20255
20256
20257void m68000_base_device_ops::m68k_op_move_32_aw_aw(m68000_base_device* mc68kcpu)
20258{
20259   UINT32 res = OPER_AW_32(mc68kcpu);
20260   UINT32 ea = EA_AW_32(mc68kcpu);
20261
20262   m68ki_write_32((mc68kcpu), ea, res);
20263
20264   (mc68kcpu)->n_flag = NFLAG_32(res);
20265   (mc68kcpu)->not_z_flag = res;
20266   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20267   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20268}
20269
20270
20271void m68000_base_device_ops::m68k_op_move_32_aw_al(m68000_base_device* mc68kcpu)
20272{
20273   UINT32 res = OPER_AL_32(mc68kcpu);
20274   UINT32 ea = EA_AW_32(mc68kcpu);
20275
20276   m68ki_write_32((mc68kcpu), ea, res);
20277
20278   (mc68kcpu)->n_flag = NFLAG_32(res);
20279   (mc68kcpu)->not_z_flag = res;
20280   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20281   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20282}
20283
20284
20285void m68000_base_device_ops::m68k_op_move_32_aw_pcdi(m68000_base_device* mc68kcpu)
20286{
20287   UINT32 res = OPER_PCDI_32(mc68kcpu);
20288   UINT32 ea = EA_AW_32(mc68kcpu);
20289
20290   m68ki_write_32((mc68kcpu), ea, res);
20291
20292   (mc68kcpu)->n_flag = NFLAG_32(res);
20293   (mc68kcpu)->not_z_flag = res;
20294   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20295   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20296}
20297
20298
20299void m68000_base_device_ops::m68k_op_move_32_aw_pcix(m68000_base_device* mc68kcpu)
20300{
20301   UINT32 res = OPER_PCIX_32(mc68kcpu);
20302   UINT32 ea = EA_AW_32(mc68kcpu);
20303
20304   m68ki_write_32((mc68kcpu), ea, res);
20305
20306   (mc68kcpu)->n_flag = NFLAG_32(res);
20307   (mc68kcpu)->not_z_flag = res;
20308   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20309   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20310}
20311
20312
20313void m68000_base_device_ops::m68k_op_move_32_aw_i(m68000_base_device* mc68kcpu)
20314{
20315   UINT32 res = OPER_I_32(mc68kcpu);
20316   UINT32 ea = EA_AW_32(mc68kcpu);
20317
20318   m68ki_write_32((mc68kcpu), ea, res);
20319
20320   (mc68kcpu)->n_flag = NFLAG_32(res);
20321   (mc68kcpu)->not_z_flag = res;
20322   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20323   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20324}
20325
20326
20327void m68000_base_device_ops::m68k_op_move_32_al_d(m68000_base_device* mc68kcpu)
20328{
20329   UINT32 res = DY(mc68kcpu);
20330   UINT32 ea = EA_AL_32(mc68kcpu);
20331
20332   m68ki_write_32((mc68kcpu), ea, res);
20333
20334   (mc68kcpu)->n_flag = NFLAG_32(res);
20335   (mc68kcpu)->not_z_flag = res;
20336   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20337   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20338}
20339
20340
20341void m68000_base_device_ops::m68k_op_move_32_al_a(m68000_base_device* mc68kcpu)
20342{
20343   UINT32 res = AY(mc68kcpu);
20344   UINT32 ea = EA_AL_32(mc68kcpu);
20345
20346   m68ki_write_32((mc68kcpu), ea, res);
20347
20348   (mc68kcpu)->n_flag = NFLAG_32(res);
20349   (mc68kcpu)->not_z_flag = res;
20350   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20351   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20352}
20353
20354
20355void m68000_base_device_ops::m68k_op_move_32_al_ai(m68000_base_device* mc68kcpu)
20356{
20357   UINT32 res = OPER_AY_AI_32(mc68kcpu);
20358   UINT32 ea = EA_AL_32(mc68kcpu);
20359
20360   m68ki_write_32((mc68kcpu), ea, res);
20361
20362   (mc68kcpu)->n_flag = NFLAG_32(res);
20363   (mc68kcpu)->not_z_flag = res;
20364   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20365   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20366}
20367
20368
20369void m68000_base_device_ops::m68k_op_move_32_al_pi(m68000_base_device* mc68kcpu)
20370{
20371   UINT32 res = OPER_AY_PI_32(mc68kcpu);
20372   UINT32 ea = EA_AL_32(mc68kcpu);
20373
20374   m68ki_write_32((mc68kcpu), ea, res);
20375
20376   (mc68kcpu)->n_flag = NFLAG_32(res);
20377   (mc68kcpu)->not_z_flag = res;
20378   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20379   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20380}
20381
20382
20383void m68000_base_device_ops::m68k_op_move_32_al_pd(m68000_base_device* mc68kcpu)
20384{
20385   UINT32 res = OPER_AY_PD_32(mc68kcpu);
20386   UINT32 ea = EA_AL_32(mc68kcpu);
20387
20388   m68ki_write_32((mc68kcpu), ea, res);
20389
20390   (mc68kcpu)->n_flag = NFLAG_32(res);
20391   (mc68kcpu)->not_z_flag = res;
20392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20393   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20394}
20395
20396
20397void m68000_base_device_ops::m68k_op_move_32_al_di(m68000_base_device* mc68kcpu)
20398{
20399   UINT32 res = OPER_AY_DI_32(mc68kcpu);
20400   UINT32 ea = EA_AL_32(mc68kcpu);
20401
20402   m68ki_write_32((mc68kcpu), ea, res);
20403
20404   (mc68kcpu)->n_flag = NFLAG_32(res);
20405   (mc68kcpu)->not_z_flag = res;
20406   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20407   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20408}
20409
20410
20411void m68000_base_device_ops::m68k_op_move_32_al_ix(m68000_base_device* mc68kcpu)
20412{
20413   UINT32 res = OPER_AY_IX_32(mc68kcpu);
20414   UINT32 ea = EA_AL_32(mc68kcpu);
20415
20416   m68ki_write_32((mc68kcpu), ea, res);
20417
20418   (mc68kcpu)->n_flag = NFLAG_32(res);
20419   (mc68kcpu)->not_z_flag = res;
20420   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20421   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20422}
20423
20424
20425void m68000_base_device_ops::m68k_op_move_32_al_aw(m68000_base_device* mc68kcpu)
20426{
20427   UINT32 res = OPER_AW_32(mc68kcpu);
20428   UINT32 ea = EA_AL_32(mc68kcpu);
20429
20430   m68ki_write_32((mc68kcpu), ea, res);
20431
20432   (mc68kcpu)->n_flag = NFLAG_32(res);
20433   (mc68kcpu)->not_z_flag = res;
20434   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20435   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20436}
20437
20438
20439void m68000_base_device_ops::m68k_op_move_32_al_al(m68000_base_device* mc68kcpu)
20440{
20441   UINT32 res = OPER_AL_32(mc68kcpu);
20442   UINT32 ea = EA_AL_32(mc68kcpu);
20443
20444   m68ki_write_32((mc68kcpu), ea, res);
20445
20446   (mc68kcpu)->n_flag = NFLAG_32(res);
20447   (mc68kcpu)->not_z_flag = res;
20448   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20449   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20450}
20451
20452
20453void m68000_base_device_ops::m68k_op_move_32_al_pcdi(m68000_base_device* mc68kcpu)
20454{
20455   UINT32 res = OPER_PCDI_32(mc68kcpu);
20456   UINT32 ea = EA_AL_32(mc68kcpu);
20457
20458   m68ki_write_32((mc68kcpu), ea, res);
20459
20460   (mc68kcpu)->n_flag = NFLAG_32(res);
20461   (mc68kcpu)->not_z_flag = res;
20462   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20463   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20464}
20465
20466
20467void m68000_base_device_ops::m68k_op_move_32_al_pcix(m68000_base_device* mc68kcpu)
20468{
20469   UINT32 res = OPER_PCIX_32(mc68kcpu);
20470   UINT32 ea = EA_AL_32(mc68kcpu);
20471
20472   m68ki_write_32((mc68kcpu), ea, res);
20473
20474   (mc68kcpu)->n_flag = NFLAG_32(res);
20475   (mc68kcpu)->not_z_flag = res;
20476   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20477   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20478}
20479
20480
20481void m68000_base_device_ops::m68k_op_move_32_al_i(m68000_base_device* mc68kcpu)
20482{
20483   UINT32 res = OPER_I_32(mc68kcpu);
20484   UINT32 ea = EA_AL_32(mc68kcpu);
20485
20486   m68ki_write_32((mc68kcpu), ea, res);
20487
20488   (mc68kcpu)->n_flag = NFLAG_32(res);
20489   (mc68kcpu)->not_z_flag = res;
20490   (mc68kcpu)->v_flag = VFLAG_CLEAR;
20491   (mc68kcpu)->c_flag = CFLAG_CLEAR;
20492}
20493
20494
20495void m68000_base_device_ops::m68k_op_movea_16_d(m68000_base_device* mc68kcpu)
20496{
20497   AX(mc68kcpu) = MAKE_INT_16(DY(mc68kcpu));
20498}
20499
20500
20501void m68000_base_device_ops::m68k_op_movea_16_a(m68000_base_device* mc68kcpu)
20502{
20503   AX(mc68kcpu) = MAKE_INT_16(AY(mc68kcpu));
20504}
20505
20506
20507void m68000_base_device_ops::m68k_op_movea_16_ai(m68000_base_device* mc68kcpu)
20508{
20509   AX(mc68kcpu) = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
20510}
20511
20512
20513void m68000_base_device_ops::m68k_op_movea_16_pi(m68000_base_device* mc68kcpu)
20514{
20515   AX(mc68kcpu) = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
20516}
20517
20518
20519void m68000_base_device_ops::m68k_op_movea_16_pd(m68000_base_device* mc68kcpu)
20520{
20521   AX(mc68kcpu) = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
20522}
20523
20524
20525void m68000_base_device_ops::m68k_op_movea_16_di(m68000_base_device* mc68kcpu)
20526{
20527   AX(mc68kcpu) = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
20528}
20529
20530
20531void m68000_base_device_ops::m68k_op_movea_16_ix(m68000_base_device* mc68kcpu)
20532{
20533   AX(mc68kcpu) = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
20534}
20535
20536
20537void m68000_base_device_ops::m68k_op_movea_16_aw(m68000_base_device* mc68kcpu)
20538{
20539   AX(mc68kcpu) = MAKE_INT_16(OPER_AW_16(mc68kcpu));
20540}
20541
20542
20543void m68000_base_device_ops::m68k_op_movea_16_al(m68000_base_device* mc68kcpu)
20544{
20545   AX(mc68kcpu) = MAKE_INT_16(OPER_AL_16(mc68kcpu));
20546}
20547
20548
20549void m68000_base_device_ops::m68k_op_movea_16_pcdi(m68000_base_device* mc68kcpu)
20550{
20551   AX(mc68kcpu) = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
20552}
20553
20554
20555void m68000_base_device_ops::m68k_op_movea_16_pcix(m68000_base_device* mc68kcpu)
20556{
20557   AX(mc68kcpu) = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
20558}
20559
20560
20561void m68000_base_device_ops::m68k_op_movea_16_i(m68000_base_device* mc68kcpu)
20562{
20563   AX(mc68kcpu) = MAKE_INT_16(OPER_I_16(mc68kcpu));
20564}
20565
20566
20567void m68000_base_device_ops::m68k_op_movea_32_d(m68000_base_device* mc68kcpu)
20568{
20569   AX(mc68kcpu) = DY(mc68kcpu);
20570}
20571
20572
20573void m68000_base_device_ops::m68k_op_movea_32_a(m68000_base_device* mc68kcpu)
20574{
20575   AX(mc68kcpu) = AY(mc68kcpu);
20576}
20577
20578
20579void m68000_base_device_ops::m68k_op_movea_32_ai(m68000_base_device* mc68kcpu)
20580{
20581   AX(mc68kcpu) = OPER_AY_AI_32(mc68kcpu);
20582}
20583
20584
20585void m68000_base_device_ops::m68k_op_movea_32_pi(m68000_base_device* mc68kcpu)
20586{
20587   AX(mc68kcpu) = OPER_AY_PI_32(mc68kcpu);
20588}
20589
20590
20591void m68000_base_device_ops::m68k_op_movea_32_pd(m68000_base_device* mc68kcpu)
20592{
20593   AX(mc68kcpu) = OPER_AY_PD_32(mc68kcpu);
20594}
20595
20596
20597void m68000_base_device_ops::m68k_op_movea_32_di(m68000_base_device* mc68kcpu)
20598{
20599   AX(mc68kcpu) = OPER_AY_DI_32(mc68kcpu);
20600}
20601
20602
20603void m68000_base_device_ops::m68k_op_movea_32_ix(m68000_base_device* mc68kcpu)
20604{
20605   AX(mc68kcpu) = OPER_AY_IX_32(mc68kcpu);
20606}
20607
20608
20609void m68000_base_device_ops::m68k_op_movea_32_aw(m68000_base_device* mc68kcpu)
20610{
20611   AX(mc68kcpu) = OPER_AW_32(mc68kcpu);
20612}
20613
20614
20615void m68000_base_device_ops::m68k_op_movea_32_al(m68000_base_device* mc68kcpu)
20616{
20617   AX(mc68kcpu) = OPER_AL_32(mc68kcpu);
20618}
20619
20620
20621void m68000_base_device_ops::m68k_op_movea_32_pcdi(m68000_base_device* mc68kcpu)
20622{
20623   AX(mc68kcpu) = OPER_PCDI_32(mc68kcpu);
20624}
20625
20626
20627void m68000_base_device_ops::m68k_op_movea_32_pcix(m68000_base_device* mc68kcpu)
20628{
20629   AX(mc68kcpu) = OPER_PCIX_32(mc68kcpu);
20630}
20631
20632
20633void m68000_base_device_ops::m68k_op_movea_32_i(m68000_base_device* mc68kcpu)
20634{
20635   AX(mc68kcpu) = OPER_I_32(mc68kcpu);
20636}
20637
20638
20639void m68000_base_device_ops::m68k_op_move_16_frc_d(m68000_base_device* mc68kcpu)
20640{
20641   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20642   {
20643      DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_ccr(mc68kcpu);
20644      return;
20645   }
20646   m68ki_exception_illegal(mc68kcpu);
20647}
20648
20649
20650void m68000_base_device_ops::m68k_op_move_16_frc_ai(m68000_base_device* mc68kcpu)
20651{
20652   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20653   {
20654      m68ki_write_16((mc68kcpu), EA_AY_AI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20655      return;
20656   }
20657   m68ki_exception_illegal(mc68kcpu);
20658}
20659
20660
20661void m68000_base_device_ops::m68k_op_move_16_frc_pi(m68000_base_device* mc68kcpu)
20662{
20663   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20664   {
20665      m68ki_write_16((mc68kcpu), EA_AY_PI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20666      return;
20667   }
20668   m68ki_exception_illegal(mc68kcpu);
20669}
20670
20671
20672void m68000_base_device_ops::m68k_op_move_16_frc_pd(m68000_base_device* mc68kcpu)
20673{
20674   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20675   {
20676      m68ki_write_16((mc68kcpu), EA_AY_PD_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20677      return;
20678   }
20679   m68ki_exception_illegal(mc68kcpu);
20680}
20681
20682
20683void m68000_base_device_ops::m68k_op_move_16_frc_di(m68000_base_device* mc68kcpu)
20684{
20685   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20686   {
20687      m68ki_write_16((mc68kcpu), EA_AY_DI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20688      return;
20689   }
20690   m68ki_exception_illegal(mc68kcpu);
20691}
20692
20693
20694void m68000_base_device_ops::m68k_op_move_16_frc_ix(m68000_base_device* mc68kcpu)
20695{
20696   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20697   {
20698      m68ki_write_16((mc68kcpu), EA_AY_IX_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20699      return;
20700   }
20701   m68ki_exception_illegal(mc68kcpu);
20702}
20703
20704
20705void m68000_base_device_ops::m68k_op_move_16_frc_aw(m68000_base_device* mc68kcpu)
20706{
20707   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20708   {
20709      m68ki_write_16((mc68kcpu), EA_AW_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20710      return;
20711   }
20712   m68ki_exception_illegal(mc68kcpu);
20713}
20714
20715
20716void m68000_base_device_ops::m68k_op_move_16_frc_al(m68000_base_device* mc68kcpu)
20717{
20718   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
20719   {
20720      m68ki_write_16((mc68kcpu), EA_AL_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
20721      return;
20722   }
20723   m68ki_exception_illegal(mc68kcpu);
20724}
20725
20726
20727void m68000_base_device_ops::m68k_op_move_16_toc_d(m68000_base_device* mc68kcpu)
20728{
20729   m68ki_set_ccr((mc68kcpu), DY(mc68kcpu));
20730}
20731
20732
20733void m68000_base_device_ops::m68k_op_move_16_toc_ai(m68000_base_device* mc68kcpu)
20734{
20735   m68ki_set_ccr((mc68kcpu), OPER_AY_AI_16(mc68kcpu));
20736}
20737
20738
20739void m68000_base_device_ops::m68k_op_move_16_toc_pi(m68000_base_device* mc68kcpu)
20740{
20741   m68ki_set_ccr((mc68kcpu), OPER_AY_PI_16(mc68kcpu));
20742}
20743
20744
20745void m68000_base_device_ops::m68k_op_move_16_toc_pd(m68000_base_device* mc68kcpu)
20746{
20747   m68ki_set_ccr((mc68kcpu), OPER_AY_PD_16(mc68kcpu));
20748}
20749
20750
20751void m68000_base_device_ops::m68k_op_move_16_toc_di(m68000_base_device* mc68kcpu)
20752{
20753   m68ki_set_ccr((mc68kcpu), OPER_AY_DI_16(mc68kcpu));
20754}
20755
20756
20757void m68000_base_device_ops::m68k_op_move_16_toc_ix(m68000_base_device* mc68kcpu)
20758{
20759   m68ki_set_ccr((mc68kcpu), OPER_AY_IX_16(mc68kcpu));
20760}
20761
20762
20763void m68000_base_device_ops::m68k_op_move_16_toc_aw(m68000_base_device* mc68kcpu)
20764{
20765   m68ki_set_ccr((mc68kcpu), OPER_AW_16(mc68kcpu));
20766}
20767
20768
20769void m68000_base_device_ops::m68k_op_move_16_toc_al(m68000_base_device* mc68kcpu)
20770{
20771   m68ki_set_ccr((mc68kcpu), OPER_AL_16(mc68kcpu));
20772}
20773
20774
20775void m68000_base_device_ops::m68k_op_move_16_toc_pcdi(m68000_base_device* mc68kcpu)
20776{
20777   m68ki_set_ccr((mc68kcpu), OPER_PCDI_16(mc68kcpu));
20778}
20779
20780
20781void m68000_base_device_ops::m68k_op_move_16_toc_pcix(m68000_base_device* mc68kcpu)
20782{
20783   m68ki_set_ccr((mc68kcpu), OPER_PCIX_16(mc68kcpu));
20784}
20785
20786
20787void m68000_base_device_ops::m68k_op_move_16_toc_i(m68000_base_device* mc68kcpu)
20788{
20789   m68ki_set_ccr((mc68kcpu), OPER_I_16(mc68kcpu));
20790}
20791
20792
20793void m68000_base_device_ops::m68k_op_move_16_frs_d(m68000_base_device* mc68kcpu)
20794{
20795   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20796   {
20797      DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_sr(mc68kcpu);
20798      return;
20799   }
20800   m68ki_exception_privilege_violation(mc68kcpu);
20801}
20802
20803
20804void m68000_base_device_ops::m68k_op_move_16_frs_ai(m68000_base_device* mc68kcpu)
20805{
20806   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20807   {
20808      UINT32 ea = EA_AY_AI_16(mc68kcpu);
20809      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20810      return;
20811   }
20812   m68ki_exception_privilege_violation(mc68kcpu);
20813}
20814
20815
20816void m68000_base_device_ops::m68k_op_move_16_frs_pi(m68000_base_device* mc68kcpu)
20817{
20818   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20819   {
20820      UINT32 ea = EA_AY_PI_16(mc68kcpu);
20821      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20822      return;
20823   }
20824   m68ki_exception_privilege_violation(mc68kcpu);
20825}
20826
20827
20828void m68000_base_device_ops::m68k_op_move_16_frs_pd(m68000_base_device* mc68kcpu)
20829{
20830   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20831   {
20832      UINT32 ea = EA_AY_PD_16(mc68kcpu);
20833      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20834      return;
20835   }
20836   m68ki_exception_privilege_violation(mc68kcpu);
20837}
20838
20839
20840void m68000_base_device_ops::m68k_op_move_16_frs_di(m68000_base_device* mc68kcpu)
20841{
20842   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20843   {
20844      UINT32 ea = EA_AY_DI_16(mc68kcpu);
20845      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20846      return;
20847   }
20848   m68ki_exception_privilege_violation(mc68kcpu);
20849}
20850
20851
20852void m68000_base_device_ops::m68k_op_move_16_frs_ix(m68000_base_device* mc68kcpu)
20853{
20854   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20855   {
20856      UINT32 ea = EA_AY_IX_16(mc68kcpu);
20857      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20858      return;
20859   }
20860   m68ki_exception_privilege_violation(mc68kcpu);
20861}
20862
20863
20864void m68000_base_device_ops::m68k_op_move_16_frs_aw(m68000_base_device* mc68kcpu)
20865{
20866   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20867   {
20868      UINT32 ea = EA_AW_16(mc68kcpu);
20869      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20870      return;
20871   }
20872   m68ki_exception_privilege_violation(mc68kcpu);
20873}
20874
20875
20876void m68000_base_device_ops::m68k_op_move_16_frs_al(m68000_base_device* mc68kcpu)
20877{
20878   if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
20879   {
20880      UINT32 ea = EA_AL_16(mc68kcpu);
20881      m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
20882      return;
20883   }
20884   m68ki_exception_privilege_violation(mc68kcpu);
20885}
20886
20887
20888void m68000_base_device_ops::m68k_op_move_16_tos_d(m68000_base_device* mc68kcpu)
20889{
20890   if((mc68kcpu)->s_flag)
20891   {
20892      m68ki_set_sr((mc68kcpu), DY(mc68kcpu));
20893      return;
20894   }
20895   m68ki_exception_privilege_violation(mc68kcpu);
20896}
20897
20898
20899void m68000_base_device_ops::m68k_op_move_16_tos_ai(m68000_base_device* mc68kcpu)
20900{
20901   if((mc68kcpu)->s_flag)
20902   {
20903      UINT32 new_sr = OPER_AY_AI_16(mc68kcpu);
20904      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20905      m68ki_set_sr((mc68kcpu), new_sr);
20906      return;
20907   }
20908   m68ki_exception_privilege_violation(mc68kcpu);
20909}
20910
20911
20912void m68000_base_device_ops::m68k_op_move_16_tos_pi(m68000_base_device* mc68kcpu)
20913{
20914   if((mc68kcpu)->s_flag)
20915   {
20916      UINT32 new_sr = OPER_AY_PI_16(mc68kcpu);
20917      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20918      m68ki_set_sr((mc68kcpu), new_sr);
20919      return;
20920   }
20921   m68ki_exception_privilege_violation(mc68kcpu);
20922}
20923
20924
20925void m68000_base_device_ops::m68k_op_move_16_tos_pd(m68000_base_device* mc68kcpu)
20926{
20927   if((mc68kcpu)->s_flag)
20928   {
20929      UINT32 new_sr = OPER_AY_PD_16(mc68kcpu);
20930      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20931      m68ki_set_sr((mc68kcpu), new_sr);
20932      return;
20933   }
20934   m68ki_exception_privilege_violation(mc68kcpu);
20935}
20936
20937
20938void m68000_base_device_ops::m68k_op_move_16_tos_di(m68000_base_device* mc68kcpu)
20939{
20940   if((mc68kcpu)->s_flag)
20941   {
20942      UINT32 new_sr = OPER_AY_DI_16(mc68kcpu);
20943      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20944      m68ki_set_sr((mc68kcpu), new_sr);
20945      return;
20946   }
20947   m68ki_exception_privilege_violation(mc68kcpu);
20948}
20949
20950
20951void m68000_base_device_ops::m68k_op_move_16_tos_ix(m68000_base_device* mc68kcpu)
20952{
20953   if((mc68kcpu)->s_flag)
20954   {
20955      UINT32 new_sr = OPER_AY_IX_16(mc68kcpu);
20956      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20957      m68ki_set_sr((mc68kcpu), new_sr);
20958      return;
20959   }
20960   m68ki_exception_privilege_violation(mc68kcpu);
20961}
20962
20963
20964void m68000_base_device_ops::m68k_op_move_16_tos_aw(m68000_base_device* mc68kcpu)
20965{
20966   if((mc68kcpu)->s_flag)
20967   {
20968      UINT32 new_sr = OPER_AW_16(mc68kcpu);
20969      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20970      m68ki_set_sr((mc68kcpu), new_sr);
20971      return;
20972   }
20973   m68ki_exception_privilege_violation(mc68kcpu);
20974}
20975
20976
20977void m68000_base_device_ops::m68k_op_move_16_tos_al(m68000_base_device* mc68kcpu)
20978{
20979   if((mc68kcpu)->s_flag)
20980   {
20981      UINT32 new_sr = OPER_AL_16(mc68kcpu);
20982      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20983      m68ki_set_sr((mc68kcpu), new_sr);
20984      return;
20985   }
20986   m68ki_exception_privilege_violation(mc68kcpu);
20987}
20988
20989
20990void m68000_base_device_ops::m68k_op_move_16_tos_pcdi(m68000_base_device* mc68kcpu)
20991{
20992   if((mc68kcpu)->s_flag)
20993   {
20994      UINT32 new_sr = OPER_PCDI_16(mc68kcpu);
20995      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
20996      m68ki_set_sr((mc68kcpu), new_sr);
20997      return;
20998   }
20999   m68ki_exception_privilege_violation(mc68kcpu);
21000}
21001
21002
21003void m68000_base_device_ops::m68k_op_move_16_tos_pcix(m68000_base_device* mc68kcpu)
21004{
21005   if((mc68kcpu)->s_flag)
21006   {
21007      UINT32 new_sr = OPER_PCIX_16(mc68kcpu);
21008      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
21009      m68ki_set_sr((mc68kcpu), new_sr);
21010      return;
21011   }
21012   m68ki_exception_privilege_violation(mc68kcpu);
21013}
21014
21015
21016void m68000_base_device_ops::m68k_op_move_16_tos_i(m68000_base_device* mc68kcpu)
21017{
21018   if((mc68kcpu)->s_flag)
21019   {
21020      UINT32 new_sr = OPER_I_16(mc68kcpu);
21021      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
21022      m68ki_set_sr((mc68kcpu), new_sr);
21023      return;
21024   }
21025   m68ki_exception_privilege_violation(mc68kcpu);
21026}
21027
21028
21029void m68000_base_device_ops::m68k_op_move_32_fru(m68000_base_device* mc68kcpu)
21030{
21031   if((mc68kcpu)->s_flag)
21032   {
21033      AY(mc68kcpu) = REG_USP(mc68kcpu);
21034      return;
21035   }
21036   m68ki_exception_privilege_violation(mc68kcpu);
21037}
21038
21039
21040void m68000_base_device_ops::m68k_op_move_32_tou(m68000_base_device* mc68kcpu)
21041{
21042   if((mc68kcpu)->s_flag)
21043   {
21044      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
21045      REG_USP(mc68kcpu) = AY(mc68kcpu);
21046      return;
21047   }
21048   m68ki_exception_privilege_violation(mc68kcpu);
21049}
21050
21051
21052void m68000_base_device_ops::m68k_op_movec_32_cr(m68000_base_device* mc68kcpu)
21053{
21054   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
21055   {
21056      if((mc68kcpu)->s_flag)
21057      {
21058         UINT32 word2 = OPER_I_16(mc68kcpu);
21059
21060         m68ki_trace_t0(mc68kcpu);          /* auto-disable (see m68kcpu.h) */
21061         switch (word2 & 0xfff)
21062         {
21063         case 0x000:            /* SFC */
21064            REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->sfc;
21065            return;
21066         case 0x001:            /* DFC */
21067            REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->dfc;
21068            return;
21069         case 0x002:            /* CACR */
21070            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21071            {
21072               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->cacr;
21073               return;
21074            }
21075            return;
21076         case 0x800:            /* USP */
21077            REG_DA(mc68kcpu)[(word2 >> 12) & 15] = REG_USP(mc68kcpu);
21078            return;
21079         case 0x801:            /* VBR */
21080            REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->vbr;
21081            return;
21082         case 0x802:            /* CAAR */
21083            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21084            {
21085               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->caar;
21086               return;
21087            }
21088            m68ki_exception_illegal(mc68kcpu);
21089            break;
21090         case 0x803:            /* MSP */
21091            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21092            {
21093               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_SP(mc68kcpu) : REG_MSP(mc68kcpu);
21094               return;
21095            }
21096            m68ki_exception_illegal(mc68kcpu);
21097            return;
21098         case 0x804:            /* ISP */
21099            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21100            {
21101               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_ISP(mc68kcpu) : REG_SP(mc68kcpu);
21102               return;
21103            }
21104            m68ki_exception_illegal(mc68kcpu);
21105            return;
21106         case 0x003:             /* TC */
21107            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21108            {
21109               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_tc;
21110               return;
21111            }
21112            m68ki_exception_illegal(mc68kcpu);
21113            return;
21114         case 0x004:             /* ITT0 (040+, ACR0 on ColdFire) */
21115            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21116            {
21117               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt0;
21118               return;
21119            }
21120            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21121            {
21122               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr0;
21123               return;
21124            }
21125            m68ki_exception_illegal(mc68kcpu);
21126            return;
21127         case 0x005:             /* ITT1 (040+, ACR1 on ColdFire) */
21128            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21129            {
21130               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt1;
21131               return;
21132            }
21133            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21134            {
21135               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr1;
21136               return;
21137            }
21138            m68ki_exception_illegal(mc68kcpu);
21139            return;
21140         case 0x006:             /* DTT0 */
21141            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21142            {
21143               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt0;
21144               return;
21145            }
21146            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21147            {
21148               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr2;
21149               return;
21150            }
21151            m68ki_exception_illegal(mc68kcpu);
21152            return;
21153         case 0x007:             /* DTT1 */
21154            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21155            {
21156               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt1;
21157               return;
21158            }
21159            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21160            {
21161               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr3;
21162               return;
21163            }
21164            m68ki_exception_illegal(mc68kcpu);
21165            return;
21166         case 0x805:             /* MMUSR */
21167            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21168            {
21169               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_sr_040;
21170               return;
21171            }
21172            m68ki_exception_illegal(mc68kcpu);
21173            return;
21174         case 0x806:             /* URP */
21175            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21176            {
21177               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_urp_aptr;
21178               return;
21179            }
21180            m68ki_exception_illegal(mc68kcpu);
21181            return;
21182         case 0x807:             /* SRP */
21183            if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21184            {
21185               REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_srp_aptr;
21186               return;
21187            }
21188            m68ki_exception_illegal(mc68kcpu);
21189            return;
21190         case 0xc00: // ROMBAR0
21191            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21192            {
21193               /* TODO */
21194               return;
21195            }
21196            m68ki_exception_illegal(mc68kcpu);
21197            return;
21198         case 0xc01: // ROMBAR1
21199            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21200            {
21201               /* TODO */
21202               return;
21203            }
21204            m68ki_exception_illegal(mc68kcpu);
21205            return;
21206         case 0xc04: // RAMBAR0
21207            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21208            {
21209               /* TODO */
21210               return;
21211            }
21212            m68ki_exception_illegal(mc68kcpu);
21213            return;
21214         case 0xc05: // RAMBAR1
21215            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21216            {
21217               /* TODO */
21218               return;
21219            }
21220            m68ki_exception_illegal(mc68kcpu);
21221            return;
21222         case 0xc0c: // MPCR
21223            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21224            {
21225               /* TODO */
21226               return;
21227            }
21228            m68ki_exception_illegal(mc68kcpu);
21229            return;
21230         case 0xc0d: // EDRAMBAR
21231            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21232            {
21233               /* TODO */
21234               return;
21235            }
21236            m68ki_exception_illegal(mc68kcpu);
21237            return;
21238         case 0xc0e: // SECMBAR
21239            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21240            {
21241               /* TODO */
21242               return;
21243            }
21244            m68ki_exception_illegal(mc68kcpu);
21245            return;
21246         case 0xc0f: // MBAR
21247            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21248            {
21249               /* TODO */
21250               return;
21251            }
21252            m68ki_exception_illegal(mc68kcpu);
21253            return;
21254         default:
21255            m68ki_exception_illegal(mc68kcpu);
21256            return;
21257         }
21258      }
21259      m68ki_exception_privilege_violation(mc68kcpu);
21260      return;
21261   }
21262   m68ki_exception_illegal(mc68kcpu);
21263}
21264
21265
21266void m68000_base_device_ops::m68k_op_movec_32_rc(m68000_base_device* mc68kcpu)
21267{
21268   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
21269   {
21270      if((mc68kcpu)->s_flag)
21271      {
21272         UINT32 word2 = OPER_I_16(mc68kcpu);
21273
21274         m68ki_trace_t0(mc68kcpu);          /* auto-disable (see m68kcpu.h) */
21275         switch (word2 & 0xfff)
21276         {
21277         case 0x000:            /* SFC */
21278            (mc68kcpu)->sfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
21279            return;
21280         case 0x001:            /* DFC */
21281            (mc68kcpu)->dfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
21282            return;
21283         case 0x002:            /* CACR */
21284            /* Only EC020 and later have CACR */
21285            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21286            {
21287               /* 68030 can write all bits except 5-7, 040 can write all */
21288               if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21289               {
21290                  (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21291               }
21292               else if (CPU_TYPE_IS_030_PLUS((mc68kcpu)->cpu_type))
21293               {
21294                  (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0xff1f;
21295               }
21296               else
21297               {
21298                  (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f;
21299               }
21300
21301//                  logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr);
21302               if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI))
21303               {
21304                  m68ki_ic_clear(mc68kcpu);
21305               }
21306               return;
21307            }
21308            m68ki_exception_illegal(mc68kcpu);
21309            return;
21310         case 0x800:            /* USP */
21311            REG_USP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21312            return;
21313         case 0x801:            /* VBR */
21314            (mc68kcpu)->vbr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21315            return;
21316         case 0x802:            /* CAAR */
21317            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21318            {
21319               (mc68kcpu)->caar = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21320               return;
21321            }
21322            m68ki_exception_illegal(mc68kcpu);
21323            return;
21324         case 0x803:            /* MSP */
21325            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21326            {
21327               /* we are in supervisor mode so just check for M flag */
21328               if(!(mc68kcpu)->m_flag)
21329               {
21330                  REG_MSP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21331                  return;
21332               }
21333               REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21334               return;
21335            }
21336            m68ki_exception_illegal(mc68kcpu);
21337            return;
21338         case 0x804:            /* ISP */
21339            if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
21340            {
21341               if(!(mc68kcpu)->m_flag)
21342               {
21343                  REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21344                  return;
21345               }
21346               REG_ISP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21347               return;
21348            }
21349            m68ki_exception_illegal(mc68kcpu);
21350            return;
21351         case 0x003:         /* TC */
21352            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21353            {
21354               mc68kcpu->mmu_tc = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21355
21356               if (mc68kcpu->mmu_tc & 0x8000)
21357               {
21358                  mc68kcpu->pmmu_enabled = 1;
21359               }
21360               else
21361               {
21362                  mc68kcpu->pmmu_enabled = 0;
21363               }
21364               return;
21365            }
21366            m68ki_exception_illegal(mc68kcpu);
21367            return;
21368         case 0x004:         /* ITT0 */
21369            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21370            {
21371               mc68kcpu->mmu_itt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21372               return;
21373            }
21374            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21375            {
21376               mc68kcpu->mmu_acr0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21377               return;
21378            }
21379            m68ki_exception_illegal(mc68kcpu);
21380            return;
21381         case 0x005:         /* ITT1 */
21382            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21383            {
21384               mc68kcpu->mmu_itt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21385               return;
21386            }
21387            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21388            {
21389               mc68kcpu->mmu_acr1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21390               return;
21391            }
21392            m68ki_exception_illegal(mc68kcpu);
21393            return;
21394         case 0x006:         /* DTT0 */
21395            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21396            {
21397               mc68kcpu->mmu_dtt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21398               return;
21399            }
21400            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21401            {
21402               mc68kcpu->mmu_acr2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21403               return;
21404            }
21405            m68ki_exception_illegal(mc68kcpu);
21406            return;
21407         case 0x007:         /* DTT1 */
21408            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21409            {
21410               mc68kcpu->mmu_dtt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21411               return;
21412            }
21413            else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21414            {
21415               mc68kcpu->mmu_acr3 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21416               return;
21417            }
21418            m68ki_exception_illegal(mc68kcpu);
21419            return;
21420         case 0x805:         /* MMUSR */
21421            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21422            {
21423               mc68kcpu->mmu_sr_040 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21424               return;
21425            }
21426            m68ki_exception_illegal(mc68kcpu);
21427            return;
21428         case 0x806:         /* URP */
21429            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21430            {
21431               mc68kcpu->mmu_urp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21432               return;
21433            }
21434            m68ki_exception_illegal(mc68kcpu);
21435            return;
21436         case 0x807:         /* SRP */
21437            if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
21438            {
21439               mc68kcpu->mmu_srp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
21440               return;
21441            }
21442            m68ki_exception_illegal(mc68kcpu);
21443            return;
21444         case 0xc00: // ROMBAR0
21445            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21446            {
21447               /* TODO */
21448               return;
21449            }
21450            m68ki_exception_illegal(mc68kcpu);
21451            return;
21452         case 0xc01: // ROMBAR1
21453            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21454            {
21455               /* TODO */
21456               return;
21457            }
21458            m68ki_exception_illegal(mc68kcpu);
21459            return;
21460         case 0xc04: // RAMBAR0
21461            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21462            {
21463               /* TODO */
21464               return;
21465            }
21466            m68ki_exception_illegal(mc68kcpu);
21467            return;
21468         case 0xc05: // RAMBAR1
21469            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21470            {
21471               /* TODO */
21472               return;
21473            }
21474            m68ki_exception_illegal(mc68kcpu);
21475            return;
21476         case 0xc0c: // MPCR
21477            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21478            {
21479               /* TODO */
21480               return;
21481            }
21482            m68ki_exception_illegal(mc68kcpu);
21483            return;
21484         case 0xc0d: // EDRAMBAR
21485            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21486            {
21487               /* TODO */
21488               return;
21489            }
21490            m68ki_exception_illegal(mc68kcpu);
21491            return;
21492         case 0xc0e: // SECMBAR
21493            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21494            {
21495               /* TODO */
21496               return;
21497            }
21498            m68ki_exception_illegal(mc68kcpu);
21499            return;
21500         case 0xc0f: // MBAR
21501            if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
21502            {
21503               /* TODO */
21504               return;
21505            }
21506            m68ki_exception_illegal(mc68kcpu);
21507            return;
21508         default:
21509            m68ki_exception_illegal(mc68kcpu);
21510            return;
21511         }
21512      }
21513      m68ki_exception_privilege_violation(mc68kcpu);
21514      return;
21515   }
21516   m68ki_exception_illegal(mc68kcpu);
21517}
21518
21519
21520void m68000_base_device_ops::m68k_op_movem_16_re_pd(m68000_base_device* mc68kcpu)
21521{
21522   UINT32 i = 0;
21523   UINT32 register_list = OPER_I_16(mc68kcpu);
21524   UINT32 ea = AY(mc68kcpu);
21525   UINT32 count = 0;
21526
21527   for(; i < 16; i++)
21528      if(register_list & (1 << i))
21529      {
21530         ea -= 2;
21531         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[15-i]));
21532         count++;
21533      }
21534   AY(mc68kcpu) = ea;
21535
21536   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21537}
21538
21539
21540void m68000_base_device_ops::m68k_op_movem_16_re_ai(m68000_base_device* mc68kcpu)
21541{
21542   UINT32 i = 0;
21543   UINT32 register_list = OPER_I_16(mc68kcpu);
21544   UINT32 ea = EA_AY_AI_16(mc68kcpu);
21545   UINT32 count = 0;
21546
21547   for(; i < 16; i++)
21548      if(register_list & (1 << i))
21549      {
21550         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
21551         ea += 2;
21552         count++;
21553      }
21554
21555   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21556}
21557
21558
21559void m68000_base_device_ops::m68k_op_movem_16_re_di(m68000_base_device* mc68kcpu)
21560{
21561   UINT32 i = 0;
21562   UINT32 register_list = OPER_I_16(mc68kcpu);
21563   UINT32 ea = EA_AY_DI_16(mc68kcpu);
21564   UINT32 count = 0;
21565
21566   for(; i < 16; i++)
21567      if(register_list & (1 << i))
21568      {
21569         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
21570         ea += 2;
21571         count++;
21572      }
21573
21574   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21575}
21576
21577
21578void m68000_base_device_ops::m68k_op_movem_16_re_ix(m68000_base_device* mc68kcpu)
21579{
21580   UINT32 i = 0;
21581   UINT32 register_list = OPER_I_16(mc68kcpu);
21582   UINT32 ea = EA_AY_IX_16(mc68kcpu);
21583   UINT32 count = 0;
21584
21585   for(; i < 16; i++)
21586      if(register_list & (1 << i))
21587      {
21588         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
21589         ea += 2;
21590         count++;
21591      }
21592
21593   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21594}
21595
21596
21597void m68000_base_device_ops::m68k_op_movem_16_re_aw(m68000_base_device* mc68kcpu)
21598{
21599   UINT32 i = 0;
21600   UINT32 register_list = OPER_I_16(mc68kcpu);
21601   UINT32 ea = EA_AW_16(mc68kcpu);
21602   UINT32 count = 0;
21603
21604   for(; i < 16; i++)
21605      if(register_list & (1 << i))
21606      {
21607         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
21608         ea += 2;
21609         count++;
21610      }
21611
21612   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21613}
21614
21615
21616void m68000_base_device_ops::m68k_op_movem_16_re_al(m68000_base_device* mc68kcpu)
21617{
21618   UINT32 i = 0;
21619   UINT32 register_list = OPER_I_16(mc68kcpu);
21620   UINT32 ea = EA_AL_16(mc68kcpu);
21621   UINT32 count = 0;
21622
21623   for(; i < 16; i++)
21624      if(register_list & (1 << i))
21625      {
21626         m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
21627         ea += 2;
21628         count++;
21629      }
21630
21631   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21632}
21633
21634
21635void m68000_base_device_ops::m68k_op_movem_32_re_pd(m68000_base_device* mc68kcpu)
21636{
21637   UINT32 i = 0;
21638   UINT32 register_list = OPER_I_16(mc68kcpu);
21639   UINT32 ea = AY(mc68kcpu);
21640   UINT32 count = 0;
21641
21642   for(; i < 16; i++)
21643      if(register_list & (1 << i))
21644      {
21645         ea -= 4;
21646         m68ki_write_16((mc68kcpu), ea+2, REG_DA(mc68kcpu)[15-i] & 0xFFFF );
21647         m68ki_write_16((mc68kcpu), ea, (REG_DA(mc68kcpu)[15-i] >> 16) & 0xFFFF );
21648         count++;
21649      }
21650   AY(mc68kcpu) = ea;
21651
21652   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21653}
21654
21655
21656void m68000_base_device_ops::m68k_op_movem_32_re_ai(m68000_base_device* mc68kcpu)
21657{
21658   UINT32 i = 0;
21659   UINT32 register_list = OPER_I_16(mc68kcpu);
21660   UINT32 ea = EA_AY_AI_32(mc68kcpu);
21661   UINT32 count = 0;
21662
21663   for(; i < 16; i++)
21664      if(register_list & (1 << i))
21665      {
21666         m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
21667         ea += 4;
21668         count++;
21669      }
21670
21671   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21672}
21673
21674
21675void m68000_base_device_ops::m68k_op_movem_32_re_di(m68000_base_device* mc68kcpu)
21676{
21677   UINT32 i = 0;
21678   UINT32 register_list = OPER_I_16(mc68kcpu);
21679   UINT32 ea = EA_AY_DI_32(mc68kcpu);
21680   UINT32 count = 0;
21681
21682   for(; i < 16; i++)
21683      if(register_list & (1 << i))
21684      {
21685         m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
21686         ea += 4;
21687         count++;
21688      }
21689
21690   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21691}
21692
21693
21694void m68000_base_device_ops::m68k_op_movem_32_re_ix(m68000_base_device* mc68kcpu)
21695{
21696   UINT32 i = 0;
21697   UINT32 register_list = OPER_I_16(mc68kcpu);
21698   UINT32 ea = EA_AY_IX_32(mc68kcpu);
21699   UINT32 count = 0;
21700
21701   for(; i < 16; i++)
21702      if(register_list & (1 << i))
21703      {
21704         m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
21705         ea += 4;
21706         count++;
21707      }
21708
21709   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21710}
21711
21712
21713void m68000_base_device_ops::m68k_op_movem_32_re_aw(m68000_base_device* mc68kcpu)
21714{
21715   UINT32 i = 0;
21716   UINT32 register_list = OPER_I_16(mc68kcpu);
21717   UINT32 ea = EA_AW_32(mc68kcpu);
21718   UINT32 count = 0;
21719
21720   for(; i < 16; i++)
21721      if(register_list & (1 << i))
21722      {
21723         m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
21724         ea += 4;
21725         count++;
21726      }
21727
21728   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21729}
21730
21731
21732void m68000_base_device_ops::m68k_op_movem_32_re_al(m68000_base_device* mc68kcpu)
21733{
21734   UINT32 i = 0;
21735   UINT32 register_list = OPER_I_16(mc68kcpu);
21736   UINT32 ea = EA_AL_32(mc68kcpu);
21737   UINT32 count = 0;
21738
21739   for(; i < 16; i++)
21740      if(register_list & (1 << i))
21741      {
21742         m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
21743         ea += 4;
21744         count++;
21745      }
21746
21747   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21748}
21749
21750
21751void m68000_base_device_ops::m68k_op_movem_16_er_pi(m68000_base_device* mc68kcpu)
21752{
21753   UINT32 i = 0;
21754   UINT32 register_list = OPER_I_16(mc68kcpu);
21755   UINT32 ea = AY(mc68kcpu);
21756   UINT32 count = 0;
21757
21758   for(; i < 16; i++)
21759      if(register_list & (1 << i))
21760      {
21761         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21762         ea += 2;
21763         count++;
21764      }
21765   AY(mc68kcpu) = ea;
21766
21767   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21768}
21769
21770
21771void m68000_base_device_ops::m68k_op_movem_16_er_pcdi(m68000_base_device* mc68kcpu)
21772{
21773   UINT32 i = 0;
21774   UINT32 register_list = OPER_I_16(mc68kcpu);
21775   UINT32 ea = EA_PCDI_16(mc68kcpu);
21776   UINT32 count = 0;
21777
21778   for(; i < 16; i++)
21779      if(register_list & (1 << i))
21780      {
21781         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16((mc68kcpu), ea)));
21782         ea += 2;
21783         count++;
21784      }
21785
21786   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21787}
21788
21789
21790void m68000_base_device_ops::m68k_op_movem_16_er_pcix(m68000_base_device* mc68kcpu)
21791{
21792   UINT32 i = 0;
21793   UINT32 register_list = OPER_I_16(mc68kcpu);
21794   UINT32 ea = EA_PCIX_16(mc68kcpu);
21795   UINT32 count = 0;
21796
21797   for(; i < 16; i++)
21798      if(register_list & (1 << i))
21799      {
21800         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16((mc68kcpu), ea)));
21801         ea += 2;
21802         count++;
21803      }
21804
21805   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21806}
21807
21808
21809void m68000_base_device_ops::m68k_op_movem_16_er_ai(m68000_base_device* mc68kcpu)
21810{
21811   UINT32 i = 0;
21812   UINT32 register_list = OPER_I_16(mc68kcpu);
21813   UINT32 ea = EA_AY_AI_16(mc68kcpu);
21814   UINT32 count = 0;
21815
21816   for(; i < 16; i++)
21817      if(register_list & (1 << i))
21818      {
21819         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21820         ea += 2;
21821         count++;
21822      }
21823
21824   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21825}
21826
21827
21828void m68000_base_device_ops::m68k_op_movem_16_er_di(m68000_base_device* mc68kcpu)
21829{
21830   UINT32 i = 0;
21831   UINT32 register_list = OPER_I_16(mc68kcpu);
21832   UINT32 ea = EA_AY_DI_16(mc68kcpu);
21833   UINT32 count = 0;
21834
21835   for(; i < 16; i++)
21836      if(register_list & (1 << i))
21837      {
21838         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21839         ea += 2;
21840         count++;
21841      }
21842
21843   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21844}
21845
21846
21847void m68000_base_device_ops::m68k_op_movem_16_er_ix(m68000_base_device* mc68kcpu)
21848{
21849   UINT32 i = 0;
21850   UINT32 register_list = OPER_I_16(mc68kcpu);
21851   UINT32 ea = EA_AY_IX_16(mc68kcpu);
21852   UINT32 count = 0;
21853
21854   for(; i < 16; i++)
21855      if(register_list & (1 << i))
21856      {
21857         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21858         ea += 2;
21859         count++;
21860      }
21861
21862   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21863}
21864
21865
21866void m68000_base_device_ops::m68k_op_movem_16_er_aw(m68000_base_device* mc68kcpu)
21867{
21868   UINT32 i = 0;
21869   UINT32 register_list = OPER_I_16(mc68kcpu);
21870   UINT32 ea = EA_AW_16(mc68kcpu);
21871   UINT32 count = 0;
21872
21873   for(; i < 16; i++)
21874      if(register_list & (1 << i))
21875      {
21876         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21877         ea += 2;
21878         count++;
21879      }
21880
21881   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21882}
21883
21884
21885void m68000_base_device_ops::m68k_op_movem_16_er_al(m68000_base_device* mc68kcpu)
21886{
21887   UINT32 i = 0;
21888   UINT32 register_list = OPER_I_16(mc68kcpu);
21889   UINT32 ea = EA_AL_16(mc68kcpu);
21890   UINT32 count = 0;
21891
21892   for(; i < 16; i++)
21893      if(register_list & (1 << i))
21894      {
21895         REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
21896         ea += 2;
21897         count++;
21898      }
21899
21900   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
21901}
21902
21903
21904void m68000_base_device_ops::m68k_op_movem_32_er_pi(m68000_base_device* mc68kcpu)
21905{
21906   UINT32 i = 0;
21907   UINT32 register_list = OPER_I_16(mc68kcpu);
21908   UINT32 ea = AY(mc68kcpu);
21909   UINT32 count = 0;
21910
21911   for(; i < 16; i++)
21912      if(register_list & (1 << i))
21913      {
21914         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
21915         ea += 4;
21916         count++;
21917      }
21918   AY(mc68kcpu) = ea;
21919
21920   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21921}
21922
21923
21924void m68000_base_device_ops::m68k_op_movem_32_er_pcdi(m68000_base_device* mc68kcpu)
21925{
21926   UINT32 i = 0;
21927   UINT32 register_list = OPER_I_16(mc68kcpu);
21928   UINT32 ea = EA_PCDI_32(mc68kcpu);
21929   UINT32 count = 0;
21930
21931   for(; i < 16; i++)
21932      if(register_list & (1 << i))
21933      {
21934         REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
21935         ea += 4;
21936         count++;
21937      }
21938
21939   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21940}
21941
21942
21943void m68000_base_device_ops::m68k_op_movem_32_er_pcix(m68000_base_device* mc68kcpu)
21944{
21945   UINT32 i = 0;
21946   UINT32 register_list = OPER_I_16(mc68kcpu);
21947   UINT32 ea = EA_PCIX_32(mc68kcpu);
21948   UINT32 count = 0;
21949
21950   for(; i < 16; i++)
21951      if(register_list & (1 << i))
21952      {
21953         REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
21954         ea += 4;
21955         count++;
21956      }
21957
21958   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21959}
21960
21961
21962void m68000_base_device_ops::m68k_op_movem_32_er_ai(m68000_base_device* mc68kcpu)
21963{
21964   UINT32 i = 0;
21965   UINT32 register_list = OPER_I_16(mc68kcpu);
21966   UINT32 ea = EA_AY_AI_32(mc68kcpu);
21967   UINT32 count = 0;
21968
21969   for(; i < 16; i++)
21970      if(register_list & (1 << i))
21971      {
21972         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
21973         ea += 4;
21974         count++;
21975      }
21976
21977   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21978}
21979
21980
21981void m68000_base_device_ops::m68k_op_movem_32_er_di(m68000_base_device* mc68kcpu)
21982{
21983   UINT32 i = 0;
21984   UINT32 register_list = OPER_I_16(mc68kcpu);
21985   UINT32 ea = EA_AY_DI_32(mc68kcpu);
21986   UINT32 count = 0;
21987
21988   for(; i < 16; i++)
21989      if(register_list & (1 << i))
21990      {
21991         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
21992         ea += 4;
21993         count++;
21994      }
21995
21996   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
21997}
21998
21999
22000void m68000_base_device_ops::m68k_op_movem_32_er_ix(m68000_base_device* mc68kcpu)
22001{
22002   UINT32 i = 0;
22003   UINT32 register_list = OPER_I_16(mc68kcpu);
22004   UINT32 ea = EA_AY_IX_32(mc68kcpu);
22005   UINT32 count = 0;
22006
22007   for(; i < 16; i++)
22008      if(register_list & (1 << i))
22009      {
22010         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
22011         ea += 4;
22012         count++;
22013      }
22014
22015   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
22016}
22017
22018
22019void m68000_base_device_ops::m68k_op_movem_32_er_aw(m68000_base_device* mc68kcpu)
22020{
22021   UINT32 i = 0;
22022   UINT32 register_list = OPER_I_16(mc68kcpu);
22023   UINT32 ea = EA_AW_32(mc68kcpu);
22024   UINT32 count = 0;
22025
22026   for(; i < 16; i++)
22027      if(register_list & (1 << i))
22028      {
22029         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
22030         ea += 4;
22031         count++;
22032      }
22033
22034   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
22035}
22036
22037
22038void m68000_base_device_ops::m68k_op_movem_32_er_al(m68000_base_device* mc68kcpu)
22039{
22040   UINT32 i = 0;
22041   UINT32 register_list = OPER_I_16(mc68kcpu);
22042   UINT32 ea = EA_AL_32(mc68kcpu);
22043   UINT32 count = 0;
22044
22045   for(; i < 16; i++)
22046      if(register_list & (1 << i))
22047      {
22048         REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
22049         ea += 4;
22050         count++;
22051      }
22052
22053   (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
22054}
22055
22056
22057void m68000_base_device_ops::m68k_op_movep_16_re(m68000_base_device* mc68kcpu)
22058{
22059   UINT32 ea = EA_AY_DI_16(mc68kcpu);
22060   UINT32 src = DX(mc68kcpu);
22061
22062   m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(src >> 8));
22063   m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src));
22064}
22065
22066
22067void m68000_base_device_ops::m68k_op_movep_32_re(m68000_base_device* mc68kcpu)
22068{
22069   UINT32 ea = EA_AY_DI_32(mc68kcpu);
22070   UINT32 src = DX(mc68kcpu);
22071
22072   m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(src >> 24));
22073   m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src >> 16));
22074   m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src >> 8));
22075   m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src));
22076}
22077
22078
22079void m68000_base_device_ops::m68k_op_movep_16_er(m68000_base_device* mc68kcpu)
22080{
22081   UINT32 ea = EA_AY_DI_16(mc68kcpu);
22082   UINT32* r_dst = &DX(mc68kcpu);
22083
22084   *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8((mc68kcpu), ea) << 8) + m68ki_read_8((mc68kcpu), ea + 2));
22085}
22086
22087
22088void m68000_base_device_ops::m68k_op_movep_32_er(m68000_base_device* mc68kcpu)
22089{
22090   UINT32 ea = EA_AY_DI_32(mc68kcpu);
22091
22092   DX(mc68kcpu) = (m68ki_read_8((mc68kcpu), ea) << 24) + (m68ki_read_8((mc68kcpu), ea + 2) << 16)
22093      + (m68ki_read_8((mc68kcpu), ea + 4) << 8) + m68ki_read_8((mc68kcpu), ea + 6);
22094}
22095
22096
22097void m68000_base_device_ops::m68k_op_moves_8_ai(m68000_base_device* mc68kcpu)
22098{
22099   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22100   {
22101      if((mc68kcpu)->s_flag)
22102      {
22103         UINT32 word2 = OPER_I_16(mc68kcpu);
22104         UINT32 ea = EA_AY_AI_8(mc68kcpu);
22105
22106         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22107         if(BIT_B(word2))           /* Register to memory */
22108         {
22109            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22110            return;
22111         }
22112         if(BIT_F(word2))           /* Memory to address register */
22113         {
22114            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22115            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22116               (mc68kcpu)->remaining_cycles -= 2;
22117            return;
22118         }
22119         /* Memory to data register */
22120         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22121         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22122            (mc68kcpu)->remaining_cycles -= 2;
22123         return;
22124      }
22125      m68ki_exception_privilege_violation(mc68kcpu);
22126      return;
22127   }
22128   m68ki_exception_illegal(mc68kcpu);
22129}
22130
22131
22132void m68000_base_device_ops::m68k_op_moves_8_pi(m68000_base_device* mc68kcpu)
22133{
22134   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22135   {
22136      if((mc68kcpu)->s_flag)
22137      {
22138         UINT32 word2 = OPER_I_16(mc68kcpu);
22139         UINT32 ea = EA_AY_PI_8(mc68kcpu);
22140
22141         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22142         if(BIT_B(word2))           /* Register to memory */
22143         {
22144            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22145            return;
22146         }
22147         if(BIT_F(word2))           /* Memory to address register */
22148         {
22149            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22150            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22151               (mc68kcpu)->remaining_cycles -= 2;
22152            return;
22153         }
22154         /* Memory to data register */
22155         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22156         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22157            (mc68kcpu)->remaining_cycles -= 2;
22158         return;
22159      }
22160      m68ki_exception_privilege_violation(mc68kcpu);
22161      return;
22162   }
22163   m68ki_exception_illegal(mc68kcpu);
22164}
22165
22166
22167void m68000_base_device_ops::m68k_op_moves_8_pi7(m68000_base_device* mc68kcpu)
22168{
22169   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22170   {
22171      if((mc68kcpu)->s_flag)
22172      {
22173         UINT32 word2 = OPER_I_16(mc68kcpu);
22174         UINT32 ea = EA_A7_PI_8(mc68kcpu);
22175
22176         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22177         if(BIT_B(word2))           /* Register to memory */
22178         {
22179            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22180            return;
22181         }
22182         if(BIT_F(word2))           /* Memory to address register */
22183         {
22184            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22185            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22186               (mc68kcpu)->remaining_cycles -= 2;
22187            return;
22188         }
22189         /* Memory to data register */
22190         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22191         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22192            (mc68kcpu)->remaining_cycles -= 2;
22193         return;
22194      }
22195      m68ki_exception_privilege_violation(mc68kcpu);
22196      return;
22197   }
22198   m68ki_exception_illegal(mc68kcpu);
22199}
22200
22201
22202void m68000_base_device_ops::m68k_op_moves_8_pd(m68000_base_device* mc68kcpu)
22203{
22204   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22205   {
22206      if((mc68kcpu)->s_flag)
22207      {
22208         UINT32 word2 = OPER_I_16(mc68kcpu);
22209         UINT32 ea = EA_AY_PD_8(mc68kcpu);
22210
22211         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22212         if(BIT_B(word2))           /* Register to memory */
22213         {
22214            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22215            return;
22216         }
22217         if(BIT_F(word2))           /* Memory to address register */
22218         {
22219            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22220            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22221               (mc68kcpu)->remaining_cycles -= 2;
22222            return;
22223         }
22224         /* Memory to data register */
22225         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22226         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22227            (mc68kcpu)->remaining_cycles -= 2;
22228         return;
22229      }
22230      m68ki_exception_privilege_violation(mc68kcpu);
22231      return;
22232   }
22233   m68ki_exception_illegal(mc68kcpu);
22234}
22235
22236
22237void m68000_base_device_ops::m68k_op_moves_8_pd7(m68000_base_device* mc68kcpu)
22238{
22239   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22240   {
22241      if((mc68kcpu)->s_flag)
22242      {
22243         UINT32 word2 = OPER_I_16(mc68kcpu);
22244         UINT32 ea = EA_A7_PD_8(mc68kcpu);
22245
22246         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22247         if(BIT_B(word2))           /* Register to memory */
22248         {
22249            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22250            return;
22251         }
22252         if(BIT_F(word2))           /* Memory to address register */
22253         {
22254            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22255            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22256               (mc68kcpu)->remaining_cycles -= 2;
22257            return;
22258         }
22259         /* Memory to data register */
22260         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22261         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22262            (mc68kcpu)->remaining_cycles -= 2;
22263         return;
22264      }
22265      m68ki_exception_privilege_violation(mc68kcpu);
22266      return;
22267   }
22268   m68ki_exception_illegal(mc68kcpu);
22269}
22270
22271
22272void m68000_base_device_ops::m68k_op_moves_8_di(m68000_base_device* mc68kcpu)
22273{
22274   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22275   {
22276      if((mc68kcpu)->s_flag)
22277      {
22278         UINT32 word2 = OPER_I_16(mc68kcpu);
22279         UINT32 ea = EA_AY_DI_8(mc68kcpu);
22280
22281         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22282         if(BIT_B(word2))           /* Register to memory */
22283         {
22284            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22285            return;
22286         }
22287         if(BIT_F(word2))           /* Memory to address register */
22288         {
22289            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22290            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22291               (mc68kcpu)->remaining_cycles -= 2;
22292            return;
22293         }
22294         /* Memory to data register */
22295         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22296         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22297            (mc68kcpu)->remaining_cycles -= 2;
22298         return;
22299      }
22300      m68ki_exception_privilege_violation(mc68kcpu);
22301      return;
22302   }
22303   m68ki_exception_illegal(mc68kcpu);
22304}
22305
22306
22307void m68000_base_device_ops::m68k_op_moves_8_ix(m68000_base_device* mc68kcpu)
22308{
22309   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22310   {
22311      if((mc68kcpu)->s_flag)
22312      {
22313         UINT32 word2 = OPER_I_16(mc68kcpu);
22314         UINT32 ea = EA_AY_IX_8(mc68kcpu);
22315
22316         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22317         if(BIT_B(word2))           /* Register to memory */
22318         {
22319            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22320            return;
22321         }
22322         if(BIT_F(word2))           /* Memory to address register */
22323         {
22324            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22325            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22326               (mc68kcpu)->remaining_cycles -= 2;
22327            return;
22328         }
22329         /* Memory to data register */
22330         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22331         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22332            (mc68kcpu)->remaining_cycles -= 2;
22333         return;
22334      }
22335      m68ki_exception_privilege_violation(mc68kcpu);
22336      return;
22337   }
22338   m68ki_exception_illegal(mc68kcpu);
22339}
22340
22341
22342void m68000_base_device_ops::m68k_op_moves_8_aw(m68000_base_device* mc68kcpu)
22343{
22344   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22345   {
22346      if((mc68kcpu)->s_flag)
22347      {
22348         UINT32 word2 = OPER_I_16(mc68kcpu);
22349         UINT32 ea = EA_AW_8(mc68kcpu);
22350
22351         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22352         if(BIT_B(word2))           /* Register to memory */
22353         {
22354            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22355            return;
22356         }
22357         if(BIT_F(word2))           /* Memory to address register */
22358         {
22359            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22360            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22361               (mc68kcpu)->remaining_cycles -= 2;
22362            return;
22363         }
22364         /* Memory to data register */
22365         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22366         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22367            (mc68kcpu)->remaining_cycles -= 2;
22368         return;
22369      }
22370      m68ki_exception_privilege_violation(mc68kcpu);
22371      return;
22372   }
22373   m68ki_exception_illegal(mc68kcpu);
22374}
22375
22376
22377void m68000_base_device_ops::m68k_op_moves_8_al(m68000_base_device* mc68kcpu)
22378{
22379   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22380   {
22381      if((mc68kcpu)->s_flag)
22382      {
22383         UINT32 word2 = OPER_I_16(mc68kcpu);
22384         UINT32 ea = EA_AL_8(mc68kcpu);
22385
22386         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22387         if(BIT_B(word2))           /* Register to memory */
22388         {
22389            m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22390            return;
22391         }
22392         if(BIT_F(word2))           /* Memory to address register */
22393         {
22394            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22395            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22396               (mc68kcpu)->remaining_cycles -= 2;
22397            return;
22398         }
22399         /* Memory to data register */
22400         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22401         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22402            (mc68kcpu)->remaining_cycles -= 2;
22403         return;
22404      }
22405      m68ki_exception_privilege_violation(mc68kcpu);
22406      return;
22407   }
22408   m68ki_exception_illegal(mc68kcpu);
22409}
22410
22411
22412void m68000_base_device_ops::m68k_op_moves_16_ai(m68000_base_device* mc68kcpu)
22413{
22414   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22415   {
22416      if((mc68kcpu)->s_flag)
22417      {
22418         UINT32 word2 = OPER_I_16(mc68kcpu);
22419         UINT32 ea = EA_AY_AI_16(mc68kcpu);
22420
22421         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22422         if(BIT_B(word2))           /* Register to memory */
22423         {
22424            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22425            return;
22426         }
22427         if(BIT_F(word2))           /* Memory to address register */
22428         {
22429            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22430            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22431               (mc68kcpu)->remaining_cycles -= 2;
22432            return;
22433         }
22434         /* Memory to data register */
22435         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22436         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22437            (mc68kcpu)->remaining_cycles -= 2;
22438         return;
22439      }
22440      m68ki_exception_privilege_violation(mc68kcpu);
22441      return;
22442   }
22443   m68ki_exception_illegal(mc68kcpu);
22444}
22445
22446
22447void m68000_base_device_ops::m68k_op_moves_16_pi(m68000_base_device* mc68kcpu)
22448{
22449   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22450   {
22451      if((mc68kcpu)->s_flag)
22452      {
22453         UINT32 word2 = OPER_I_16(mc68kcpu);
22454         UINT32 ea = EA_AY_PI_16(mc68kcpu);
22455
22456         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22457         if(BIT_B(word2))           /* Register to memory */
22458         {
22459            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22460            return;
22461         }
22462         if(BIT_F(word2))           /* Memory to address register */
22463         {
22464            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22465            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22466               (mc68kcpu)->remaining_cycles -= 2;
22467            return;
22468         }
22469         /* Memory to data register */
22470         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22471         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22472            (mc68kcpu)->remaining_cycles -= 2;
22473         return;
22474      }
22475      m68ki_exception_privilege_violation(mc68kcpu);
22476      return;
22477   }
22478   m68ki_exception_illegal(mc68kcpu);
22479}
22480
22481
22482void m68000_base_device_ops::m68k_op_moves_16_pd(m68000_base_device* mc68kcpu)
22483{
22484   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22485   {
22486      if((mc68kcpu)->s_flag)
22487      {
22488         UINT32 word2 = OPER_I_16(mc68kcpu);
22489         UINT32 ea = EA_AY_PD_16(mc68kcpu);
22490
22491         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22492         if(BIT_B(word2))           /* Register to memory */
22493         {
22494            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22495            return;
22496         }
22497         if(BIT_F(word2))           /* Memory to address register */
22498         {
22499            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22500            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22501               (mc68kcpu)->remaining_cycles -= 2;
22502            return;
22503         }
22504         /* Memory to data register */
22505         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22506         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22507            (mc68kcpu)->remaining_cycles -= 2;
22508         return;
22509      }
22510      m68ki_exception_privilege_violation(mc68kcpu);
22511      return;
22512   }
22513   m68ki_exception_illegal(mc68kcpu);
22514}
22515
22516
22517void m68000_base_device_ops::m68k_op_moves_16_di(m68000_base_device* mc68kcpu)
22518{
22519   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22520   {
22521      if((mc68kcpu)->s_flag)
22522      {
22523         UINT32 word2 = OPER_I_16(mc68kcpu);
22524         UINT32 ea = EA_AY_DI_16(mc68kcpu);
22525
22526         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22527         if(BIT_B(word2))           /* Register to memory */
22528         {
22529            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22530            return;
22531         }
22532         if(BIT_F(word2))           /* Memory to address register */
22533         {
22534            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22535            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22536               (mc68kcpu)->remaining_cycles -= 2;
22537            return;
22538         }
22539         /* Memory to data register */
22540         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22541         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22542            (mc68kcpu)->remaining_cycles -= 2;
22543         return;
22544      }
22545      m68ki_exception_privilege_violation(mc68kcpu);
22546      return;
22547   }
22548   m68ki_exception_illegal(mc68kcpu);
22549}
22550
22551
22552void m68000_base_device_ops::m68k_op_moves_16_ix(m68000_base_device* mc68kcpu)
22553{
22554   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22555   {
22556      if((mc68kcpu)->s_flag)
22557      {
22558         UINT32 word2 = OPER_I_16(mc68kcpu);
22559         UINT32 ea = EA_AY_IX_16(mc68kcpu);
22560
22561         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22562         if(BIT_B(word2))           /* Register to memory */
22563         {
22564            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22565            return;
22566         }
22567         if(BIT_F(word2))           /* Memory to address register */
22568         {
22569            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22570            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22571               (mc68kcpu)->remaining_cycles -= 2;
22572            return;
22573         }
22574         /* Memory to data register */
22575         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22576         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22577            (mc68kcpu)->remaining_cycles -= 2;
22578         return;
22579      }
22580      m68ki_exception_privilege_violation(mc68kcpu);
22581      return;
22582   }
22583   m68ki_exception_illegal(mc68kcpu);
22584}
22585
22586
22587void m68000_base_device_ops::m68k_op_moves_16_aw(m68000_base_device* mc68kcpu)
22588{
22589   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22590   {
22591      if((mc68kcpu)->s_flag)
22592      {
22593         UINT32 word2 = OPER_I_16(mc68kcpu);
22594         UINT32 ea = EA_AW_16(mc68kcpu);
22595
22596         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22597         if(BIT_B(word2))           /* Register to memory */
22598         {
22599            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22600            return;
22601         }
22602         if(BIT_F(word2))           /* Memory to address register */
22603         {
22604            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22605            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22606               (mc68kcpu)->remaining_cycles -= 2;
22607            return;
22608         }
22609         /* Memory to data register */
22610         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22611         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22612            (mc68kcpu)->remaining_cycles -= 2;
22613         return;
22614      }
22615      m68ki_exception_privilege_violation(mc68kcpu);
22616      return;
22617   }
22618   m68ki_exception_illegal(mc68kcpu);
22619}
22620
22621
22622void m68000_base_device_ops::m68k_op_moves_16_al(m68000_base_device* mc68kcpu)
22623{
22624   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22625   {
22626      if((mc68kcpu)->s_flag)
22627      {
22628         UINT32 word2 = OPER_I_16(mc68kcpu);
22629         UINT32 ea = EA_AL_16(mc68kcpu);
22630
22631         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22632         if(BIT_B(word2))           /* Register to memory */
22633         {
22634            m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
22635            return;
22636         }
22637         if(BIT_F(word2))           /* Memory to address register */
22638         {
22639            REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
22640            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22641               (mc68kcpu)->remaining_cycles -= 2;
22642            return;
22643         }
22644         /* Memory to data register */
22645         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22646         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22647            (mc68kcpu)->remaining_cycles -= 2;
22648         return;
22649      }
22650      m68ki_exception_privilege_violation(mc68kcpu);
22651      return;
22652   }
22653   m68ki_exception_illegal(mc68kcpu);
22654}
22655
22656
22657void m68000_base_device_ops::m68k_op_moves_32_ai(m68000_base_device* mc68kcpu)
22658{
22659   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22660   {
22661      if((mc68kcpu)->s_flag)
22662      {
22663         UINT32 word2 = OPER_I_16(mc68kcpu);
22664         UINT32 ea = EA_AY_AI_32(mc68kcpu);
22665
22666         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22667         if(BIT_B(word2))           /* Register to memory */
22668         {
22669            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22670            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22671               (mc68kcpu)->remaining_cycles -= 2;
22672            return;
22673         }
22674         /* Memory to register */
22675         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22676         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22677            (mc68kcpu)->remaining_cycles -= 2;
22678         return;
22679      }
22680      m68ki_exception_privilege_violation(mc68kcpu);
22681      return;
22682   }
22683   m68ki_exception_illegal(mc68kcpu);
22684}
22685
22686
22687void m68000_base_device_ops::m68k_op_moves_32_pi(m68000_base_device* mc68kcpu)
22688{
22689   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22690   {
22691      if((mc68kcpu)->s_flag)
22692      {
22693         UINT32 word2 = OPER_I_16(mc68kcpu);
22694         UINT32 ea = EA_AY_PI_32(mc68kcpu);
22695
22696         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22697         if(BIT_B(word2))           /* Register to memory */
22698         {
22699            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22700            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22701               (mc68kcpu)->remaining_cycles -= 2;
22702            return;
22703         }
22704         /* Memory to register */
22705         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22706         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22707            (mc68kcpu)->remaining_cycles -= 2;
22708         return;
22709      }
22710      m68ki_exception_privilege_violation(mc68kcpu);
22711      return;
22712   }
22713   m68ki_exception_illegal(mc68kcpu);
22714}
22715
22716
22717void m68000_base_device_ops::m68k_op_moves_32_pd(m68000_base_device* mc68kcpu)
22718{
22719   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22720   {
22721      if((mc68kcpu)->s_flag)
22722      {
22723         UINT32 word2 = OPER_I_16(mc68kcpu);
22724         UINT32 ea = EA_AY_PD_32(mc68kcpu);
22725
22726         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22727         if(BIT_B(word2))           /* Register to memory */
22728         {
22729            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22730            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22731               (mc68kcpu)->remaining_cycles -= 2;
22732            return;
22733         }
22734         /* Memory to register */
22735         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22736         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22737            (mc68kcpu)->remaining_cycles -= 2;
22738         return;
22739      }
22740      m68ki_exception_privilege_violation(mc68kcpu);
22741      return;
22742   }
22743   m68ki_exception_illegal(mc68kcpu);
22744}
22745
22746
22747void m68000_base_device_ops::m68k_op_moves_32_di(m68000_base_device* mc68kcpu)
22748{
22749   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22750   {
22751      if((mc68kcpu)->s_flag)
22752      {
22753         UINT32 word2 = OPER_I_16(mc68kcpu);
22754         UINT32 ea = EA_AY_DI_32(mc68kcpu);
22755
22756         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22757         if(BIT_B(word2))           /* Register to memory */
22758         {
22759            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22760            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22761               (mc68kcpu)->remaining_cycles -= 2;
22762            return;
22763         }
22764         /* Memory to register */
22765         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22766         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22767            (mc68kcpu)->remaining_cycles -= 2;
22768         return;
22769      }
22770      m68ki_exception_privilege_violation(mc68kcpu);
22771      return;
22772   }
22773   m68ki_exception_illegal(mc68kcpu);
22774}
22775
22776
22777void m68000_base_device_ops::m68k_op_moves_32_ix(m68000_base_device* mc68kcpu)
22778{
22779   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22780   {
22781      if((mc68kcpu)->s_flag)
22782      {
22783         UINT32 word2 = OPER_I_16(mc68kcpu);
22784         UINT32 ea = EA_AY_IX_32(mc68kcpu);
22785
22786         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22787         if(BIT_B(word2))           /* Register to memory */
22788         {
22789            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22790            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22791               (mc68kcpu)->remaining_cycles -= 2;
22792            return;
22793         }
22794         /* Memory to register */
22795         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22796         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22797            (mc68kcpu)->remaining_cycles -= 2;
22798         return;
22799      }
22800      m68ki_exception_privilege_violation(mc68kcpu);
22801      return;
22802   }
22803   m68ki_exception_illegal(mc68kcpu);
22804}
22805
22806
22807void m68000_base_device_ops::m68k_op_moves_32_aw(m68000_base_device* mc68kcpu)
22808{
22809   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22810   {
22811      if((mc68kcpu)->s_flag)
22812      {
22813         UINT32 word2 = OPER_I_16(mc68kcpu);
22814         UINT32 ea = EA_AW_32(mc68kcpu);
22815
22816         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22817         if(BIT_B(word2))           /* Register to memory */
22818         {
22819            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22820            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22821               (mc68kcpu)->remaining_cycles -= 2;
22822            return;
22823         }
22824         /* Memory to register */
22825         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22826         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22827            (mc68kcpu)->remaining_cycles -= 2;
22828         return;
22829      }
22830      m68ki_exception_privilege_violation(mc68kcpu);
22831      return;
22832   }
22833   m68ki_exception_illegal(mc68kcpu);
22834}
22835
22836
22837void m68000_base_device_ops::m68k_op_moves_32_al(m68000_base_device* mc68kcpu)
22838{
22839   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
22840   {
22841      if((mc68kcpu)->s_flag)
22842      {
22843         UINT32 word2 = OPER_I_16(mc68kcpu);
22844         UINT32 ea = EA_AL_32(mc68kcpu);
22845
22846         m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
22847         if(BIT_B(word2))           /* Register to memory */
22848         {
22849            m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
22850            if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22851               (mc68kcpu)->remaining_cycles -= 2;
22852            return;
22853         }
22854         /* Memory to register */
22855         REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
22856         if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
22857            (mc68kcpu)->remaining_cycles -= 2;
22858         return;
22859      }
22860      m68ki_exception_privilege_violation(mc68kcpu);
22861      return;
22862   }
22863   m68ki_exception_illegal(mc68kcpu);
22864}
22865
22866
22867void m68000_base_device_ops::m68k_op_moveq_32(m68000_base_device* mc68kcpu)
22868{
22869   UINT32 res = DX(mc68kcpu) = MAKE_INT_8(MASK_OUT_ABOVE_8((mc68kcpu)->ir));
22870
22871   (mc68kcpu)->n_flag = NFLAG_32(res);
22872   (mc68kcpu)->not_z_flag = res;
22873   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22874   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22875}
22876
22877
22878void m68000_base_device_ops::m68k_op_move16_32(m68000_base_device* mc68kcpu)
22879{
22880   UINT16 w2 = OPER_I_16(mc68kcpu);
22881   int ax = (mc68kcpu)->ir & 7;
22882   int ay = (w2 >> 12) & 7;
22883   m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay],    m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]));
22884   m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+4,  m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+4));
22885   m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+8,  m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+8));
22886   m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+12, m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+12));
22887
22888   REG_A(mc68kcpu)[ax] += 16;
22889   REG_A(mc68kcpu)[ay] += 16;
22890}
22891
22892
22893void m68000_base_device_ops::m68k_op_muls_16_d(m68000_base_device* mc68kcpu)
22894{
22895   UINT32* r_dst = &DX(mc68kcpu);
22896   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(DY(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22897
22898   *r_dst = res;
22899
22900   (mc68kcpu)->not_z_flag = res;
22901   (mc68kcpu)->n_flag = NFLAG_32(res);
22902   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22903   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22904}
22905
22906
22907void m68000_base_device_ops::m68k_op_muls_16_ai(m68000_base_device* mc68kcpu)
22908{
22909   UINT32* r_dst = &DX(mc68kcpu);
22910   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_AI_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22911
22912   *r_dst = res;
22913
22914   (mc68kcpu)->not_z_flag = res;
22915   (mc68kcpu)->n_flag = NFLAG_32(res);
22916   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22917   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22918}
22919
22920
22921void m68000_base_device_ops::m68k_op_muls_16_pi(m68000_base_device* mc68kcpu)
22922{
22923   UINT32* r_dst = &DX(mc68kcpu);
22924   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PI_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22925
22926   *r_dst = res;
22927
22928   (mc68kcpu)->not_z_flag = res;
22929   (mc68kcpu)->n_flag = NFLAG_32(res);
22930   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22931   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22932}
22933
22934
22935void m68000_base_device_ops::m68k_op_muls_16_pd(m68000_base_device* mc68kcpu)
22936{
22937   UINT32* r_dst = &DX(mc68kcpu);
22938   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PD_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22939
22940   *r_dst = res;
22941
22942   (mc68kcpu)->not_z_flag = res;
22943   (mc68kcpu)->n_flag = NFLAG_32(res);
22944   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22945   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22946}
22947
22948
22949void m68000_base_device_ops::m68k_op_muls_16_di(m68000_base_device* mc68kcpu)
22950{
22951   UINT32* r_dst = &DX(mc68kcpu);
22952   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_DI_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22953
22954   *r_dst = res;
22955
22956   (mc68kcpu)->not_z_flag = res;
22957   (mc68kcpu)->n_flag = NFLAG_32(res);
22958   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22959   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22960}
22961
22962
22963void m68000_base_device_ops::m68k_op_muls_16_ix(m68000_base_device* mc68kcpu)
22964{
22965   UINT32* r_dst = &DX(mc68kcpu);
22966   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_IX_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22967
22968   *r_dst = res;
22969
22970   (mc68kcpu)->not_z_flag = res;
22971   (mc68kcpu)->n_flag = NFLAG_32(res);
22972   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22973   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22974}
22975
22976
22977void m68000_base_device_ops::m68k_op_muls_16_aw(m68000_base_device* mc68kcpu)
22978{
22979   UINT32* r_dst = &DX(mc68kcpu);
22980   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AW_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22981
22982   *r_dst = res;
22983
22984   (mc68kcpu)->not_z_flag = res;
22985   (mc68kcpu)->n_flag = NFLAG_32(res);
22986   (mc68kcpu)->v_flag = VFLAG_CLEAR;
22987   (mc68kcpu)->c_flag = CFLAG_CLEAR;
22988}
22989
22990
22991void m68000_base_device_ops::m68k_op_muls_16_al(m68000_base_device* mc68kcpu)
22992{
22993   UINT32* r_dst = &DX(mc68kcpu);
22994   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AL_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
22995
22996   *r_dst = res;
22997
22998   (mc68kcpu)->not_z_flag = res;
22999   (mc68kcpu)->n_flag = NFLAG_32(res);
23000   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23001   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23002}
23003
23004
23005void m68000_base_device_ops::m68k_op_muls_16_pcdi(m68000_base_device* mc68kcpu)
23006{
23007   UINT32* r_dst = &DX(mc68kcpu);
23008   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCDI_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
23009
23010   *r_dst = res;
23011
23012   (mc68kcpu)->not_z_flag = res;
23013   (mc68kcpu)->n_flag = NFLAG_32(res);
23014   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23015   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23016}
23017
23018
23019void m68000_base_device_ops::m68k_op_muls_16_pcix(m68000_base_device* mc68kcpu)
23020{
23021   UINT32* r_dst = &DX(mc68kcpu);
23022   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCIX_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
23023
23024   *r_dst = res;
23025
23026   (mc68kcpu)->not_z_flag = res;
23027   (mc68kcpu)->n_flag = NFLAG_32(res);
23028   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23029   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23030}
23031
23032
23033void m68000_base_device_ops::m68k_op_muls_16_i(m68000_base_device* mc68kcpu)
23034{
23035   UINT32* r_dst = &DX(mc68kcpu);
23036   UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_I_16(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
23037
23038   *r_dst = res;
23039
23040   (mc68kcpu)->not_z_flag = res;
23041   (mc68kcpu)->n_flag = NFLAG_32(res);
23042   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23043   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23044}
23045
23046
23047void m68000_base_device_ops::m68k_op_mulu_16_d(m68000_base_device* mc68kcpu)
23048{
23049   UINT32* r_dst = &DX(mc68kcpu);
23050   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu)) * MASK_OUT_ABOVE_16(*r_dst);
23051
23052   *r_dst = res;
23053
23054   (mc68kcpu)->not_z_flag = res;
23055   (mc68kcpu)->n_flag = NFLAG_32(res);
23056   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23057   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23058}
23059
23060
23061void m68000_base_device_ops::m68k_op_mulu_16_ai(m68000_base_device* mc68kcpu)
23062{
23063   UINT32* r_dst = &DX(mc68kcpu);
23064   UINT32 res = OPER_AY_AI_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23065
23066   *r_dst = res;
23067
23068   (mc68kcpu)->not_z_flag = res;
23069   (mc68kcpu)->n_flag = NFLAG_32(res);
23070   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23071   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23072}
23073
23074
23075void m68000_base_device_ops::m68k_op_mulu_16_pi(m68000_base_device* mc68kcpu)
23076{
23077   UINT32* r_dst = &DX(mc68kcpu);
23078   UINT32 res = OPER_AY_PI_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23079
23080   *r_dst = res;
23081
23082   (mc68kcpu)->not_z_flag = res;
23083   (mc68kcpu)->n_flag = NFLAG_32(res);
23084   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23085   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23086}
23087
23088
23089void m68000_base_device_ops::m68k_op_mulu_16_pd(m68000_base_device* mc68kcpu)
23090{
23091   UINT32* r_dst = &DX(mc68kcpu);
23092   UINT32 res = OPER_AY_PD_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23093
23094   *r_dst = res;
23095
23096   (mc68kcpu)->not_z_flag = res;
23097   (mc68kcpu)->n_flag = NFLAG_32(res);
23098   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23099   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23100}
23101
23102
23103void m68000_base_device_ops::m68k_op_mulu_16_di(m68000_base_device* mc68kcpu)
23104{
23105   UINT32* r_dst = &DX(mc68kcpu);
23106   UINT32 res = OPER_AY_DI_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23107
23108   *r_dst = res;
23109
23110   (mc68kcpu)->not_z_flag = res;
23111   (mc68kcpu)->n_flag = NFLAG_32(res);
23112   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23113   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23114}
23115
23116
23117void m68000_base_device_ops::m68k_op_mulu_16_ix(m68000_base_device* mc68kcpu)
23118{
23119   UINT32* r_dst = &DX(mc68kcpu);
23120   UINT32 res = OPER_AY_IX_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23121
23122   *r_dst = res;
23123
23124   (mc68kcpu)->not_z_flag = res;
23125   (mc68kcpu)->n_flag = NFLAG_32(res);
23126   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23127   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23128}
23129
23130
23131void m68000_base_device_ops::m68k_op_mulu_16_aw(m68000_base_device* mc68kcpu)
23132{
23133   UINT32* r_dst = &DX(mc68kcpu);
23134   UINT32 res = OPER_AW_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23135
23136   *r_dst = res;
23137
23138   (mc68kcpu)->not_z_flag = res;
23139   (mc68kcpu)->n_flag = NFLAG_32(res);
23140   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23141   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23142}
23143
23144
23145void m68000_base_device_ops::m68k_op_mulu_16_al(m68000_base_device* mc68kcpu)
23146{
23147   UINT32* r_dst = &DX(mc68kcpu);
23148   UINT32 res = OPER_AL_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23149
23150   *r_dst = res;
23151
23152   (mc68kcpu)->not_z_flag = res;
23153   (mc68kcpu)->n_flag = NFLAG_32(res);
23154   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23155   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23156}
23157
23158
23159void m68000_base_device_ops::m68k_op_mulu_16_pcdi(m68000_base_device* mc68kcpu)
23160{
23161   UINT32* r_dst = &DX(mc68kcpu);
23162   UINT32 res = OPER_PCDI_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23163
23164   *r_dst = res;
23165
23166   (mc68kcpu)->not_z_flag = res;
23167   (mc68kcpu)->n_flag = NFLAG_32(res);
23168   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23169   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23170}
23171
23172
23173void m68000_base_device_ops::m68k_op_mulu_16_pcix(m68000_base_device* mc68kcpu)
23174{
23175   UINT32* r_dst = &DX(mc68kcpu);
23176   UINT32 res = OPER_PCIX_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23177
23178   *r_dst = res;
23179
23180   (mc68kcpu)->not_z_flag = res;
23181   (mc68kcpu)->n_flag = NFLAG_32(res);
23182   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23183   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23184}
23185
23186
23187void m68000_base_device_ops::m68k_op_mulu_16_i(m68000_base_device* mc68kcpu)
23188{
23189   UINT32* r_dst = &DX(mc68kcpu);
23190   UINT32 res = OPER_I_16(mc68kcpu) * MASK_OUT_ABOVE_16(*r_dst);
23191
23192   *r_dst = res;
23193
23194   (mc68kcpu)->not_z_flag = res;
23195   (mc68kcpu)->n_flag = NFLAG_32(res);
23196   (mc68kcpu)->v_flag = VFLAG_CLEAR;
23197   (mc68kcpu)->c_flag = CFLAG_CLEAR;
23198}
23199
23200
23201void m68000_base_device_ops::m68k_op_mull_32_d(m68000_base_device* mc68kcpu)
23202{
23203   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23204   {
23205      UINT32 word2 = OPER_I_16(mc68kcpu);
23206      UINT64 src = DY(mc68kcpu);
23207      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23208      UINT64 res;
23209
23210      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23211
23212      if(BIT_B(word2))               /* signed */
23213      {
23214         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23215         if(!BIT_A(word2))
23216         {
23217            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23218            (mc68kcpu)->n_flag = NFLAG_32(res);
23219            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23220            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23221            return;
23222         }
23223         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23224         (mc68kcpu)->n_flag = NFLAG_64(res);
23225         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23226         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23227         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23228         return;
23229      }
23230
23231      res = src * dst;
23232      if(!BIT_A(word2))
23233      {
23234         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23235         (mc68kcpu)->n_flag = NFLAG_32(res);
23236         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23237         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23238         return;
23239      }
23240      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23241      (mc68kcpu)->n_flag = NFLAG_64(res);
23242      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23243      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23244      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23245      return;
23246   }
23247   m68ki_exception_illegal(mc68kcpu);
23248}
23249
23250
23251void m68000_base_device_ops::m68k_op_mull_32_ai(m68000_base_device* mc68kcpu)
23252{
23253   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23254   {
23255      UINT32 word2 = OPER_I_16(mc68kcpu);
23256      UINT64 src = OPER_AY_AI_32(mc68kcpu);
23257      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23258      UINT64 res;
23259
23260      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23261
23262      if(BIT_B(word2))               /* signed */
23263      {
23264         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23265         if(!BIT_A(word2))
23266         {
23267            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23268            (mc68kcpu)->n_flag = NFLAG_32(res);
23269            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23270            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23271            return;
23272         }
23273         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23274         (mc68kcpu)->n_flag = NFLAG_64(res);
23275         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23276         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23277         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23278         return;
23279      }
23280
23281      res = src * dst;
23282      if(!BIT_A(word2))
23283      {
23284         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23285         (mc68kcpu)->n_flag = NFLAG_32(res);
23286         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23287         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23288         return;
23289      }
23290      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23291      (mc68kcpu)->n_flag = NFLAG_64(res);
23292      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23293      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23294      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23295      return;
23296   }
23297   m68ki_exception_illegal(mc68kcpu);
23298}
23299
23300
23301void m68000_base_device_ops::m68k_op_mull_32_pi(m68000_base_device* mc68kcpu)
23302{
23303   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23304   {
23305      UINT32 word2 = OPER_I_16(mc68kcpu);
23306      UINT64 src = OPER_AY_PI_32(mc68kcpu);
23307      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23308      UINT64 res;
23309
23310      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23311
23312      if(BIT_B(word2))               /* signed */
23313      {
23314         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23315         if(!BIT_A(word2))
23316         {
23317            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23318            (mc68kcpu)->n_flag = NFLAG_32(res);
23319            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23320            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23321            return;
23322         }
23323         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23324         (mc68kcpu)->n_flag = NFLAG_64(res);
23325         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23326         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23327         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23328         return;
23329      }
23330
23331      res = src * dst;
23332      if(!BIT_A(word2))
23333      {
23334         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23335         (mc68kcpu)->n_flag = NFLAG_32(res);
23336         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23337         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23338         return;
23339      }
23340      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23341      (mc68kcpu)->n_flag = NFLAG_64(res);
23342      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23343      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23344      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23345      return;
23346   }
23347   m68ki_exception_illegal(mc68kcpu);
23348}
23349
23350
23351void m68000_base_device_ops::m68k_op_mull_32_pd(m68000_base_device* mc68kcpu)
23352{
23353   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23354   {
23355      UINT32 word2 = OPER_I_16(mc68kcpu);
23356      UINT64 src = OPER_AY_PD_32(mc68kcpu);
23357      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23358      UINT64 res;
23359
23360      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23361
23362      if(BIT_B(word2))               /* signed */
23363      {
23364         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23365         if(!BIT_A(word2))
23366         {
23367            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23368            (mc68kcpu)->n_flag = NFLAG_32(res);
23369            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23370            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23371            return;
23372         }
23373         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23374         (mc68kcpu)->n_flag = NFLAG_64(res);
23375         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23376         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23377         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23378         return;
23379      }
23380
23381      res = src * dst;
23382      if(!BIT_A(word2))
23383      {
23384         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23385         (mc68kcpu)->n_flag = NFLAG_32(res);
23386         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23387         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23388         return;
23389      }
23390      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23391      (mc68kcpu)->n_flag = NFLAG_64(res);
23392      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23393      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23394      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23395      return;
23396   }
23397   m68ki_exception_illegal(mc68kcpu);
23398}
23399
23400
23401void m68000_base_device_ops::m68k_op_mull_32_di(m68000_base_device* mc68kcpu)
23402{
23403   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23404   {
23405      UINT32 word2 = OPER_I_16(mc68kcpu);
23406      UINT64 src = OPER_AY_DI_32(mc68kcpu);
23407      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23408      UINT64 res;
23409
23410      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23411
23412      if(BIT_B(word2))               /* signed */
23413      {
23414         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23415         if(!BIT_A(word2))
23416         {
23417            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23418            (mc68kcpu)->n_flag = NFLAG_32(res);
23419            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23420            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23421            return;
23422         }
23423         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23424         (mc68kcpu)->n_flag = NFLAG_64(res);
23425         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23426         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23427         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23428         return;
23429      }
23430
23431      res = src * dst;
23432      if(!BIT_A(word2))
23433      {
23434         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23435         (mc68kcpu)->n_flag = NFLAG_32(res);
23436         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23437         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23438         return;
23439      }
23440      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23441      (mc68kcpu)->n_flag = NFLAG_64(res);
23442      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23443      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23444      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23445      return;
23446   }
23447   m68ki_exception_illegal(mc68kcpu);
23448}
23449
23450
23451void m68000_base_device_ops::m68k_op_mull_32_ix(m68000_base_device* mc68kcpu)
23452{
23453   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23454   {
23455      UINT32 word2 = OPER_I_16(mc68kcpu);
23456      UINT64 src = OPER_AY_IX_32(mc68kcpu);
23457      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23458      UINT64 res;
23459
23460      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23461
23462      if(BIT_B(word2))               /* signed */
23463      {
23464         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23465         if(!BIT_A(word2))
23466         {
23467            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23468            (mc68kcpu)->n_flag = NFLAG_32(res);
23469            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23470            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23471            return;
23472         }
23473         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23474         (mc68kcpu)->n_flag = NFLAG_64(res);
23475         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23476         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23477         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23478         return;
23479      }
23480
23481      res = src * dst;
23482      if(!BIT_A(word2))
23483      {
23484         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23485         (mc68kcpu)->n_flag = NFLAG_32(res);
23486         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23487         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23488         return;
23489      }
23490      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23491      (mc68kcpu)->n_flag = NFLAG_64(res);
23492      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23493      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23494      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23495      return;
23496   }
23497   m68ki_exception_illegal(mc68kcpu);
23498}
23499
23500
23501void m68000_base_device_ops::m68k_op_mull_32_aw(m68000_base_device* mc68kcpu)
23502{
23503   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23504   {
23505      UINT32 word2 = OPER_I_16(mc68kcpu);
23506      UINT64 src = OPER_AW_32(mc68kcpu);
23507      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23508      UINT64 res;
23509
23510      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23511
23512      if(BIT_B(word2))               /* signed */
23513      {
23514         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23515         if(!BIT_A(word2))
23516         {
23517            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23518            (mc68kcpu)->n_flag = NFLAG_32(res);
23519            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23520            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23521            return;
23522         }
23523         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23524         (mc68kcpu)->n_flag = NFLAG_64(res);
23525         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23526         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23527         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23528         return;
23529      }
23530
23531      res = src * dst;
23532      if(!BIT_A(word2))
23533      {
23534         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23535         (mc68kcpu)->n_flag = NFLAG_32(res);
23536         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23537         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23538         return;
23539      }
23540      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23541      (mc68kcpu)->n_flag = NFLAG_64(res);
23542      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23543      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23544      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23545      return;
23546   }
23547   m68ki_exception_illegal(mc68kcpu);
23548}
23549
23550
23551void m68000_base_device_ops::m68k_op_mull_32_al(m68000_base_device* mc68kcpu)
23552{
23553   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23554   {
23555      UINT32 word2 = OPER_I_16(mc68kcpu);
23556      UINT64 src = OPER_AL_32(mc68kcpu);
23557      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23558      UINT64 res;
23559
23560      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23561
23562      if(BIT_B(word2))               /* signed */
23563      {
23564         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23565         if(!BIT_A(word2))
23566         {
23567            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23568            (mc68kcpu)->n_flag = NFLAG_32(res);
23569            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23570            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23571            return;
23572         }
23573         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23574         (mc68kcpu)->n_flag = NFLAG_64(res);
23575         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23576         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23577         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23578         return;
23579      }
23580
23581      res = src * dst;
23582      if(!BIT_A(word2))
23583      {
23584         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23585         (mc68kcpu)->n_flag = NFLAG_32(res);
23586         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23587         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23588         return;
23589      }
23590      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23591      (mc68kcpu)->n_flag = NFLAG_64(res);
23592      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23593      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23594      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23595      return;
23596   }
23597   m68ki_exception_illegal(mc68kcpu);
23598}
23599
23600
23601void m68000_base_device_ops::m68k_op_mull_32_pcdi(m68000_base_device* mc68kcpu)
23602{
23603   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23604   {
23605      UINT32 word2 = OPER_I_16(mc68kcpu);
23606      UINT64 src = OPER_PCDI_32(mc68kcpu);
23607      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23608      UINT64 res;
23609
23610      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23611
23612      if(BIT_B(word2))               /* signed */
23613      {
23614         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23615         if(!BIT_A(word2))
23616         {
23617            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23618            (mc68kcpu)->n_flag = NFLAG_32(res);
23619            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23620            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23621            return;
23622         }
23623         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23624         (mc68kcpu)->n_flag = NFLAG_64(res);
23625         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23626         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23627         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23628         return;
23629      }
23630
23631      res = src * dst;
23632      if(!BIT_A(word2))
23633      {
23634         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23635         (mc68kcpu)->n_flag = NFLAG_32(res);
23636         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23637         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23638         return;
23639      }
23640      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23641      (mc68kcpu)->n_flag = NFLAG_64(res);
23642      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23643      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23644      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23645      return;
23646   }
23647   m68ki_exception_illegal(mc68kcpu);
23648}
23649
23650
23651void m68000_base_device_ops::m68k_op_mull_32_pcix(m68000_base_device* mc68kcpu)
23652{
23653   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23654   {
23655      UINT32 word2 = OPER_I_16(mc68kcpu);
23656      UINT64 src = OPER_PCIX_32(mc68kcpu);
23657      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23658      UINT64 res;
23659
23660      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23661
23662      if(BIT_B(word2))               /* signed */
23663      {
23664         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23665         if(!BIT_A(word2))
23666         {
23667            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23668            (mc68kcpu)->n_flag = NFLAG_32(res);
23669            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23670            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23671            return;
23672         }
23673         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23674         (mc68kcpu)->n_flag = NFLAG_64(res);
23675         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23676         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23677         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23678         return;
23679      }
23680
23681      res = src * dst;
23682      if(!BIT_A(word2))
23683      {
23684         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23685         (mc68kcpu)->n_flag = NFLAG_32(res);
23686         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23687         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23688         return;
23689      }
23690      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23691      (mc68kcpu)->n_flag = NFLAG_64(res);
23692      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23693      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23694      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23695      return;
23696   }
23697   m68ki_exception_illegal(mc68kcpu);
23698}
23699
23700
23701void m68000_base_device_ops::m68k_op_mull_32_i(m68000_base_device* mc68kcpu)
23702{
23703   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
23704   {
23705      UINT32 word2 = OPER_I_16(mc68kcpu);
23706      UINT64 src = OPER_I_32(mc68kcpu);
23707      UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
23708      UINT64 res;
23709
23710      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23711
23712      if(BIT_B(word2))               /* signed */
23713      {
23714         res = (INT64)((INT32)src) * (INT64)((INT32)dst);
23715         if(!BIT_A(word2))
23716         {
23717            (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23718            (mc68kcpu)->n_flag = NFLAG_32(res);
23719            (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
23720            REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23721            return;
23722         }
23723         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23724         (mc68kcpu)->n_flag = NFLAG_64(res);
23725         (mc68kcpu)->v_flag = VFLAG_CLEAR;
23726         REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23727         REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23728         return;
23729      }
23730
23731      res = src * dst;
23732      if(!BIT_A(word2))
23733      {
23734         (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
23735         (mc68kcpu)->n_flag = NFLAG_32(res);
23736         (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
23737         REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
23738         return;
23739      }
23740      (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
23741      (mc68kcpu)->n_flag = NFLAG_64(res);
23742      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23743      REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
23744      REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
23745      return;
23746   }
23747   m68ki_exception_illegal(mc68kcpu);
23748}
23749
23750
23751void m68000_base_device_ops::m68k_op_nbcd_8_d(m68000_base_device* mc68kcpu)
23752{
23753   UINT32* r_dst = &DY(mc68kcpu);
23754   UINT32 dst = *r_dst;
23755   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23756
23757   if(res != 0x9a)
23758   {
23759      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23760
23761      if((res & 0x0f) == 0xa)
23762         res = (res & 0xf0) + 0x10;
23763
23764      res = MASK_OUT_ABOVE_8(res);
23765
23766      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23767
23768      *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
23769
23770      (mc68kcpu)->not_z_flag |= res;
23771      (mc68kcpu)->c_flag = CFLAG_SET;
23772      (mc68kcpu)->x_flag = XFLAG_SET;
23773   }
23774   else
23775   {
23776      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23777      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23778      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23779   }
23780   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23781}
23782
23783
23784void m68000_base_device_ops::m68k_op_nbcd_8_ai(m68000_base_device* mc68kcpu)
23785{
23786   UINT32 ea = EA_AY_AI_8(mc68kcpu);
23787   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23788   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23789
23790   if(res != 0x9a)
23791   {
23792      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23793
23794      if((res & 0x0f) == 0xa)
23795         res = (res & 0xf0) + 0x10;
23796
23797      res = MASK_OUT_ABOVE_8(res);
23798
23799      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23800
23801      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23802
23803      (mc68kcpu)->not_z_flag |= res;
23804      (mc68kcpu)->c_flag = CFLAG_SET;
23805      (mc68kcpu)->x_flag = XFLAG_SET;
23806   }
23807   else
23808   {
23809      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23810      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23811      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23812   }
23813   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23814}
23815
23816
23817void m68000_base_device_ops::m68k_op_nbcd_8_pi(m68000_base_device* mc68kcpu)
23818{
23819   UINT32 ea = EA_AY_PI_8(mc68kcpu);
23820   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23821   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23822
23823   if(res != 0x9a)
23824   {
23825      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23826
23827      if((res & 0x0f) == 0xa)
23828         res = (res & 0xf0) + 0x10;
23829
23830      res = MASK_OUT_ABOVE_8(res);
23831
23832      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23833
23834      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23835
23836      (mc68kcpu)->not_z_flag |= res;
23837      (mc68kcpu)->c_flag = CFLAG_SET;
23838      (mc68kcpu)->x_flag = XFLAG_SET;
23839   }
23840   else
23841   {
23842      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23843      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23844      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23845   }
23846   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23847}
23848
23849
23850void m68000_base_device_ops::m68k_op_nbcd_8_pi7(m68000_base_device* mc68kcpu)
23851{
23852   UINT32 ea = EA_A7_PI_8(mc68kcpu);
23853   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23854   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23855
23856   if(res != 0x9a)
23857   {
23858      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23859
23860      if((res & 0x0f) == 0xa)
23861         res = (res & 0xf0) + 0x10;
23862
23863      res = MASK_OUT_ABOVE_8(res);
23864
23865      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23866
23867      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23868
23869      (mc68kcpu)->not_z_flag |= res;
23870      (mc68kcpu)->c_flag = CFLAG_SET;
23871      (mc68kcpu)->x_flag = XFLAG_SET;
23872   }
23873   else
23874   {
23875      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23876      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23877      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23878   }
23879   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23880}
23881
23882
23883void m68000_base_device_ops::m68k_op_nbcd_8_pd(m68000_base_device* mc68kcpu)
23884{
23885   UINT32 ea = EA_AY_PD_8(mc68kcpu);
23886   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23887   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23888
23889   if(res != 0x9a)
23890   {
23891      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23892
23893      if((res & 0x0f) == 0xa)
23894         res = (res & 0xf0) + 0x10;
23895
23896      res = MASK_OUT_ABOVE_8(res);
23897
23898      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23899
23900      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23901
23902      (mc68kcpu)->not_z_flag |= res;
23903      (mc68kcpu)->c_flag = CFLAG_SET;
23904      (mc68kcpu)->x_flag = XFLAG_SET;
23905   }
23906   else
23907   {
23908      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23909      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23910      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23911   }
23912   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23913}
23914
23915
23916void m68000_base_device_ops::m68k_op_nbcd_8_pd7(m68000_base_device* mc68kcpu)
23917{
23918   UINT32 ea = EA_A7_PD_8(mc68kcpu);
23919   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23920   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23921
23922   if(res != 0x9a)
23923   {
23924      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23925
23926      if((res & 0x0f) == 0xa)
23927         res = (res & 0xf0) + 0x10;
23928
23929      res = MASK_OUT_ABOVE_8(res);
23930
23931      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23932
23933      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23934
23935      (mc68kcpu)->not_z_flag |= res;
23936      (mc68kcpu)->c_flag = CFLAG_SET;
23937      (mc68kcpu)->x_flag = XFLAG_SET;
23938   }
23939   else
23940   {
23941      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23942      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23943      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23944   }
23945   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23946}
23947
23948
23949void m68000_base_device_ops::m68k_op_nbcd_8_di(m68000_base_device* mc68kcpu)
23950{
23951   UINT32 ea = EA_AY_DI_8(mc68kcpu);
23952   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23953   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23954
23955   if(res != 0x9a)
23956   {
23957      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23958
23959      if((res & 0x0f) == 0xa)
23960         res = (res & 0xf0) + 0x10;
23961
23962      res = MASK_OUT_ABOVE_8(res);
23963
23964      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23965
23966      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
23967
23968      (mc68kcpu)->not_z_flag |= res;
23969      (mc68kcpu)->c_flag = CFLAG_SET;
23970      (mc68kcpu)->x_flag = XFLAG_SET;
23971   }
23972   else
23973   {
23974      (mc68kcpu)->v_flag = VFLAG_CLEAR;
23975      (mc68kcpu)->c_flag = CFLAG_CLEAR;
23976      (mc68kcpu)->x_flag = XFLAG_CLEAR;
23977   }
23978   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
23979}
23980
23981
23982void m68000_base_device_ops::m68k_op_nbcd_8_ix(m68000_base_device* mc68kcpu)
23983{
23984   UINT32 ea = EA_AY_IX_8(mc68kcpu);
23985   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
23986   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
23987
23988   if(res != 0x9a)
23989   {
23990      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
23991
23992      if((res & 0x0f) == 0xa)
23993         res = (res & 0xf0) + 0x10;
23994
23995      res = MASK_OUT_ABOVE_8(res);
23996
23997      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
23998
23999      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
24000
24001      (mc68kcpu)->not_z_flag |= res;
24002      (mc68kcpu)->c_flag = CFLAG_SET;
24003      (mc68kcpu)->x_flag = XFLAG_SET;
24004   }
24005   else
24006   {
24007      (mc68kcpu)->v_flag = VFLAG_CLEAR;
24008      (mc68kcpu)->c_flag = CFLAG_CLEAR;
24009      (mc68kcpu)->x_flag = XFLAG_CLEAR;
24010   }
24011   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
24012}
24013
24014
24015void m68000_base_device_ops::m68k_op_nbcd_8_aw(m68000_base_device* mc68kcpu)
24016{
24017   UINT32 ea = EA_AW_8(mc68kcpu);
24018   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
24019   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
24020
24021   if(res != 0x9a)
24022   {
24023      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
24024
24025      if((res & 0x0f) == 0xa)
24026         res = (res & 0xf0) + 0x10;
24027
24028      res = MASK_OUT_ABOVE_8(res);
24029
24030      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
24031
24032      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
24033
24034      (mc68kcpu)->not_z_flag |= res;
24035      (mc68kcpu)->c_flag = CFLAG_SET;
24036      (mc68kcpu)->x_flag = XFLAG_SET;
24037   }
24038   else
24039   {
24040      (mc68kcpu)->v_flag = VFLAG_CLEAR;
24041      (mc68kcpu)->c_flag = CFLAG_CLEAR;
24042      (mc68kcpu)->x_flag = XFLAG_CLEAR;
24043   }
24044   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
24045}
24046
24047
24048void m68000_base_device_ops::m68k_op_nbcd_8_al(m68000_base_device* mc68kcpu)
24049{
24050   UINT32 ea = EA_AL_8(mc68kcpu);
24051   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
24052   UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
24053
24054   if(res != 0x9a)
24055   {
24056      (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
24057
24058      if((res & 0x0f) == 0xa)
24059         res = (res & 0xf0) + 0x10;
24060
24061      res = MASK_OUT_ABOVE_8(res);
24062
24063      (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
24064
24065      m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
24066
24067      (mc68kcpu)->not_z_flag |= res;
24068      (mc68kcpu)->c_flag = CFLAG_SET;
24069      (mc68kcpu)->x_flag = XFLAG_SET;
24070   }
24071   else
24072   {
24073      (mc68kcpu)->v_flag = VFLAG_CLEAR;
24074      (mc68kcpu)->c_flag = CFLAG_CLEAR;
24075      (mc68kcpu)->x_flag = XFLAG_CLEAR;
24076   }
24077   (mc68kcpu)->n_flag = NFLAG_8(res);  /* Undefined N behavior */
24078}
24079
24080
24081void m68000_base_device_ops::m68k_op_neg_8_d(m68000_base_device* mc68kcpu)
24082{
24083   UINT32* r_dst = &DY(mc68kcpu);
24084   UINT32 res = 0 - MASK_OUT_ABOVE_8(*r_dst);
24085
24086   (mc68kcpu)->n_flag = NFLAG_8(res);
24087   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24088   (mc68kcpu)->v_flag = *r_dst & res;
24089   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24090
24091   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
24092}
24093
24094
24095void m68000_base_device_ops::m68k_op_neg_8_ai(m68000_base_device* mc68kcpu)
24096{
24097   UINT32 ea = EA_AY_AI_8(mc68kcpu);
24098   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24099   UINT32 res = 0 - src;
24100
24101   (mc68kcpu)->n_flag = NFLAG_8(res);
24102   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24103   (mc68kcpu)->v_flag = src & res;
24104   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24105
24106   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24107}
24108
24109
24110void m68000_base_device_ops::m68k_op_neg_8_pi(m68000_base_device* mc68kcpu)
24111{
24112   UINT32 ea = EA_AY_PI_8(mc68kcpu);
24113   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24114   UINT32 res = 0 - src;
24115
24116   (mc68kcpu)->n_flag = NFLAG_8(res);
24117   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24118   (mc68kcpu)->v_flag = src & res;
24119   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24120
24121   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24122}
24123
24124
24125void m68000_base_device_ops::m68k_op_neg_8_pi7(m68000_base_device* mc68kcpu)
24126{
24127   UINT32 ea = EA_A7_PI_8(mc68kcpu);
24128   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24129   UINT32 res = 0 - src;
24130
24131   (mc68kcpu)->n_flag = NFLAG_8(res);
24132   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24133   (mc68kcpu)->v_flag = src & res;
24134   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24135
24136   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24137}
24138
24139
24140void m68000_base_device_ops::m68k_op_neg_8_pd(m68000_base_device* mc68kcpu)
24141{
24142   UINT32 ea = EA_AY_PD_8(mc68kcpu);
24143   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24144   UINT32 res = 0 - src;
24145
24146   (mc68kcpu)->n_flag = NFLAG_8(res);
24147   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24148   (mc68kcpu)->v_flag = src & res;
24149   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24150
24151   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24152}
24153
24154
24155void m68000_base_device_ops::m68k_op_neg_8_pd7(m68000_base_device* mc68kcpu)
24156{
24157   UINT32 ea = EA_A7_PD_8(mc68kcpu);
24158   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24159   UINT32 res = 0 - src;
24160
24161   (mc68kcpu)->n_flag = NFLAG_8(res);
24162   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24163   (mc68kcpu)->v_flag = src & res;
24164   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24165
24166   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24167}
24168
24169
24170void m68000_base_device_ops::m68k_op_neg_8_di(m68000_base_device* mc68kcpu)
24171{
24172   UINT32 ea = EA_AY_DI_8(mc68kcpu);
24173   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24174   UINT32 res = 0 - src;
24175
24176   (mc68kcpu)->n_flag = NFLAG_8(res);
24177   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24178   (mc68kcpu)->v_flag = src & res;
24179   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24180
24181   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24182}
24183
24184
24185void m68000_base_device_ops::m68k_op_neg_8_ix(m68000_base_device* mc68kcpu)
24186{
24187   UINT32 ea = EA_AY_IX_8(mc68kcpu);
24188   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24189   UINT32 res = 0 - src;
24190
24191   (mc68kcpu)->n_flag = NFLAG_8(res);
24192   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24193   (mc68kcpu)->v_flag = src & res;
24194   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24195
24196   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24197}
24198
24199
24200void m68000_base_device_ops::m68k_op_neg_8_aw(m68000_base_device* mc68kcpu)
24201{
24202   UINT32 ea = EA_AW_8(mc68kcpu);
24203   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24204   UINT32 res = 0 - src;
24205
24206   (mc68kcpu)->n_flag = NFLAG_8(res);
24207   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24208   (mc68kcpu)->v_flag = src & res;
24209   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24210
24211   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24212}
24213
24214
24215void m68000_base_device_ops::m68k_op_neg_8_al(m68000_base_device* mc68kcpu)
24216{
24217   UINT32 ea = EA_AL_8(mc68kcpu);
24218   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24219   UINT32 res = 0 - src;
24220
24221   (mc68kcpu)->n_flag = NFLAG_8(res);
24222   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
24223   (mc68kcpu)->v_flag = src & res;
24224   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
24225
24226   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24227}
24228
24229
24230void m68000_base_device_ops::m68k_op_neg_16_d(m68000_base_device* mc68kcpu)
24231{
24232   UINT32* r_dst = &DY(mc68kcpu);
24233   UINT32 res = 0 - MASK_OUT_ABOVE_16(*r_dst);
24234
24235   (mc68kcpu)->n_flag = NFLAG_16(res);
24236   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24237   (mc68kcpu)->v_flag = (*r_dst & res)>>8;
24238   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24239
24240   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
24241}
24242
24243
24244void m68000_base_device_ops::m68k_op_neg_16_ai(m68000_base_device* mc68kcpu)
24245{
24246   UINT32 ea = EA_AY_AI_16(mc68kcpu);
24247   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24248   UINT32 res = 0 - src;
24249
24250   (mc68kcpu)->n_flag = NFLAG_16(res);
24251   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24252   (mc68kcpu)->v_flag = (src & res)>>8;
24253   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24254
24255   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24256}
24257
24258
24259void m68000_base_device_ops::m68k_op_neg_16_pi(m68000_base_device* mc68kcpu)
24260{
24261   UINT32 ea = EA_AY_PI_16(mc68kcpu);
24262   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24263   UINT32 res = 0 - src;
24264
24265   (mc68kcpu)->n_flag = NFLAG_16(res);
24266   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24267   (mc68kcpu)->v_flag = (src & res)>>8;
24268   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24269
24270   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24271}
24272
24273
24274void m68000_base_device_ops::m68k_op_neg_16_pd(m68000_base_device* mc68kcpu)
24275{
24276   UINT32 ea = EA_AY_PD_16(mc68kcpu);
24277   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24278   UINT32 res = 0 - src;
24279
24280   (mc68kcpu)->n_flag = NFLAG_16(res);
24281   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24282   (mc68kcpu)->v_flag = (src & res)>>8;
24283   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24284
24285   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24286}
24287
24288
24289void m68000_base_device_ops::m68k_op_neg_16_di(m68000_base_device* mc68kcpu)
24290{
24291   UINT32 ea = EA_AY_DI_16(mc68kcpu);
24292   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24293   UINT32 res = 0 - src;
24294
24295   (mc68kcpu)->n_flag = NFLAG_16(res);
24296   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24297   (mc68kcpu)->v_flag = (src & res)>>8;
24298   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24299
24300   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24301}
24302
24303
24304void m68000_base_device_ops::m68k_op_neg_16_ix(m68000_base_device* mc68kcpu)
24305{
24306   UINT32 ea = EA_AY_IX_16(mc68kcpu);
24307   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24308   UINT32 res = 0 - src;
24309
24310   (mc68kcpu)->n_flag = NFLAG_16(res);
24311   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24312   (mc68kcpu)->v_flag = (src & res)>>8;
24313   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24314
24315   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24316}
24317
24318
24319void m68000_base_device_ops::m68k_op_neg_16_aw(m68000_base_device* mc68kcpu)
24320{
24321   UINT32 ea = EA_AW_16(mc68kcpu);
24322   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24323   UINT32 res = 0 - src;
24324
24325   (mc68kcpu)->n_flag = NFLAG_16(res);
24326   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24327   (mc68kcpu)->v_flag = (src & res)>>8;
24328   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24329
24330   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24331}
24332
24333
24334void m68000_base_device_ops::m68k_op_neg_16_al(m68000_base_device* mc68kcpu)
24335{
24336   UINT32 ea = EA_AL_16(mc68kcpu);
24337   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24338   UINT32 res = 0 - src;
24339
24340   (mc68kcpu)->n_flag = NFLAG_16(res);
24341   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
24342   (mc68kcpu)->v_flag = (src & res)>>8;
24343   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
24344
24345   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24346}
24347
24348
24349void m68000_base_device_ops::m68k_op_neg_32_d(m68000_base_device* mc68kcpu)
24350{
24351   UINT32* r_dst = &DY(mc68kcpu);
24352   UINT32 res = 0 - *r_dst;
24353
24354   (mc68kcpu)->n_flag = NFLAG_32(res);
24355   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(*r_dst, 0, res);
24356   (mc68kcpu)->v_flag = (*r_dst & res)>>24;
24357   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24358
24359   *r_dst = (mc68kcpu)->not_z_flag;
24360}
24361
24362
24363void m68000_base_device_ops::m68k_op_neg_32_ai(m68000_base_device* mc68kcpu)
24364{
24365   UINT32 ea = EA_AY_AI_32(mc68kcpu);
24366   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24367   UINT32 res = 0 - src;
24368
24369   (mc68kcpu)->n_flag = NFLAG_32(res);
24370   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24371   (mc68kcpu)->v_flag = (src & res)>>24;
24372   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24373
24374   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24375}
24376
24377
24378void m68000_base_device_ops::m68k_op_neg_32_pi(m68000_base_device* mc68kcpu)
24379{
24380   UINT32 ea = EA_AY_PI_32(mc68kcpu);
24381   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24382   UINT32 res = 0 - src;
24383
24384   (mc68kcpu)->n_flag = NFLAG_32(res);
24385   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24386   (mc68kcpu)->v_flag = (src & res)>>24;
24387   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24388
24389   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24390}
24391
24392
24393void m68000_base_device_ops::m68k_op_neg_32_pd(m68000_base_device* mc68kcpu)
24394{
24395   UINT32 ea = EA_AY_PD_32(mc68kcpu);
24396   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24397   UINT32 res = 0 - src;
24398
24399   (mc68kcpu)->n_flag = NFLAG_32(res);
24400   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24401   (mc68kcpu)->v_flag = (src & res)>>24;
24402   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24403
24404   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24405}
24406
24407
24408void m68000_base_device_ops::m68k_op_neg_32_di(m68000_base_device* mc68kcpu)
24409{
24410   UINT32 ea = EA_AY_DI_32(mc68kcpu);
24411   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24412   UINT32 res = 0 - src;
24413
24414   (mc68kcpu)->n_flag = NFLAG_32(res);
24415   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24416   (mc68kcpu)->v_flag = (src & res)>>24;
24417   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24418
24419   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24420}
24421
24422
24423void m68000_base_device_ops::m68k_op_neg_32_ix(m68000_base_device* mc68kcpu)
24424{
24425   UINT32 ea = EA_AY_IX_32(mc68kcpu);
24426   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24427   UINT32 res = 0 - src;
24428
24429   (mc68kcpu)->n_flag = NFLAG_32(res);
24430   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24431   (mc68kcpu)->v_flag = (src & res)>>24;
24432   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24433
24434   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24435}
24436
24437
24438void m68000_base_device_ops::m68k_op_neg_32_aw(m68000_base_device* mc68kcpu)
24439{
24440   UINT32 ea = EA_AW_32(mc68kcpu);
24441   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24442   UINT32 res = 0 - src;
24443
24444   (mc68kcpu)->n_flag = NFLAG_32(res);
24445   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24446   (mc68kcpu)->v_flag = (src & res)>>24;
24447   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24448
24449   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24450}
24451
24452
24453void m68000_base_device_ops::m68k_op_neg_32_al(m68000_base_device* mc68kcpu)
24454{
24455   UINT32 ea = EA_AL_32(mc68kcpu);
24456   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24457   UINT32 res = 0 - src;
24458
24459   (mc68kcpu)->n_flag = NFLAG_32(res);
24460   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
24461   (mc68kcpu)->v_flag = (src & res)>>24;
24462   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
24463
24464   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
24465}
24466
24467
24468void m68000_base_device_ops::m68k_op_negx_8_d(m68000_base_device* mc68kcpu)
24469{
24470   UINT32* r_dst = &DY(mc68kcpu);
24471   UINT32 res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1(mc68kcpu);
24472
24473   (mc68kcpu)->n_flag = NFLAG_8(res);
24474   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24475   (mc68kcpu)->v_flag = *r_dst & res;
24476
24477   res = MASK_OUT_ABOVE_8(res);
24478   (mc68kcpu)->not_z_flag |= res;
24479
24480   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
24481}
24482
24483
24484void m68000_base_device_ops::m68k_op_negx_8_ai(m68000_base_device* mc68kcpu)
24485{
24486   UINT32 ea = EA_AY_AI_8(mc68kcpu);
24487   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24488   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24489
24490   (mc68kcpu)->n_flag = NFLAG_8(res);
24491   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24492   (mc68kcpu)->v_flag = src & res;
24493
24494   res = MASK_OUT_ABOVE_8(res);
24495   (mc68kcpu)->not_z_flag |= res;
24496
24497   m68ki_write_8((mc68kcpu), ea, res);
24498}
24499
24500
24501void m68000_base_device_ops::m68k_op_negx_8_pi(m68000_base_device* mc68kcpu)
24502{
24503   UINT32 ea = EA_AY_PI_8(mc68kcpu);
24504   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24505   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24506
24507   (mc68kcpu)->n_flag = NFLAG_8(res);
24508   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24509   (mc68kcpu)->v_flag = src & res;
24510
24511   res = MASK_OUT_ABOVE_8(res);
24512   (mc68kcpu)->not_z_flag |= res;
24513
24514   m68ki_write_8((mc68kcpu), ea, res);
24515}
24516
24517
24518void m68000_base_device_ops::m68k_op_negx_8_pi7(m68000_base_device* mc68kcpu)
24519{
24520   UINT32 ea = EA_A7_PI_8(mc68kcpu);
24521   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24522   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24523
24524   (mc68kcpu)->n_flag = NFLAG_8(res);
24525   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24526   (mc68kcpu)->v_flag = src & res;
24527
24528   res = MASK_OUT_ABOVE_8(res);
24529   (mc68kcpu)->not_z_flag |= res;
24530
24531   m68ki_write_8((mc68kcpu), ea, res);
24532}
24533
24534
24535void m68000_base_device_ops::m68k_op_negx_8_pd(m68000_base_device* mc68kcpu)
24536{
24537   UINT32 ea = EA_AY_PD_8(mc68kcpu);
24538   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24539   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24540
24541   (mc68kcpu)->n_flag = NFLAG_8(res);
24542   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24543   (mc68kcpu)->v_flag = src & res;
24544
24545   res = MASK_OUT_ABOVE_8(res);
24546   (mc68kcpu)->not_z_flag |= res;
24547
24548   m68ki_write_8((mc68kcpu), ea, res);
24549}
24550
24551
24552void m68000_base_device_ops::m68k_op_negx_8_pd7(m68000_base_device* mc68kcpu)
24553{
24554   UINT32 ea = EA_A7_PD_8(mc68kcpu);
24555   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24556   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24557
24558   (mc68kcpu)->n_flag = NFLAG_8(res);
24559   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24560   (mc68kcpu)->v_flag = src & res;
24561
24562   res = MASK_OUT_ABOVE_8(res);
24563   (mc68kcpu)->not_z_flag |= res;
24564
24565   m68ki_write_8((mc68kcpu), ea, res);
24566}
24567
24568
24569void m68000_base_device_ops::m68k_op_negx_8_di(m68000_base_device* mc68kcpu)
24570{
24571   UINT32 ea = EA_AY_DI_8(mc68kcpu);
24572   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24573   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24574
24575   (mc68kcpu)->n_flag = NFLAG_8(res);
24576   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24577   (mc68kcpu)->v_flag = src & res;
24578
24579   res = MASK_OUT_ABOVE_8(res);
24580   (mc68kcpu)->not_z_flag |= res;
24581
24582   m68ki_write_8((mc68kcpu), ea, res);
24583}
24584
24585
24586void m68000_base_device_ops::m68k_op_negx_8_ix(m68000_base_device* mc68kcpu)
24587{
24588   UINT32 ea = EA_AY_IX_8(mc68kcpu);
24589   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24590   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24591
24592   (mc68kcpu)->n_flag = NFLAG_8(res);
24593   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24594   (mc68kcpu)->v_flag = src & res;
24595
24596   res = MASK_OUT_ABOVE_8(res);
24597   (mc68kcpu)->not_z_flag |= res;
24598
24599   m68ki_write_8((mc68kcpu), ea, res);
24600}
24601
24602
24603void m68000_base_device_ops::m68k_op_negx_8_aw(m68000_base_device* mc68kcpu)
24604{
24605   UINT32 ea = EA_AW_8(mc68kcpu);
24606   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24607   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24608
24609   (mc68kcpu)->n_flag = NFLAG_8(res);
24610   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24611   (mc68kcpu)->v_flag = src & res;
24612
24613   res = MASK_OUT_ABOVE_8(res);
24614   (mc68kcpu)->not_z_flag |= res;
24615
24616   m68ki_write_8((mc68kcpu), ea, res);
24617}
24618
24619
24620void m68000_base_device_ops::m68k_op_negx_8_al(m68000_base_device* mc68kcpu)
24621{
24622   UINT32 ea = EA_AL_8(mc68kcpu);
24623   UINT32 src = m68ki_read_8((mc68kcpu), ea);
24624   UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
24625
24626   (mc68kcpu)->n_flag = NFLAG_8(res);
24627   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
24628   (mc68kcpu)->v_flag = src & res;
24629
24630   res = MASK_OUT_ABOVE_8(res);
24631   (mc68kcpu)->not_z_flag |= res;
24632
24633   m68ki_write_8((mc68kcpu), ea, res);
24634}
24635
24636
24637void m68000_base_device_ops::m68k_op_negx_16_d(m68000_base_device* mc68kcpu)
24638{
24639   UINT32* r_dst = &DY(mc68kcpu);
24640   UINT32 res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1(mc68kcpu);
24641
24642   (mc68kcpu)->n_flag = NFLAG_16(res);
24643   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24644   (mc68kcpu)->v_flag = (*r_dst & res)>>8;
24645
24646   res = MASK_OUT_ABOVE_16(res);
24647   (mc68kcpu)->not_z_flag |= res;
24648
24649   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
24650}
24651
24652
24653void m68000_base_device_ops::m68k_op_negx_16_ai(m68000_base_device* mc68kcpu)
24654{
24655   UINT32 ea  = EA_AY_AI_16(mc68kcpu);
24656   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24657   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24658
24659   (mc68kcpu)->n_flag = NFLAG_16(res);
24660   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24661   (mc68kcpu)->v_flag = (src & res)>>8;
24662
24663   res = MASK_OUT_ABOVE_16(res);
24664   (mc68kcpu)->not_z_flag |= res;
24665
24666   m68ki_write_16((mc68kcpu), ea, res);
24667}
24668
24669
24670void m68000_base_device_ops::m68k_op_negx_16_pi(m68000_base_device* mc68kcpu)
24671{
24672   UINT32 ea  = EA_AY_PI_16(mc68kcpu);
24673   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24674   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24675
24676   (mc68kcpu)->n_flag = NFLAG_16(res);
24677   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24678   (mc68kcpu)->v_flag = (src & res)>>8;
24679
24680   res = MASK_OUT_ABOVE_16(res);
24681   (mc68kcpu)->not_z_flag |= res;
24682
24683   m68ki_write_16((mc68kcpu), ea, res);
24684}
24685
24686
24687void m68000_base_device_ops::m68k_op_negx_16_pd(m68000_base_device* mc68kcpu)
24688{
24689   UINT32 ea  = EA_AY_PD_16(mc68kcpu);
24690   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24691   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24692
24693   (mc68kcpu)->n_flag = NFLAG_16(res);
24694   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24695   (mc68kcpu)->v_flag = (src & res)>>8;
24696
24697   res = MASK_OUT_ABOVE_16(res);
24698   (mc68kcpu)->not_z_flag |= res;
24699
24700   m68ki_write_16((mc68kcpu), ea, res);
24701}
24702
24703
24704void m68000_base_device_ops::m68k_op_negx_16_di(m68000_base_device* mc68kcpu)
24705{
24706   UINT32 ea  = EA_AY_DI_16(mc68kcpu);
24707   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24708   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24709
24710   (mc68kcpu)->n_flag = NFLAG_16(res);
24711   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24712   (mc68kcpu)->v_flag = (src & res)>>8;
24713
24714   res = MASK_OUT_ABOVE_16(res);
24715   (mc68kcpu)->not_z_flag |= res;
24716
24717   m68ki_write_16((mc68kcpu), ea, res);
24718}
24719
24720
24721void m68000_base_device_ops::m68k_op_negx_16_ix(m68000_base_device* mc68kcpu)
24722{
24723   UINT32 ea  = EA_AY_IX_16(mc68kcpu);
24724   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24725   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24726
24727   (mc68kcpu)->n_flag = NFLAG_16(res);
24728   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24729   (mc68kcpu)->v_flag = (src & res)>>8;
24730
24731   res = MASK_OUT_ABOVE_16(res);
24732   (mc68kcpu)->not_z_flag |= res;
24733
24734   m68ki_write_16((mc68kcpu), ea, res);
24735}
24736
24737
24738void m68000_base_device_ops::m68k_op_negx_16_aw(m68000_base_device* mc68kcpu)
24739{
24740   UINT32 ea  = EA_AW_16(mc68kcpu);
24741   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24742   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24743
24744   (mc68kcpu)->n_flag = NFLAG_16(res);
24745   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24746   (mc68kcpu)->v_flag = (src & res)>>8;
24747
24748   res = MASK_OUT_ABOVE_16(res);
24749   (mc68kcpu)->not_z_flag |= res;
24750
24751   m68ki_write_16((mc68kcpu), ea, res);
24752}
24753
24754
24755void m68000_base_device_ops::m68k_op_negx_16_al(m68000_base_device* mc68kcpu)
24756{
24757   UINT32 ea  = EA_AL_16(mc68kcpu);
24758   UINT32 src = m68ki_read_16((mc68kcpu), ea);
24759   UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
24760
24761   (mc68kcpu)->n_flag = NFLAG_16(res);
24762   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
24763   (mc68kcpu)->v_flag = (src & res)>>8;
24764
24765   res = MASK_OUT_ABOVE_16(res);
24766   (mc68kcpu)->not_z_flag |= res;
24767
24768   m68ki_write_16((mc68kcpu), ea, res);
24769}
24770
24771
24772void m68000_base_device_ops::m68k_op_negx_32_d(m68000_base_device* mc68kcpu)
24773{
24774   UINT32* r_dst = &DY(mc68kcpu);
24775   UINT32 res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1(mc68kcpu);
24776
24777   (mc68kcpu)->n_flag = NFLAG_32(res);
24778   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(*r_dst, 0, res);
24779   (mc68kcpu)->v_flag = (*r_dst & res)>>24;
24780
24781   res = MASK_OUT_ABOVE_32(res);
24782   (mc68kcpu)->not_z_flag |= res;
24783
24784   *r_dst = res;
24785}
24786
24787
24788void m68000_base_device_ops::m68k_op_negx_32_ai(m68000_base_device* mc68kcpu)
24789{
24790   UINT32 ea  = EA_AY_AI_32(mc68kcpu);
24791   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24792   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24793
24794   (mc68kcpu)->n_flag = NFLAG_32(res);
24795   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24796   (mc68kcpu)->v_flag = (src & res)>>24;
24797
24798   res = MASK_OUT_ABOVE_32(res);
24799   (mc68kcpu)->not_z_flag |= res;
24800
24801   m68ki_write_32((mc68kcpu), ea, res);
24802}
24803
24804
24805void m68000_base_device_ops::m68k_op_negx_32_pi(m68000_base_device* mc68kcpu)
24806{
24807   UINT32 ea  = EA_AY_PI_32(mc68kcpu);
24808   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24809   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24810
24811   (mc68kcpu)->n_flag = NFLAG_32(res);
24812   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24813   (mc68kcpu)->v_flag = (src & res)>>24;
24814
24815   res = MASK_OUT_ABOVE_32(res);
24816   (mc68kcpu)->not_z_flag |= res;
24817
24818   m68ki_write_32((mc68kcpu), ea, res);
24819}
24820
24821
24822void m68000_base_device_ops::m68k_op_negx_32_pd(m68000_base_device* mc68kcpu)
24823{
24824   UINT32 ea  = EA_AY_PD_32(mc68kcpu);
24825   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24826   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24827
24828   (mc68kcpu)->n_flag = NFLAG_32(res);
24829   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24830   (mc68kcpu)->v_flag = (src & res)>>24;
24831
24832   res = MASK_OUT_ABOVE_32(res);
24833   (mc68kcpu)->not_z_flag |= res;
24834
24835   m68ki_write_32((mc68kcpu), ea, res);
24836}
24837
24838
24839void m68000_base_device_ops::m68k_op_negx_32_di(m68000_base_device* mc68kcpu)
24840{
24841   UINT32 ea  = EA_AY_DI_32(mc68kcpu);
24842   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24843   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24844
24845   (mc68kcpu)->n_flag = NFLAG_32(res);
24846   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24847   (mc68kcpu)->v_flag = (src & res)>>24;
24848
24849   res = MASK_OUT_ABOVE_32(res);
24850   (mc68kcpu)->not_z_flag |= res;
24851
24852   m68ki_write_32((mc68kcpu), ea, res);
24853}
24854
24855
24856void m68000_base_device_ops::m68k_op_negx_32_ix(m68000_base_device* mc68kcpu)
24857{
24858   UINT32 ea  = EA_AY_IX_32(mc68kcpu);
24859   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24860   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24861
24862   (mc68kcpu)->n_flag = NFLAG_32(res);
24863   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24864   (mc68kcpu)->v_flag = (src & res)>>24;
24865
24866   res = MASK_OUT_ABOVE_32(res);
24867   (mc68kcpu)->not_z_flag |= res;
24868
24869   m68ki_write_32((mc68kcpu), ea, res);
24870}
24871
24872
24873void m68000_base_device_ops::m68k_op_negx_32_aw(m68000_base_device* mc68kcpu)
24874{
24875   UINT32 ea  = EA_AW_32(mc68kcpu);
24876   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24877   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24878
24879   (mc68kcpu)->n_flag = NFLAG_32(res);
24880   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24881   (mc68kcpu)->v_flag = (src & res)>>24;
24882
24883   res = MASK_OUT_ABOVE_32(res);
24884   (mc68kcpu)->not_z_flag |= res;
24885
24886   m68ki_write_32((mc68kcpu), ea, res);
24887}
24888
24889
24890void m68000_base_device_ops::m68k_op_negx_32_al(m68000_base_device* mc68kcpu)
24891{
24892   UINT32 ea  = EA_AL_32(mc68kcpu);
24893   UINT32 src = m68ki_read_32((mc68kcpu), ea);
24894   UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
24895
24896   (mc68kcpu)->n_flag = NFLAG_32(res);
24897   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
24898   (mc68kcpu)->v_flag = (src & res)>>24;
24899
24900   res = MASK_OUT_ABOVE_32(res);
24901   (mc68kcpu)->not_z_flag |= res;
24902
24903   m68ki_write_32((mc68kcpu), ea, res);
24904}
24905
24906
24907void m68000_base_device_ops::m68k_op_nop(m68000_base_device* mc68kcpu)
24908{
24909   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
24910}
24911
24912
24913void m68000_base_device_ops::m68k_op_not_8_d(m68000_base_device* mc68kcpu)
24914{
24915   UINT32* r_dst = &DY(mc68kcpu);
24916   UINT32 res = MASK_OUT_ABOVE_8(~*r_dst);
24917
24918   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
24919
24920   (mc68kcpu)->n_flag = NFLAG_8(res);
24921   (mc68kcpu)->not_z_flag = res;
24922   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24923   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24924}
24925
24926
24927void m68000_base_device_ops::m68k_op_not_8_ai(m68000_base_device* mc68kcpu)
24928{
24929   UINT32 ea = EA_AY_AI_8(mc68kcpu);
24930   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
24931
24932   m68ki_write_8((mc68kcpu), ea, res);
24933
24934   (mc68kcpu)->n_flag = NFLAG_8(res);
24935   (mc68kcpu)->not_z_flag = res;
24936   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24937   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24938}
24939
24940
24941void m68000_base_device_ops::m68k_op_not_8_pi(m68000_base_device* mc68kcpu)
24942{
24943   UINT32 ea = EA_AY_PI_8(mc68kcpu);
24944   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
24945
24946   m68ki_write_8((mc68kcpu), ea, res);
24947
24948   (mc68kcpu)->n_flag = NFLAG_8(res);
24949   (mc68kcpu)->not_z_flag = res;
24950   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24951   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24952}
24953
24954
24955void m68000_base_device_ops::m68k_op_not_8_pi7(m68000_base_device* mc68kcpu)
24956{
24957   UINT32 ea = EA_A7_PI_8(mc68kcpu);
24958   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
24959
24960   m68ki_write_8((mc68kcpu), ea, res);
24961
24962   (mc68kcpu)->n_flag = NFLAG_8(res);
24963   (mc68kcpu)->not_z_flag = res;
24964   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24965   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24966}
24967
24968
24969void m68000_base_device_ops::m68k_op_not_8_pd(m68000_base_device* mc68kcpu)
24970{
24971   UINT32 ea = EA_AY_PD_8(mc68kcpu);
24972   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
24973
24974   m68ki_write_8((mc68kcpu), ea, res);
24975
24976   (mc68kcpu)->n_flag = NFLAG_8(res);
24977   (mc68kcpu)->not_z_flag = res;
24978   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24979   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24980}
24981
24982
24983void m68000_base_device_ops::m68k_op_not_8_pd7(m68000_base_device* mc68kcpu)
24984{
24985   UINT32 ea = EA_A7_PD_8(mc68kcpu);
24986   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
24987
24988   m68ki_write_8((mc68kcpu), ea, res);
24989
24990   (mc68kcpu)->n_flag = NFLAG_8(res);
24991   (mc68kcpu)->not_z_flag = res;
24992   (mc68kcpu)->c_flag = CFLAG_CLEAR;
24993   (mc68kcpu)->v_flag = VFLAG_CLEAR;
24994}
24995
24996
24997void m68000_base_device_ops::m68k_op_not_8_di(m68000_base_device* mc68kcpu)
24998{
24999   UINT32 ea = EA_AY_DI_8(mc68kcpu);
25000   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
25001
25002   m68ki_write_8((mc68kcpu), ea, res);
25003
25004   (mc68kcpu)->n_flag = NFLAG_8(res);
25005   (mc68kcpu)->not_z_flag = res;
25006   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25007   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25008}
25009
25010
25011void m68000_base_device_ops::m68k_op_not_8_ix(m68000_base_device* mc68kcpu)
25012{
25013   UINT32 ea = EA_AY_IX_8(mc68kcpu);
25014   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
25015
25016   m68ki_write_8((mc68kcpu), ea, res);
25017
25018   (mc68kcpu)->n_flag = NFLAG_8(res);
25019   (mc68kcpu)->not_z_flag = res;
25020   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25021   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25022}
25023
25024
25025void m68000_base_device_ops::m68k_op_not_8_aw(m68000_base_device* mc68kcpu)
25026{
25027   UINT32 ea = EA_AW_8(mc68kcpu);
25028   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
25029
25030   m68ki_write_8((mc68kcpu), ea, res);
25031
25032   (mc68kcpu)->n_flag = NFLAG_8(res);
25033   (mc68kcpu)->not_z_flag = res;
25034   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25035   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25036}
25037
25038
25039void m68000_base_device_ops::m68k_op_not_8_al(m68000_base_device* mc68kcpu)
25040{
25041   UINT32 ea = EA_AL_8(mc68kcpu);
25042   UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
25043
25044   m68ki_write_8((mc68kcpu), ea, res);
25045
25046   (mc68kcpu)->n_flag = NFLAG_8(res);
25047   (mc68kcpu)->not_z_flag = res;
25048   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25049   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25050}
25051
25052
25053void m68000_base_device_ops::m68k_op_not_16_d(m68000_base_device* mc68kcpu)
25054{
25055   UINT32* r_dst = &DY(mc68kcpu);
25056   UINT32 res = MASK_OUT_ABOVE_16(~*r_dst);
25057
25058   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
25059
25060   (mc68kcpu)->n_flag = NFLAG_16(res);
25061   (mc68kcpu)->not_z_flag = res;
25062   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25063   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25064}
25065
25066
25067void m68000_base_device_ops::m68k_op_not_16_ai(m68000_base_device* mc68kcpu)
25068{
25069   UINT32 ea = EA_AY_AI_16(mc68kcpu);
25070   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25071
25072   m68ki_write_16((mc68kcpu), ea, res);
25073
25074   (mc68kcpu)->n_flag = NFLAG_16(res);
25075   (mc68kcpu)->not_z_flag = res;
25076   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25077   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25078}
25079
25080
25081void m68000_base_device_ops::m68k_op_not_16_pi(m68000_base_device* mc68kcpu)
25082{
25083   UINT32 ea = EA_AY_PI_16(mc68kcpu);
25084   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25085
25086   m68ki_write_16((mc68kcpu), ea, res);
25087
25088   (mc68kcpu)->n_flag = NFLAG_16(res);
25089   (mc68kcpu)->not_z_flag = res;
25090   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25091   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25092}
25093
25094
25095void m68000_base_device_ops::m68k_op_not_16_pd(m68000_base_device* mc68kcpu)
25096{
25097   UINT32 ea = EA_AY_PD_16(mc68kcpu);
25098   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25099
25100   m68ki_write_16((mc68kcpu), ea, res);
25101
25102   (mc68kcpu)->n_flag = NFLAG_16(res);
25103   (mc68kcpu)->not_z_flag = res;
25104   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25105   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25106}
25107
25108
25109void m68000_base_device_ops::m68k_op_not_16_di(m68000_base_device* mc68kcpu)
25110{
25111   UINT32 ea = EA_AY_DI_16(mc68kcpu);
25112   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25113
25114   m68ki_write_16((mc68kcpu), ea, res);
25115
25116   (mc68kcpu)->n_flag = NFLAG_16(res);
25117   (mc68kcpu)->not_z_flag = res;
25118   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25119   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25120}
25121
25122
25123void m68000_base_device_ops::m68k_op_not_16_ix(m68000_base_device* mc68kcpu)
25124{
25125   UINT32 ea = EA_AY_IX_16(mc68kcpu);
25126   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25127
25128   m68ki_write_16((mc68kcpu), ea, res);
25129
25130   (mc68kcpu)->n_flag = NFLAG_16(res);
25131   (mc68kcpu)->not_z_flag = res;
25132   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25133   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25134}
25135
25136
25137void m68000_base_device_ops::m68k_op_not_16_aw(m68000_base_device* mc68kcpu)
25138{
25139   UINT32 ea = EA_AW_16(mc68kcpu);
25140   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25141
25142   m68ki_write_16((mc68kcpu), ea, res);
25143
25144   (mc68kcpu)->n_flag = NFLAG_16(res);
25145   (mc68kcpu)->not_z_flag = res;
25146   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25147   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25148}
25149
25150
25151void m68000_base_device_ops::m68k_op_not_16_al(m68000_base_device* mc68kcpu)
25152{
25153   UINT32 ea = EA_AL_16(mc68kcpu);
25154   UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
25155
25156   m68ki_write_16((mc68kcpu), ea, res);
25157
25158   (mc68kcpu)->n_flag = NFLAG_16(res);
25159   (mc68kcpu)->not_z_flag = res;
25160   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25161   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25162}
25163
25164
25165void m68000_base_device_ops::m68k_op_not_32_d(m68000_base_device* mc68kcpu)
25166{
25167   UINT32* r_dst = &DY(mc68kcpu);
25168   UINT32 res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
25169
25170   (mc68kcpu)->n_flag = NFLAG_32(res);
25171   (mc68kcpu)->not_z_flag = res;
25172   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25173   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25174}
25175
25176
25177void m68000_base_device_ops::m68k_op_not_32_ai(m68000_base_device* mc68kcpu)
25178{
25179   UINT32 ea = EA_AY_AI_32(mc68kcpu);
25180   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25181
25182   m68ki_write_32((mc68kcpu), ea, res);
25183
25184   (mc68kcpu)->n_flag = NFLAG_32(res);
25185   (mc68kcpu)->not_z_flag = res;
25186   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25187   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25188}
25189
25190
25191void m68000_base_device_ops::m68k_op_not_32_pi(m68000_base_device* mc68kcpu)
25192{
25193   UINT32 ea = EA_AY_PI_32(mc68kcpu);
25194   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25195
25196   m68ki_write_32((mc68kcpu), ea, res);
25197
25198   (mc68kcpu)->n_flag = NFLAG_32(res);
25199   (mc68kcpu)->not_z_flag = res;
25200   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25201   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25202}
25203
25204
25205void m68000_base_device_ops::m68k_op_not_32_pd(m68000_base_device* mc68kcpu)
25206{
25207   UINT32 ea = EA_AY_PD_32(mc68kcpu);
25208   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25209
25210   m68ki_write_32((mc68kcpu), ea, res);
25211
25212   (mc68kcpu)->n_flag = NFLAG_32(res);
25213   (mc68kcpu)->not_z_flag = res;
25214   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25215   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25216}
25217
25218
25219void m68000_base_device_ops::m68k_op_not_32_di(m68000_base_device* mc68kcpu)
25220{
25221   UINT32 ea = EA_AY_DI_32(mc68kcpu);
25222   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25223
25224   m68ki_write_32((mc68kcpu), ea, res);
25225
25226   (mc68kcpu)->n_flag = NFLAG_32(res);
25227   (mc68kcpu)->not_z_flag = res;
25228   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25229   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25230}
25231
25232
25233void m68000_base_device_ops::m68k_op_not_32_ix(m68000_base_device* mc68kcpu)
25234{
25235   UINT32 ea = EA_AY_IX_32(mc68kcpu);
25236   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25237
25238   m68ki_write_32((mc68kcpu), ea, res);
25239
25240   (mc68kcpu)->n_flag = NFLAG_32(res);
25241   (mc68kcpu)->not_z_flag = res;
25242   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25243   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25244}
25245
25246
25247void m68000_base_device_ops::m68k_op_not_32_aw(m68000_base_device* mc68kcpu)
25248{
25249   UINT32 ea = EA_AW_32(mc68kcpu);
25250   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25251
25252   m68ki_write_32((mc68kcpu), ea, res);
25253
25254   (mc68kcpu)->n_flag = NFLAG_32(res);
25255   (mc68kcpu)->not_z_flag = res;
25256   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25257   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25258}
25259
25260
25261void m68000_base_device_ops::m68k_op_not_32_al(m68000_base_device* mc68kcpu)
25262{
25263   UINT32 ea = EA_AL_32(mc68kcpu);
25264   UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
25265
25266   m68ki_write_32((mc68kcpu), ea, res);
25267
25268   (mc68kcpu)->n_flag = NFLAG_32(res);
25269   (mc68kcpu)->not_z_flag = res;
25270   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25271   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25272}
25273
25274
25275void m68000_base_device_ops::m68k_op_or_8_er_d(m68000_base_device* mc68kcpu)
25276{
25277   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= MASK_OUT_ABOVE_8(DY(mc68kcpu))));
25278
25279   (mc68kcpu)->n_flag = NFLAG_8(res);
25280   (mc68kcpu)->not_z_flag = res;
25281   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25282   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25283}
25284
25285
25286void m68000_base_device_ops::m68k_op_or_8_er_ai(m68000_base_device* mc68kcpu)
25287{
25288   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_AI_8(mc68kcpu)));
25289
25290   (mc68kcpu)->n_flag = NFLAG_8(res);
25291   (mc68kcpu)->not_z_flag = res;
25292   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25293   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25294}
25295
25296
25297void m68000_base_device_ops::m68k_op_or_8_er_pi(m68000_base_device* mc68kcpu)
25298{
25299   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_PI_8(mc68kcpu)));
25300
25301   (mc68kcpu)->n_flag = NFLAG_8(res);
25302   (mc68kcpu)->not_z_flag = res;
25303   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25304   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25305}
25306
25307
25308void m68000_base_device_ops::m68k_op_or_8_er_pi7(m68000_base_device* mc68kcpu)
25309{
25310   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_A7_PI_8(mc68kcpu)));
25311
25312   (mc68kcpu)->n_flag = NFLAG_8(res);
25313   (mc68kcpu)->not_z_flag = res;
25314   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25315   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25316}
25317
25318
25319void m68000_base_device_ops::m68k_op_or_8_er_pd(m68000_base_device* mc68kcpu)
25320{
25321   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_PD_8(mc68kcpu)));
25322
25323   (mc68kcpu)->n_flag = NFLAG_8(res);
25324   (mc68kcpu)->not_z_flag = res;
25325   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25326   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25327}
25328
25329
25330void m68000_base_device_ops::m68k_op_or_8_er_pd7(m68000_base_device* mc68kcpu)
25331{
25332   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_A7_PD_8(mc68kcpu)));
25333
25334   (mc68kcpu)->n_flag = NFLAG_8(res);
25335   (mc68kcpu)->not_z_flag = res;
25336   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25337   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25338}
25339
25340
25341void m68000_base_device_ops::m68k_op_or_8_er_di(m68000_base_device* mc68kcpu)
25342{
25343   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_DI_8(mc68kcpu)));
25344
25345   (mc68kcpu)->n_flag = NFLAG_8(res);
25346   (mc68kcpu)->not_z_flag = res;
25347   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25348   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25349}
25350
25351
25352void m68000_base_device_ops::m68k_op_or_8_er_ix(m68000_base_device* mc68kcpu)
25353{
25354   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_IX_8(mc68kcpu)));
25355
25356   (mc68kcpu)->n_flag = NFLAG_8(res);
25357   (mc68kcpu)->not_z_flag = res;
25358   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25359   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25360}
25361
25362
25363void m68000_base_device_ops::m68k_op_or_8_er_aw(m68000_base_device* mc68kcpu)
25364{
25365   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AW_8(mc68kcpu)));
25366
25367   (mc68kcpu)->n_flag = NFLAG_8(res);
25368   (mc68kcpu)->not_z_flag = res;
25369   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25370   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25371}
25372
25373
25374void m68000_base_device_ops::m68k_op_or_8_er_al(m68000_base_device* mc68kcpu)
25375{
25376   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AL_8(mc68kcpu)));
25377
25378   (mc68kcpu)->n_flag = NFLAG_8(res);
25379   (mc68kcpu)->not_z_flag = res;
25380   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25381   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25382}
25383
25384
25385void m68000_base_device_ops::m68k_op_or_8_er_pcdi(m68000_base_device* mc68kcpu)
25386{
25387   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_PCDI_8(mc68kcpu)));
25388
25389   (mc68kcpu)->n_flag = NFLAG_8(res);
25390   (mc68kcpu)->not_z_flag = res;
25391   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25392   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25393}
25394
25395
25396void m68000_base_device_ops::m68k_op_or_8_er_pcix(m68000_base_device* mc68kcpu)
25397{
25398   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_PCIX_8(mc68kcpu)));
25399
25400   (mc68kcpu)->n_flag = NFLAG_8(res);
25401   (mc68kcpu)->not_z_flag = res;
25402   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25403   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25404}
25405
25406
25407void m68000_base_device_ops::m68k_op_or_8_er_i(m68000_base_device* mc68kcpu)
25408{
25409   UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_I_8(mc68kcpu)));
25410
25411   (mc68kcpu)->n_flag = NFLAG_8(res);
25412   (mc68kcpu)->not_z_flag = res;
25413   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25414   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25415}
25416
25417
25418void m68000_base_device_ops::m68k_op_or_16_er_d(m68000_base_device* mc68kcpu)
25419{
25420   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= MASK_OUT_ABOVE_16(DY(mc68kcpu))));
25421
25422   (mc68kcpu)->n_flag = NFLAG_16(res);
25423   (mc68kcpu)->not_z_flag = res;
25424   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25425   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25426}
25427
25428
25429void m68000_base_device_ops::m68k_op_or_16_er_ai(m68000_base_device* mc68kcpu)
25430{
25431   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_AI_16(mc68kcpu)));
25432
25433   (mc68kcpu)->n_flag = NFLAG_16(res);
25434   (mc68kcpu)->not_z_flag = res;
25435   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25436   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25437}
25438
25439
25440void m68000_base_device_ops::m68k_op_or_16_er_pi(m68000_base_device* mc68kcpu)
25441{
25442   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_PI_16(mc68kcpu)));
25443
25444   (mc68kcpu)->n_flag = NFLAG_16(res);
25445   (mc68kcpu)->not_z_flag = res;
25446   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25447   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25448}
25449
25450
25451void m68000_base_device_ops::m68k_op_or_16_er_pd(m68000_base_device* mc68kcpu)
25452{
25453   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_PD_16(mc68kcpu)));
25454
25455   (mc68kcpu)->n_flag = NFLAG_16(res);
25456   (mc68kcpu)->not_z_flag = res;
25457   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25458   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25459}
25460
25461
25462void m68000_base_device_ops::m68k_op_or_16_er_di(m68000_base_device* mc68kcpu)
25463{
25464   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_DI_16(mc68kcpu)));
25465
25466   (mc68kcpu)->n_flag = NFLAG_16(res);
25467   (mc68kcpu)->not_z_flag = res;
25468   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25469   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25470}
25471
25472
25473void m68000_base_device_ops::m68k_op_or_16_er_ix(m68000_base_device* mc68kcpu)
25474{
25475   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_IX_16(mc68kcpu)));
25476
25477   (mc68kcpu)->n_flag = NFLAG_16(res);
25478   (mc68kcpu)->not_z_flag = res;
25479   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25480   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25481}
25482
25483
25484void m68000_base_device_ops::m68k_op_or_16_er_aw(m68000_base_device* mc68kcpu)
25485{
25486   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AW_16(mc68kcpu)));
25487
25488   (mc68kcpu)->n_flag = NFLAG_16(res);
25489   (mc68kcpu)->not_z_flag = res;
25490   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25491   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25492}
25493
25494
25495void m68000_base_device_ops::m68k_op_or_16_er_al(m68000_base_device* mc68kcpu)
25496{
25497   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AL_16(mc68kcpu)));
25498
25499   (mc68kcpu)->n_flag = NFLAG_16(res);
25500   (mc68kcpu)->not_z_flag = res;
25501   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25502   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25503}
25504
25505
25506void m68000_base_device_ops::m68k_op_or_16_er_pcdi(m68000_base_device* mc68kcpu)
25507{
25508   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_PCDI_16(mc68kcpu)));
25509
25510   (mc68kcpu)->n_flag = NFLAG_16(res);
25511   (mc68kcpu)->not_z_flag = res;
25512   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25513   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25514}
25515
25516
25517void m68000_base_device_ops::m68k_op_or_16_er_pcix(m68000_base_device* mc68kcpu)
25518{
25519   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_PCIX_16(mc68kcpu)));
25520
25521   (mc68kcpu)->n_flag = NFLAG_16(res);
25522   (mc68kcpu)->not_z_flag = res;
25523   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25524   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25525}
25526
25527
25528void m68000_base_device_ops::m68k_op_or_16_er_i(m68000_base_device* mc68kcpu)
25529{
25530   UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_I_16(mc68kcpu)));
25531
25532   (mc68kcpu)->n_flag = NFLAG_16(res);
25533   (mc68kcpu)->not_z_flag = res;
25534   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25535   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25536}
25537
25538
25539void m68000_base_device_ops::m68k_op_or_32_er_d(m68000_base_device* mc68kcpu)
25540{
25541   UINT32 res = DX(mc68kcpu) |= DY(mc68kcpu);
25542
25543   (mc68kcpu)->n_flag = NFLAG_32(res);
25544   (mc68kcpu)->not_z_flag = res;
25545   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25546   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25547}
25548
25549
25550void m68000_base_device_ops::m68k_op_or_32_er_ai(m68000_base_device* mc68kcpu)
25551{
25552   UINT32 res = DX(mc68kcpu) |= OPER_AY_AI_32(mc68kcpu);
25553
25554   (mc68kcpu)->n_flag = NFLAG_32(res);
25555   (mc68kcpu)->not_z_flag = res;
25556   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25557   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25558}
25559
25560
25561void m68000_base_device_ops::m68k_op_or_32_er_pi(m68000_base_device* mc68kcpu)
25562{
25563   UINT32 res = DX(mc68kcpu) |= OPER_AY_PI_32(mc68kcpu);
25564
25565   (mc68kcpu)->n_flag = NFLAG_32(res);
25566   (mc68kcpu)->not_z_flag = res;
25567   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25568   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25569}
25570
25571
25572void m68000_base_device_ops::m68k_op_or_32_er_pd(m68000_base_device* mc68kcpu)
25573{
25574   UINT32 res = DX(mc68kcpu) |= OPER_AY_PD_32(mc68kcpu);
25575
25576   (mc68kcpu)->n_flag = NFLAG_32(res);
25577   (mc68kcpu)->not_z_flag = res;
25578   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25579   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25580}
25581
25582
25583void m68000_base_device_ops::m68k_op_or_32_er_di(m68000_base_device* mc68kcpu)
25584{
25585   UINT32 res = DX(mc68kcpu) |= OPER_AY_DI_32(mc68kcpu);
25586
25587   (mc68kcpu)->n_flag = NFLAG_32(res);
25588   (mc68kcpu)->not_z_flag = res;
25589   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25590   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25591}
25592
25593
25594void m68000_base_device_ops::m68k_op_or_32_er_ix(m68000_base_device* mc68kcpu)
25595{
25596   UINT32 res = DX(mc68kcpu) |= OPER_AY_IX_32(mc68kcpu);
25597
25598   (mc68kcpu)->n_flag = NFLAG_32(res);
25599   (mc68kcpu)->not_z_flag = res;
25600   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25601   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25602}
25603
25604
25605void m68000_base_device_ops::m68k_op_or_32_er_aw(m68000_base_device* mc68kcpu)
25606{
25607   UINT32 res = DX(mc68kcpu) |= OPER_AW_32(mc68kcpu);
25608
25609   (mc68kcpu)->n_flag = NFLAG_32(res);
25610   (mc68kcpu)->not_z_flag = res;
25611   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25612   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25613}
25614
25615
25616void m68000_base_device_ops::m68k_op_or_32_er_al(m68000_base_device* mc68kcpu)
25617{
25618   UINT32 res = DX(mc68kcpu) |= OPER_AL_32(mc68kcpu);
25619
25620   (mc68kcpu)->n_flag = NFLAG_32(res);
25621   (mc68kcpu)->not_z_flag = res;
25622   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25623   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25624}
25625
25626
25627void m68000_base_device_ops::m68k_op_or_32_er_pcdi(m68000_base_device* mc68kcpu)
25628{
25629   UINT32 res = DX(mc68kcpu) |= OPER_PCDI_32(mc68kcpu);
25630
25631   (mc68kcpu)->n_flag = NFLAG_32(res);
25632   (mc68kcpu)->not_z_flag = res;
25633   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25634   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25635}
25636
25637
25638void m68000_base_device_ops::m68k_op_or_32_er_pcix(m68000_base_device* mc68kcpu)
25639{
25640   UINT32 res = DX(mc68kcpu) |= OPER_PCIX_32(mc68kcpu);
25641
25642   (mc68kcpu)->n_flag = NFLAG_32(res);
25643   (mc68kcpu)->not_z_flag = res;
25644   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25645   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25646}
25647
25648
25649void m68000_base_device_ops::m68k_op_or_32_er_i(m68000_base_device* mc68kcpu)
25650{
25651   UINT32 res = DX(mc68kcpu) |= OPER_I_32(mc68kcpu);
25652
25653   (mc68kcpu)->n_flag = NFLAG_32(res);
25654   (mc68kcpu)->not_z_flag = res;
25655   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25656   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25657}
25658
25659
25660void m68000_base_device_ops::m68k_op_or_8_re_ai(m68000_base_device* mc68kcpu)
25661{
25662   UINT32 ea = EA_AY_AI_8(mc68kcpu);
25663   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25664
25665   m68ki_write_8((mc68kcpu), ea, res);
25666
25667   (mc68kcpu)->n_flag = NFLAG_8(res);
25668   (mc68kcpu)->not_z_flag = res;
25669   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25670   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25671}
25672
25673
25674void m68000_base_device_ops::m68k_op_or_8_re_pi(m68000_base_device* mc68kcpu)
25675{
25676   UINT32 ea = EA_AY_PI_8(mc68kcpu);
25677   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25678
25679   m68ki_write_8((mc68kcpu), ea, res);
25680
25681   (mc68kcpu)->n_flag = NFLAG_8(res);
25682   (mc68kcpu)->not_z_flag = res;
25683   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25684   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25685}
25686
25687
25688void m68000_base_device_ops::m68k_op_or_8_re_pi7(m68000_base_device* mc68kcpu)
25689{
25690   UINT32 ea = EA_A7_PI_8(mc68kcpu);
25691   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25692
25693   m68ki_write_8((mc68kcpu), ea, res);
25694
25695   (mc68kcpu)->n_flag = NFLAG_8(res);
25696   (mc68kcpu)->not_z_flag = res;
25697   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25698   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25699}
25700
25701
25702void m68000_base_device_ops::m68k_op_or_8_re_pd(m68000_base_device* mc68kcpu)
25703{
25704   UINT32 ea = EA_AY_PD_8(mc68kcpu);
25705   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25706
25707   m68ki_write_8((mc68kcpu), ea, res);
25708
25709   (mc68kcpu)->n_flag = NFLAG_8(res);
25710   (mc68kcpu)->not_z_flag = res;
25711   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25712   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25713}
25714
25715
25716void m68000_base_device_ops::m68k_op_or_8_re_pd7(m68000_base_device* mc68kcpu)
25717{
25718   UINT32 ea = EA_A7_PD_8(mc68kcpu);
25719   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25720
25721   m68ki_write_8((mc68kcpu), ea, res);
25722
25723   (mc68kcpu)->n_flag = NFLAG_8(res);
25724   (mc68kcpu)->not_z_flag = res;
25725   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25726   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25727}
25728
25729
25730void m68000_base_device_ops::m68k_op_or_8_re_di(m68000_base_device* mc68kcpu)
25731{
25732   UINT32 ea = EA_AY_DI_8(mc68kcpu);
25733   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25734
25735   m68ki_write_8((mc68kcpu), ea, res);
25736
25737   (mc68kcpu)->n_flag = NFLAG_8(res);
25738   (mc68kcpu)->not_z_flag = res;
25739   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25740   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25741}
25742
25743
25744void m68000_base_device_ops::m68k_op_or_8_re_ix(m68000_base_device* mc68kcpu)
25745{
25746   UINT32 ea = EA_AY_IX_8(mc68kcpu);
25747   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25748
25749   m68ki_write_8((mc68kcpu), ea, res);
25750
25751   (mc68kcpu)->n_flag = NFLAG_8(res);
25752   (mc68kcpu)->not_z_flag = res;
25753   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25754   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25755}
25756
25757
25758void m68000_base_device_ops::m68k_op_or_8_re_aw(m68000_base_device* mc68kcpu)
25759{
25760   UINT32 ea = EA_AW_8(mc68kcpu);
25761   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25762
25763   m68ki_write_8((mc68kcpu), ea, res);
25764
25765   (mc68kcpu)->n_flag = NFLAG_8(res);
25766   (mc68kcpu)->not_z_flag = res;
25767   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25768   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25769}
25770
25771
25772void m68000_base_device_ops::m68k_op_or_8_re_al(m68000_base_device* mc68kcpu)
25773{
25774   UINT32 ea = EA_AL_8(mc68kcpu);
25775   UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
25776
25777   m68ki_write_8((mc68kcpu), ea, res);
25778
25779   (mc68kcpu)->n_flag = NFLAG_8(res);
25780   (mc68kcpu)->not_z_flag = res;
25781   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25782   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25783}
25784
25785
25786void m68000_base_device_ops::m68k_op_or_16_re_ai(m68000_base_device* mc68kcpu)
25787{
25788   UINT32 ea = EA_AY_AI_16(mc68kcpu);
25789   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25790
25791   m68ki_write_16((mc68kcpu), ea, res);
25792
25793   (mc68kcpu)->n_flag = NFLAG_16(res);
25794   (mc68kcpu)->not_z_flag = res;
25795   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25796   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25797}
25798
25799
25800void m68000_base_device_ops::m68k_op_or_16_re_pi(m68000_base_device* mc68kcpu)
25801{
25802   UINT32 ea = EA_AY_PI_16(mc68kcpu);
25803   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25804
25805   m68ki_write_16((mc68kcpu), ea, res);
25806
25807   (mc68kcpu)->n_flag = NFLAG_16(res);
25808   (mc68kcpu)->not_z_flag = res;
25809   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25810   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25811}
25812
25813
25814void m68000_base_device_ops::m68k_op_or_16_re_pd(m68000_base_device* mc68kcpu)
25815{
25816   UINT32 ea = EA_AY_PD_16(mc68kcpu);
25817   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25818
25819   m68ki_write_16((mc68kcpu), ea, res);
25820
25821   (mc68kcpu)->n_flag = NFLAG_16(res);
25822   (mc68kcpu)->not_z_flag = res;
25823   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25824   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25825}
25826
25827
25828void m68000_base_device_ops::m68k_op_or_16_re_di(m68000_base_device* mc68kcpu)
25829{
25830   UINT32 ea = EA_AY_DI_16(mc68kcpu);
25831   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25832
25833   m68ki_write_16((mc68kcpu), ea, res);
25834
25835   (mc68kcpu)->n_flag = NFLAG_16(res);
25836   (mc68kcpu)->not_z_flag = res;
25837   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25838   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25839}
25840
25841
25842void m68000_base_device_ops::m68k_op_or_16_re_ix(m68000_base_device* mc68kcpu)
25843{
25844   UINT32 ea = EA_AY_IX_16(mc68kcpu);
25845   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25846
25847   m68ki_write_16((mc68kcpu), ea, res);
25848
25849   (mc68kcpu)->n_flag = NFLAG_16(res);
25850   (mc68kcpu)->not_z_flag = res;
25851   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25852   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25853}
25854
25855
25856void m68000_base_device_ops::m68k_op_or_16_re_aw(m68000_base_device* mc68kcpu)
25857{
25858   UINT32 ea = EA_AW_16(mc68kcpu);
25859   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25860
25861   m68ki_write_16((mc68kcpu), ea, res);
25862
25863   (mc68kcpu)->n_flag = NFLAG_16(res);
25864   (mc68kcpu)->not_z_flag = res;
25865   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25866   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25867}
25868
25869
25870void m68000_base_device_ops::m68k_op_or_16_re_al(m68000_base_device* mc68kcpu)
25871{
25872   UINT32 ea = EA_AL_16(mc68kcpu);
25873   UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
25874
25875   m68ki_write_16((mc68kcpu), ea, res);
25876
25877   (mc68kcpu)->n_flag = NFLAG_16(res);
25878   (mc68kcpu)->not_z_flag = res;
25879   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25880   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25881}
25882
25883
25884void m68000_base_device_ops::m68k_op_or_32_re_ai(m68000_base_device* mc68kcpu)
25885{
25886   UINT32 ea = EA_AY_AI_32(mc68kcpu);
25887   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25888
25889   m68ki_write_32((mc68kcpu), ea, res);
25890
25891   (mc68kcpu)->n_flag = NFLAG_32(res);
25892   (mc68kcpu)->not_z_flag = res;
25893   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25894   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25895}
25896
25897
25898void m68000_base_device_ops::m68k_op_or_32_re_pi(m68000_base_device* mc68kcpu)
25899{
25900   UINT32 ea = EA_AY_PI_32(mc68kcpu);
25901   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25902
25903   m68ki_write_32((mc68kcpu), ea, res);
25904
25905   (mc68kcpu)->n_flag = NFLAG_32(res);
25906   (mc68kcpu)->not_z_flag = res;
25907   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25908   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25909}
25910
25911
25912void m68000_base_device_ops::m68k_op_or_32_re_pd(m68000_base_device* mc68kcpu)
25913{
25914   UINT32 ea = EA_AY_PD_32(mc68kcpu);
25915   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25916
25917   m68ki_write_32((mc68kcpu), ea, res);
25918
25919   (mc68kcpu)->n_flag = NFLAG_32(res);
25920   (mc68kcpu)->not_z_flag = res;
25921   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25922   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25923}
25924
25925
25926void m68000_base_device_ops::m68k_op_or_32_re_di(m68000_base_device* mc68kcpu)
25927{
25928   UINT32 ea = EA_AY_DI_32(mc68kcpu);
25929   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25930
25931   m68ki_write_32((mc68kcpu), ea, res);
25932
25933   (mc68kcpu)->n_flag = NFLAG_32(res);
25934   (mc68kcpu)->not_z_flag = res;
25935   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25936   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25937}
25938
25939
25940void m68000_base_device_ops::m68k_op_or_32_re_ix(m68000_base_device* mc68kcpu)
25941{
25942   UINT32 ea = EA_AY_IX_32(mc68kcpu);
25943   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25944
25945   m68ki_write_32((mc68kcpu), ea, res);
25946
25947   (mc68kcpu)->n_flag = NFLAG_32(res);
25948   (mc68kcpu)->not_z_flag = res;
25949   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25950   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25951}
25952
25953
25954void m68000_base_device_ops::m68k_op_or_32_re_aw(m68000_base_device* mc68kcpu)
25955{
25956   UINT32 ea = EA_AW_32(mc68kcpu);
25957   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25958
25959   m68ki_write_32((mc68kcpu), ea, res);
25960
25961   (mc68kcpu)->n_flag = NFLAG_32(res);
25962   (mc68kcpu)->not_z_flag = res;
25963   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25964   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25965}
25966
25967
25968void m68000_base_device_ops::m68k_op_or_32_re_al(m68000_base_device* mc68kcpu)
25969{
25970   UINT32 ea = EA_AL_32(mc68kcpu);
25971   UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
25972
25973   m68ki_write_32((mc68kcpu), ea, res);
25974
25975   (mc68kcpu)->n_flag = NFLAG_32(res);
25976   (mc68kcpu)->not_z_flag = res;
25977   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25978   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25979}
25980
25981
25982void m68000_base_device_ops::m68k_op_ori_8_d(m68000_base_device* mc68kcpu)
25983{
25984   UINT32 res = MASK_OUT_ABOVE_8((DY(mc68kcpu) |= OPER_I_8(mc68kcpu)));
25985
25986   (mc68kcpu)->n_flag = NFLAG_8(res);
25987   (mc68kcpu)->not_z_flag = res;
25988   (mc68kcpu)->c_flag = CFLAG_CLEAR;
25989   (mc68kcpu)->v_flag = VFLAG_CLEAR;
25990}
25991
25992
25993void m68000_base_device_ops::m68k_op_ori_8_ai(m68000_base_device* mc68kcpu)
25994{
25995   UINT32 src = OPER_I_8(mc68kcpu);
25996   UINT32 ea = EA_AY_AI_8(mc68kcpu);
25997   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
25998
25999   m68ki_write_8((mc68kcpu), ea, res);
26000
26001   (mc68kcpu)->n_flag = NFLAG_8(res);
26002   (mc68kcpu)->not_z_flag = res;
26003   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26004   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26005}
26006
26007
26008void m68000_base_device_ops::m68k_op_ori_8_pi(m68000_base_device* mc68kcpu)
26009{
26010   UINT32 src = OPER_I_8(mc68kcpu);
26011   UINT32 ea = EA_AY_PI_8(mc68kcpu);
26012   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26013
26014   m68ki_write_8((mc68kcpu), ea, res);
26015
26016   (mc68kcpu)->n_flag = NFLAG_8(res);
26017   (mc68kcpu)->not_z_flag = res;
26018   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26019   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26020}
26021
26022
26023void m68000_base_device_ops::m68k_op_ori_8_pi7(m68000_base_device* mc68kcpu)
26024{
26025   UINT32 src = OPER_I_8(mc68kcpu);
26026   UINT32 ea = EA_A7_PI_8(mc68kcpu);
26027   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26028
26029   m68ki_write_8((mc68kcpu), ea, res);
26030
26031   (mc68kcpu)->n_flag = NFLAG_8(res);
26032   (mc68kcpu)->not_z_flag = res;
26033   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26034   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26035}
26036
26037
26038void m68000_base_device_ops::m68k_op_ori_8_pd(m68000_base_device* mc68kcpu)
26039{
26040   UINT32 src = OPER_I_8(mc68kcpu);
26041   UINT32 ea = EA_AY_PD_8(mc68kcpu);
26042   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26043
26044   m68ki_write_8((mc68kcpu), ea, res);
26045
26046   (mc68kcpu)->n_flag = NFLAG_8(res);
26047   (mc68kcpu)->not_z_flag = res;
26048   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26049   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26050}
26051
26052
26053void m68000_base_device_ops::m68k_op_ori_8_pd7(m68000_base_device* mc68kcpu)
26054{
26055   UINT32 src = OPER_I_8(mc68kcpu);
26056   UINT32 ea = EA_A7_PD_8(mc68kcpu);
26057   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26058
26059   m68ki_write_8((mc68kcpu), ea, res);
26060
26061   (mc68kcpu)->n_flag = NFLAG_8(res);
26062   (mc68kcpu)->not_z_flag = res;
26063   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26064   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26065}
26066
26067
26068void m68000_base_device_ops::m68k_op_ori_8_di(m68000_base_device* mc68kcpu)
26069{
26070   UINT32 src = OPER_I_8(mc68kcpu);
26071   UINT32 ea = EA_AY_DI_8(mc68kcpu);
26072   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26073
26074   m68ki_write_8((mc68kcpu), ea, res);
26075
26076   (mc68kcpu)->n_flag = NFLAG_8(res);
26077   (mc68kcpu)->not_z_flag = res;
26078   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26079   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26080}
26081
26082
26083void m68000_base_device_ops::m68k_op_ori_8_ix(m68000_base_device* mc68kcpu)
26084{
26085   UINT32 src = OPER_I_8(mc68kcpu);
26086   UINT32 ea = EA_AY_IX_8(mc68kcpu);
26087   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26088
26089   m68ki_write_8((mc68kcpu), ea, res);
26090
26091   (mc68kcpu)->n_flag = NFLAG_8(res);
26092   (mc68kcpu)->not_z_flag = res;
26093   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26094   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26095}
26096
26097
26098void m68000_base_device_ops::m68k_op_ori_8_aw(m68000_base_device* mc68kcpu)
26099{
26100   UINT32 src = OPER_I_8(mc68kcpu);
26101   UINT32 ea = EA_AW_8(mc68kcpu);
26102   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26103
26104   m68ki_write_8((mc68kcpu), ea, res);
26105
26106   (mc68kcpu)->n_flag = NFLAG_8(res);
26107   (mc68kcpu)->not_z_flag = res;
26108   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26109   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26110}
26111
26112
26113void m68000_base_device_ops::m68k_op_ori_8_al(m68000_base_device* mc68kcpu)
26114{
26115   UINT32 src = OPER_I_8(mc68kcpu);
26116   UINT32 ea = EA_AL_8(mc68kcpu);
26117   UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
26118
26119   m68ki_write_8((mc68kcpu), ea, res);
26120
26121   (mc68kcpu)->n_flag = NFLAG_8(res);
26122   (mc68kcpu)->not_z_flag = res;
26123   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26124   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26125}
26126
26127
26128void m68000_base_device_ops::m68k_op_ori_16_d(m68000_base_device* mc68kcpu)
26129{
26130   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) |= OPER_I_16(mc68kcpu));
26131
26132   (mc68kcpu)->n_flag = NFLAG_16(res);
26133   (mc68kcpu)->not_z_flag = res;
26134   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26135   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26136}
26137
26138
26139void m68000_base_device_ops::m68k_op_ori_16_ai(m68000_base_device* mc68kcpu)
26140{
26141   UINT32 src = OPER_I_16(mc68kcpu);
26142   UINT32 ea = EA_AY_AI_16(mc68kcpu);
26143   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26144
26145   m68ki_write_16((mc68kcpu), ea, res);
26146
26147   (mc68kcpu)->n_flag = NFLAG_16(res);
26148   (mc68kcpu)->not_z_flag = res;
26149   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26150   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26151}
26152
26153
26154void m68000_base_device_ops::m68k_op_ori_16_pi(m68000_base_device* mc68kcpu)
26155{
26156   UINT32 src = OPER_I_16(mc68kcpu);
26157   UINT32 ea = EA_AY_PI_16(mc68kcpu);
26158   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26159
26160   m68ki_write_16((mc68kcpu), ea, res);
26161
26162   (mc68kcpu)->n_flag = NFLAG_16(res);
26163   (mc68kcpu)->not_z_flag = res;
26164   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26165   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26166}
26167
26168
26169void m68000_base_device_ops::m68k_op_ori_16_pd(m68000_base_device* mc68kcpu)
26170{
26171   UINT32 src = OPER_I_16(mc68kcpu);
26172   UINT32 ea = EA_AY_PD_16(mc68kcpu);
26173   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26174
26175   m68ki_write_16((mc68kcpu), ea, res);
26176
26177   (mc68kcpu)->n_flag = NFLAG_16(res);
26178   (mc68kcpu)->not_z_flag = res;
26179   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26180   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26181}
26182
26183
26184void m68000_base_device_ops::m68k_op_ori_16_di(m68000_base_device* mc68kcpu)
26185{
26186   UINT32 src = OPER_I_16(mc68kcpu);
26187   UINT32 ea = EA_AY_DI_16(mc68kcpu);
26188   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26189
26190   m68ki_write_16((mc68kcpu), ea, res);
26191
26192   (mc68kcpu)->n_flag = NFLAG_16(res);
26193   (mc68kcpu)->not_z_flag = res;
26194   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26195   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26196}
26197
26198
26199void m68000_base_device_ops::m68k_op_ori_16_ix(m68000_base_device* mc68kcpu)
26200{
26201   UINT32 src = OPER_I_16(mc68kcpu);
26202   UINT32 ea = EA_AY_IX_16(mc68kcpu);
26203   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26204
26205   m68ki_write_16((mc68kcpu), ea, res);
26206
26207   (mc68kcpu)->n_flag = NFLAG_16(res);
26208   (mc68kcpu)->not_z_flag = res;
26209   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26210   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26211}
26212
26213
26214void m68000_base_device_ops::m68k_op_ori_16_aw(m68000_base_device* mc68kcpu)
26215{
26216   UINT32 src = OPER_I_16(mc68kcpu);
26217   UINT32 ea = EA_AW_16(mc68kcpu);
26218   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26219
26220   m68ki_write_16((mc68kcpu), ea, res);
26221
26222   (mc68kcpu)->n_flag = NFLAG_16(res);
26223   (mc68kcpu)->not_z_flag = res;
26224   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26225   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26226}
26227
26228
26229void m68000_base_device_ops::m68k_op_ori_16_al(m68000_base_device* mc68kcpu)
26230{
26231   UINT32 src = OPER_I_16(mc68kcpu);
26232   UINT32 ea = EA_AL_16(mc68kcpu);
26233   UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
26234
26235   m68ki_write_16((mc68kcpu), ea, res);
26236
26237   (mc68kcpu)->n_flag = NFLAG_16(res);
26238   (mc68kcpu)->not_z_flag = res;
26239   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26240   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26241}
26242
26243
26244void m68000_base_device_ops::m68k_op_ori_32_d(m68000_base_device* mc68kcpu)
26245{
26246   UINT32 res = DY(mc68kcpu) |= OPER_I_32(mc68kcpu);
26247
26248   (mc68kcpu)->n_flag = NFLAG_32(res);
26249   (mc68kcpu)->not_z_flag = res;
26250   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26251   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26252}
26253
26254
26255void m68000_base_device_ops::m68k_op_ori_32_ai(m68000_base_device* mc68kcpu)
26256{
26257   UINT32 src = OPER_I_32(mc68kcpu);
26258   UINT32 ea = EA_AY_AI_32(mc68kcpu);
26259   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26260
26261   m68ki_write_32((mc68kcpu), ea, res);
26262
26263   (mc68kcpu)->n_flag = NFLAG_32(res);
26264   (mc68kcpu)->not_z_flag = res;
26265   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26266   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26267}
26268
26269
26270void m68000_base_device_ops::m68k_op_ori_32_pi(m68000_base_device* mc68kcpu)
26271{
26272   UINT32 src = OPER_I_32(mc68kcpu);
26273   UINT32 ea = EA_AY_PI_32(mc68kcpu);
26274   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26275
26276   m68ki_write_32((mc68kcpu), ea, res);
26277
26278   (mc68kcpu)->n_flag = NFLAG_32(res);
26279   (mc68kcpu)->not_z_flag = res;
26280   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26281   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26282}
26283
26284
26285void m68000_base_device_ops::m68k_op_ori_32_pd(m68000_base_device* mc68kcpu)
26286{
26287   UINT32 src = OPER_I_32(mc68kcpu);
26288   UINT32 ea = EA_AY_PD_32(mc68kcpu);
26289   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26290
26291   m68ki_write_32((mc68kcpu), ea, res);
26292
26293   (mc68kcpu)->n_flag = NFLAG_32(res);
26294   (mc68kcpu)->not_z_flag = res;
26295   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26296   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26297}
26298
26299
26300void m68000_base_device_ops::m68k_op_ori_32_di(m68000_base_device* mc68kcpu)
26301{
26302   UINT32 src = OPER_I_32(mc68kcpu);
26303   UINT32 ea = EA_AY_DI_32(mc68kcpu);
26304   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26305
26306   m68ki_write_32((mc68kcpu), ea, res);
26307
26308   (mc68kcpu)->n_flag = NFLAG_32(res);
26309   (mc68kcpu)->not_z_flag = res;
26310   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26311   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26312}
26313
26314
26315void m68000_base_device_ops::m68k_op_ori_32_ix(m68000_base_device* mc68kcpu)
26316{
26317   UINT32 src = OPER_I_32(mc68kcpu);
26318   UINT32 ea = EA_AY_IX_32(mc68kcpu);
26319   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26320
26321   m68ki_write_32((mc68kcpu), ea, res);
26322
26323   (mc68kcpu)->n_flag = NFLAG_32(res);
26324   (mc68kcpu)->not_z_flag = res;
26325   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26326   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26327}
26328
26329
26330void m68000_base_device_ops::m68k_op_ori_32_aw(m68000_base_device* mc68kcpu)
26331{
26332   UINT32 src = OPER_I_32(mc68kcpu);
26333   UINT32 ea = EA_AW_32(mc68kcpu);
26334   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26335
26336   m68ki_write_32((mc68kcpu), ea, res);
26337
26338   (mc68kcpu)->n_flag = NFLAG_32(res);
26339   (mc68kcpu)->not_z_flag = res;
26340   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26341   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26342}
26343
26344
26345void m68000_base_device_ops::m68k_op_ori_32_al(m68000_base_device* mc68kcpu)
26346{
26347   UINT32 src = OPER_I_32(mc68kcpu);
26348   UINT32 ea = EA_AL_32(mc68kcpu);
26349   UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
26350
26351   m68ki_write_32((mc68kcpu), ea, res);
26352
26353   (mc68kcpu)->n_flag = NFLAG_32(res);
26354   (mc68kcpu)->not_z_flag = res;
26355   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26356   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26357}
26358
26359
26360void m68000_base_device_ops::m68k_op_ori_16_toc(m68000_base_device* mc68kcpu)
26361{
26362   m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) | OPER_I_16(mc68kcpu));
26363}
26364
26365
26366void m68000_base_device_ops::m68k_op_ori_16_tos(m68000_base_device* mc68kcpu)
26367{
26368   if((mc68kcpu)->s_flag)
26369   {
26370      UINT32 src = OPER_I_16(mc68kcpu);
26371      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
26372      m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) | src);
26373      return;
26374   }
26375   m68ki_exception_privilege_violation(mc68kcpu);
26376}
26377
26378
26379void m68000_base_device_ops::m68k_op_pack_16_rr(m68000_base_device* mc68kcpu)
26380{
26381   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
26382   {
26383      /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
26384      UINT32 src = DY(mc68kcpu) + OPER_I_16(mc68kcpu);
26385      UINT32* r_dst = &DX(mc68kcpu);
26386
26387      *r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
26388      return;
26389   }
26390   m68ki_exception_illegal(mc68kcpu);
26391}
26392
26393
26394void m68000_base_device_ops::m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu)
26395{
26396   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
26397   {
26398      /* Note: AX and AY are reversed in Motorola's docs */
26399      UINT32 ea_src = EA_AY_PD_8(mc68kcpu);
26400      UINT32 src = m68ki_read_8((mc68kcpu), ea_src);
26401      ea_src = EA_AY_PD_8(mc68kcpu);
26402      src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
26403
26404      m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
26405      return;
26406   }
26407   m68ki_exception_illegal(mc68kcpu);
26408}
26409
26410
26411void m68000_base_device_ops::m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu)
26412{
26413   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
26414   {
26415      /* Note: AX and AY are reversed in Motorola's docs */
26416      UINT32 ea_src = EA_A7_PD_8(mc68kcpu);
26417      UINT32 src = m68ki_read_8((mc68kcpu), ea_src);
26418      ea_src = EA_A7_PD_8(mc68kcpu);
26419      src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
26420
26421      m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
26422      return;
26423   }
26424   m68ki_exception_illegal(mc68kcpu);
26425}
26426
26427
26428void m68000_base_device_ops::m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcpu)
26429{
26430   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
26431   {
26432      UINT32 ea_src = EA_A7_PD_8(mc68kcpu);
26433      UINT32 src = m68ki_read_8((mc68kcpu), ea_src);
26434      ea_src = EA_A7_PD_8(mc68kcpu);
26435      src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
26436
26437      m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
26438      return;
26439   }
26440   m68ki_exception_illegal(mc68kcpu);
26441}
26442
26443
26444void m68000_base_device_ops::m68k_op_pack_16_mm(m68000_base_device* mc68kcpu)
26445{
26446   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
26447   {
26448      /* Note: AX and AY are reversed in Motorola's docs */
26449      UINT32 ea_src = EA_AY_PD_8(mc68kcpu);
26450      UINT32 src = m68ki_read_8((mc68kcpu), ea_src);
26451      ea_src = EA_AY_PD_8(mc68kcpu);
26452      src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
26453
26454      m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
26455      return;
26456   }
26457   m68ki_exception_illegal(mc68kcpu);
26458}
26459
26460
26461void m68000_base_device_ops::m68k_op_pea_32_ai(m68000_base_device* mc68kcpu)
26462{
26463   UINT32 ea = EA_AY_AI_32(mc68kcpu);
26464
26465   m68ki_push_32((mc68kcpu), ea);
26466}
26467
26468
26469void m68000_base_device_ops::m68k_op_pea_32_di(m68000_base_device* mc68kcpu)
26470{
26471   UINT32 ea = EA_AY_DI_32(mc68kcpu);
26472
26473   m68ki_push_32((mc68kcpu), ea);
26474}
26475
26476
26477void m68000_base_device_ops::m68k_op_pea_32_ix(m68000_base_device* mc68kcpu)
26478{
26479   UINT32 ea = EA_AY_IX_32(mc68kcpu);
26480
26481   m68ki_push_32((mc68kcpu), ea);
26482}
26483
26484
26485void m68000_base_device_ops::m68k_op_pea_32_aw(m68000_base_device* mc68kcpu)
26486{
26487   UINT32 ea = EA_AW_32(mc68kcpu);
26488
26489   m68ki_push_32((mc68kcpu), ea);
26490}
26491
26492
26493void m68000_base_device_ops::m68k_op_pea_32_al(m68000_base_device* mc68kcpu)
26494{
26495   UINT32 ea = EA_AL_32(mc68kcpu);
26496
26497   m68ki_push_32((mc68kcpu), ea);
26498}
26499
26500
26501void m68000_base_device_ops::m68k_op_pea_32_pcdi(m68000_base_device* mc68kcpu)
26502{
26503   UINT32 ea = EA_PCDI_32(mc68kcpu);
26504
26505   m68ki_push_32((mc68kcpu), ea);
26506}
26507
26508
26509void m68000_base_device_ops::m68k_op_pea_32_pcix(m68000_base_device* mc68kcpu)
26510{
26511   UINT32 ea = EA_PCIX_32(mc68kcpu);
26512
26513   m68ki_push_32((mc68kcpu), ea);
26514}
26515
26516
26517void m68000_base_device_ops::m68k_op_pflusha_32(m68000_base_device* mc68kcpu)
26518{
26519   if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
26520   {
26521      logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir);
26522      return;
26523   }
26524   m68ki_exception_1111(mc68kcpu);
26525}
26526
26527
26528void m68000_base_device_ops::m68k_op_pflushan_32(m68000_base_device* mc68kcpu)
26529{
26530   if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
26531   {
26532      logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir);
26533      return;
26534   }
26535   m68ki_exception_1111(mc68kcpu);
26536}
26537
26538
26539void m68000_base_device_ops::m68k_op_pmmu_32(m68000_base_device* mc68kcpu)
26540{
26541   if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
26542   {
26543      m68881_mmu_ops(mc68kcpu);
26544   }
26545   else
26546   {
26547      m68ki_exception_1111(mc68kcpu);
26548   }
26549}
26550
26551
26552void m68000_base_device_ops::m68k_op_ptest_32(m68000_base_device* mc68kcpu)
26553{
26554   if ((CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
26555   {
26556      logerror("68040: unhandled PTEST\n");
26557      return;
26558   }
26559   else
26560   {
26561      m68ki_exception_1111(mc68kcpu);
26562   }
26563}
26564
26565
26566void m68000_base_device_ops::m68k_op_reset(m68000_base_device* mc68kcpu)
26567{
26568   if((mc68kcpu)->s_flag)
26569   {
26570      if (!(mc68kcpu)->reset_instr_callback.isnull())
26571         ((mc68kcpu)->reset_instr_callback)(1);
26572      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_reset;
26573      return;
26574   }
26575   m68ki_exception_privilege_violation(mc68kcpu);
26576}
26577
26578
26579void m68000_base_device_ops::m68k_op_ror_8_s(m68000_base_device* mc68kcpu)
26580{
26581   UINT32* r_dst = &DY(mc68kcpu);
26582   UINT32 orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26583   UINT32 shift = orig_shift & 7;
26584   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
26585   UINT32 res = ROR_8(src, shift);
26586
26587   if(orig_shift != 0)
26588      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26589
26590   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
26591
26592   (mc68kcpu)->n_flag = NFLAG_8(res);
26593   (mc68kcpu)->not_z_flag = res;
26594   (mc68kcpu)->c_flag = src << (9-orig_shift);
26595   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26596}
26597
26598
26599void m68000_base_device_ops::m68k_op_ror_16_s(m68000_base_device* mc68kcpu)
26600{
26601   UINT32* r_dst = &DY(mc68kcpu);
26602   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26603   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
26604   UINT32 res = ROR_16(src, shift);
26605
26606   if(shift != 0)
26607      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
26608
26609   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
26610
26611   (mc68kcpu)->n_flag = NFLAG_16(res);
26612   (mc68kcpu)->not_z_flag = res;
26613   (mc68kcpu)->c_flag = src << (9-shift);
26614   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26615}
26616
26617
26618void m68000_base_device_ops::m68k_op_ror_32_s(m68000_base_device* mc68kcpu)
26619{
26620   UINT32* r_dst = &DY(mc68kcpu);
26621   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26622   UINT64 src = *r_dst;
26623   UINT32 res = ROR_32(src, shift);
26624
26625   if(shift != 0)
26626      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
26627
26628   *r_dst = res;
26629
26630   (mc68kcpu)->n_flag = NFLAG_32(res);
26631   (mc68kcpu)->not_z_flag = res;
26632   (mc68kcpu)->c_flag = src << (9-shift);
26633   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26634}
26635
26636
26637void m68000_base_device_ops::m68k_op_ror_8_r(m68000_base_device* mc68kcpu)
26638{
26639   UINT32* r_dst = &DY(mc68kcpu);
26640   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26641   UINT32 shift = orig_shift & 7;
26642   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
26643   UINT32 res = ROR_8(src, shift);
26644
26645   if(orig_shift != 0)
26646   {
26647      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26648
26649      *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
26650      (mc68kcpu)->c_flag = src << (8-((shift-1)&7));
26651      (mc68kcpu)->n_flag = NFLAG_8(res);
26652      (mc68kcpu)->not_z_flag = res;
26653      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26654      return;
26655   }
26656
26657   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26658   (mc68kcpu)->n_flag = NFLAG_8(src);
26659   (mc68kcpu)->not_z_flag = src;
26660   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26661}
26662
26663
26664void m68000_base_device_ops::m68k_op_ror_16_r(m68000_base_device* mc68kcpu)
26665{
26666   UINT32* r_dst = &DY(mc68kcpu);
26667   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26668   UINT32 shift = orig_shift & 15;
26669   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
26670   UINT32 res = ROR_16(src, shift);
26671
26672   if(orig_shift != 0)
26673   {
26674      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26675
26676      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
26677      (mc68kcpu)->c_flag = (src >> ((shift - 1) & 15)) << 8;
26678      (mc68kcpu)->n_flag = NFLAG_16(res);
26679      (mc68kcpu)->not_z_flag = res;
26680      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26681      return;
26682   }
26683
26684   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26685   (mc68kcpu)->n_flag = NFLAG_16(src);
26686   (mc68kcpu)->not_z_flag = src;
26687   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26688}
26689
26690
26691void m68000_base_device_ops::m68k_op_ror_32_r(m68000_base_device* mc68kcpu)
26692{
26693   UINT32* r_dst = &DY(mc68kcpu);
26694   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26695   UINT32 shift = orig_shift & 31;
26696   UINT64 src = *r_dst;
26697   UINT32 res = ROR_32(src, shift);
26698
26699   if(orig_shift != 0)
26700   {
26701      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26702
26703      *r_dst = res;
26704      (mc68kcpu)->c_flag = (src >> ((shift - 1) & 31)) << 8;
26705      (mc68kcpu)->n_flag = NFLAG_32(res);
26706      (mc68kcpu)->not_z_flag = res;
26707      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26708      return;
26709   }
26710
26711   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26712   (mc68kcpu)->n_flag = NFLAG_32(src);
26713   (mc68kcpu)->not_z_flag = src;
26714   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26715}
26716
26717
26718void m68000_base_device_ops::m68k_op_ror_16_ai(m68000_base_device* mc68kcpu)
26719{
26720   UINT32 ea = EA_AY_AI_16(mc68kcpu);
26721   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26722   UINT32 res = ROR_16(src, 1);
26723
26724   m68ki_write_16((mc68kcpu), ea, res);
26725
26726   (mc68kcpu)->n_flag = NFLAG_16(res);
26727   (mc68kcpu)->not_z_flag = res;
26728   (mc68kcpu)->c_flag = src << 8;
26729   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26730}
26731
26732
26733void m68000_base_device_ops::m68k_op_ror_16_pi(m68000_base_device* mc68kcpu)
26734{
26735   UINT32 ea = EA_AY_PI_16(mc68kcpu);
26736   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26737   UINT32 res = ROR_16(src, 1);
26738
26739   m68ki_write_16((mc68kcpu), ea, res);
26740
26741   (mc68kcpu)->n_flag = NFLAG_16(res);
26742   (mc68kcpu)->not_z_flag = res;
26743   (mc68kcpu)->c_flag = src << 8;
26744   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26745}
26746
26747
26748void m68000_base_device_ops::m68k_op_ror_16_pd(m68000_base_device* mc68kcpu)
26749{
26750   UINT32 ea = EA_AY_PD_16(mc68kcpu);
26751   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26752   UINT32 res = ROR_16(src, 1);
26753
26754   m68ki_write_16((mc68kcpu), ea, res);
26755
26756   (mc68kcpu)->n_flag = NFLAG_16(res);
26757   (mc68kcpu)->not_z_flag = res;
26758   (mc68kcpu)->c_flag = src << 8;
26759   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26760}
26761
26762
26763void m68000_base_device_ops::m68k_op_ror_16_di(m68000_base_device* mc68kcpu)
26764{
26765   UINT32 ea = EA_AY_DI_16(mc68kcpu);
26766   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26767   UINT32 res = ROR_16(src, 1);
26768
26769   m68ki_write_16((mc68kcpu), ea, res);
26770
26771   (mc68kcpu)->n_flag = NFLAG_16(res);
26772   (mc68kcpu)->not_z_flag = res;
26773   (mc68kcpu)->c_flag = src << 8;
26774   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26775}
26776
26777
26778void m68000_base_device_ops::m68k_op_ror_16_ix(m68000_base_device* mc68kcpu)
26779{
26780   UINT32 ea = EA_AY_IX_16(mc68kcpu);
26781   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26782   UINT32 res = ROR_16(src, 1);
26783
26784   m68ki_write_16((mc68kcpu), ea, res);
26785
26786   (mc68kcpu)->n_flag = NFLAG_16(res);
26787   (mc68kcpu)->not_z_flag = res;
26788   (mc68kcpu)->c_flag = src << 8;
26789   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26790}
26791
26792
26793void m68000_base_device_ops::m68k_op_ror_16_aw(m68000_base_device* mc68kcpu)
26794{
26795   UINT32 ea = EA_AW_16(mc68kcpu);
26796   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26797   UINT32 res = ROR_16(src, 1);
26798
26799   m68ki_write_16((mc68kcpu), ea, res);
26800
26801   (mc68kcpu)->n_flag = NFLAG_16(res);
26802   (mc68kcpu)->not_z_flag = res;
26803   (mc68kcpu)->c_flag = src << 8;
26804   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26805}
26806
26807
26808void m68000_base_device_ops::m68k_op_ror_16_al(m68000_base_device* mc68kcpu)
26809{
26810   UINT32 ea = EA_AL_16(mc68kcpu);
26811   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26812   UINT32 res = ROR_16(src, 1);
26813
26814   m68ki_write_16((mc68kcpu), ea, res);
26815
26816   (mc68kcpu)->n_flag = NFLAG_16(res);
26817   (mc68kcpu)->not_z_flag = res;
26818   (mc68kcpu)->c_flag = src << 8;
26819   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26820}
26821
26822
26823void m68000_base_device_ops::m68k_op_rol_8_s(m68000_base_device* mc68kcpu)
26824{
26825   UINT32* r_dst = &DY(mc68kcpu);
26826   UINT32 orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26827   UINT32 shift = orig_shift & 7;
26828   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
26829   UINT32 res = ROL_8(src, shift);
26830
26831   if(orig_shift != 0)
26832      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26833
26834   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
26835
26836   (mc68kcpu)->n_flag = NFLAG_8(res);
26837   (mc68kcpu)->not_z_flag = res;
26838   (mc68kcpu)->c_flag = src << orig_shift;
26839   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26840}
26841
26842
26843void m68000_base_device_ops::m68k_op_rol_16_s(m68000_base_device* mc68kcpu)
26844{
26845   UINT32* r_dst = &DY(mc68kcpu);
26846   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26847   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
26848   UINT32 res = ROL_16(src, shift);
26849
26850   if(shift != 0)
26851      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
26852
26853   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
26854
26855   (mc68kcpu)->n_flag = NFLAG_16(res);
26856   (mc68kcpu)->not_z_flag = res;
26857   (mc68kcpu)->c_flag = src >> (8-shift);
26858   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26859}
26860
26861
26862void m68000_base_device_ops::m68k_op_rol_32_s(m68000_base_device* mc68kcpu)
26863{
26864   UINT32* r_dst = &DY(mc68kcpu);
26865   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
26866   UINT64 src = *r_dst;
26867   UINT32 res = ROL_32(src, shift);
26868
26869   if(shift != 0)
26870      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
26871
26872   *r_dst = res;
26873
26874   (mc68kcpu)->n_flag = NFLAG_32(res);
26875   (mc68kcpu)->not_z_flag = res;
26876   (mc68kcpu)->c_flag = src >> (24-shift);
26877   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26878}
26879
26880
26881void m68000_base_device_ops::m68k_op_rol_8_r(m68000_base_device* mc68kcpu)
26882{
26883   UINT32* r_dst = &DY(mc68kcpu);
26884   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26885   UINT32 shift = orig_shift & 7;
26886   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
26887   UINT32 res = ROL_8(src, shift);
26888
26889   if(orig_shift != 0)
26890   {
26891      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26892
26893      if(shift != 0)
26894      {
26895         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
26896         (mc68kcpu)->c_flag = src << shift;
26897         (mc68kcpu)->n_flag = NFLAG_8(res);
26898         (mc68kcpu)->not_z_flag = res;
26899         (mc68kcpu)->v_flag = VFLAG_CLEAR;
26900         return;
26901      }
26902      (mc68kcpu)->c_flag = (src & 1)<<8;
26903      (mc68kcpu)->n_flag = NFLAG_8(src);
26904      (mc68kcpu)->not_z_flag = src;
26905      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26906      return;
26907   }
26908
26909   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26910   (mc68kcpu)->n_flag = NFLAG_8(src);
26911   (mc68kcpu)->not_z_flag = src;
26912   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26913}
26914
26915
26916void m68000_base_device_ops::m68k_op_rol_16_r(m68000_base_device* mc68kcpu)
26917{
26918   UINT32* r_dst = &DY(mc68kcpu);
26919   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26920   UINT32 shift = orig_shift & 15;
26921   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
26922   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
26923
26924   if(orig_shift != 0)
26925   {
26926      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26927
26928      if(shift != 0)
26929      {
26930         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
26931         (mc68kcpu)->c_flag = (src << shift) >> 8;
26932         (mc68kcpu)->n_flag = NFLAG_16(res);
26933         (mc68kcpu)->not_z_flag = res;
26934         (mc68kcpu)->v_flag = VFLAG_CLEAR;
26935         return;
26936      }
26937      (mc68kcpu)->c_flag = (src & 1)<<8;
26938      (mc68kcpu)->n_flag = NFLAG_16(src);
26939      (mc68kcpu)->not_z_flag = src;
26940      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26941      return;
26942   }
26943
26944   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26945   (mc68kcpu)->n_flag = NFLAG_16(src);
26946   (mc68kcpu)->not_z_flag = src;
26947   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26948}
26949
26950
26951void m68000_base_device_ops::m68k_op_rol_32_r(m68000_base_device* mc68kcpu)
26952{
26953   UINT32* r_dst = &DY(mc68kcpu);
26954   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
26955   UINT32 shift = orig_shift & 31;
26956   UINT64 src = *r_dst;
26957   UINT32 res = ROL_32(src, shift);
26958
26959   if(orig_shift != 0)
26960   {
26961      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
26962
26963      *r_dst = res;
26964
26965      (mc68kcpu)->c_flag = (src >> ((32 - shift) & 0x1f)) << 8;
26966      (mc68kcpu)->n_flag = NFLAG_32(res);
26967      (mc68kcpu)->not_z_flag = res;
26968      (mc68kcpu)->v_flag = VFLAG_CLEAR;
26969      return;
26970   }
26971
26972   (mc68kcpu)->c_flag = CFLAG_CLEAR;
26973   (mc68kcpu)->n_flag = NFLAG_32(src);
26974   (mc68kcpu)->not_z_flag = src;
26975   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26976}
26977
26978
26979void m68000_base_device_ops::m68k_op_rol_16_ai(m68000_base_device* mc68kcpu)
26980{
26981   UINT32 ea = EA_AY_AI_16(mc68kcpu);
26982   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26983   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
26984
26985   m68ki_write_16((mc68kcpu), ea, res);
26986
26987   (mc68kcpu)->n_flag = NFLAG_16(res);
26988   (mc68kcpu)->not_z_flag = res;
26989   (mc68kcpu)->c_flag = src >> 7;
26990   (mc68kcpu)->v_flag = VFLAG_CLEAR;
26991}
26992
26993
26994void m68000_base_device_ops::m68k_op_rol_16_pi(m68000_base_device* mc68kcpu)
26995{
26996   UINT32 ea = EA_AY_PI_16(mc68kcpu);
26997   UINT32 src = m68ki_read_16((mc68kcpu), ea);
26998   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
26999
27000   m68ki_write_16((mc68kcpu), ea, res);
27001
27002   (mc68kcpu)->n_flag = NFLAG_16(res);
27003   (mc68kcpu)->not_z_flag = res;
27004   (mc68kcpu)->c_flag = src >> 7;
27005   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27006}
27007
27008
27009void m68000_base_device_ops::m68k_op_rol_16_pd(m68000_base_device* mc68kcpu)
27010{
27011   UINT32 ea = EA_AY_PD_16(mc68kcpu);
27012   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27013   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
27014
27015   m68ki_write_16((mc68kcpu), ea, res);
27016
27017   (mc68kcpu)->n_flag = NFLAG_16(res);
27018   (mc68kcpu)->not_z_flag = res;
27019   (mc68kcpu)->c_flag = src >> 7;
27020   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27021}
27022
27023
27024void m68000_base_device_ops::m68k_op_rol_16_di(m68000_base_device* mc68kcpu)
27025{
27026   UINT32 ea = EA_AY_DI_16(mc68kcpu);
27027   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27028   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
27029
27030   m68ki_write_16((mc68kcpu), ea, res);
27031
27032   (mc68kcpu)->n_flag = NFLAG_16(res);
27033   (mc68kcpu)->not_z_flag = res;
27034   (mc68kcpu)->c_flag = src >> 7;
27035   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27036}
27037
27038
27039void m68000_base_device_ops::m68k_op_rol_16_ix(m68000_base_device* mc68kcpu)
27040{
27041   UINT32 ea = EA_AY_IX_16(mc68kcpu);
27042   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27043   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
27044
27045   m68ki_write_16((mc68kcpu), ea, res);
27046
27047   (mc68kcpu)->n_flag = NFLAG_16(res);
27048   (mc68kcpu)->not_z_flag = res;
27049   (mc68kcpu)->c_flag = src >> 7;
27050   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27051}
27052
27053
27054void m68000_base_device_ops::m68k_op_rol_16_aw(m68000_base_device* mc68kcpu)
27055{
27056   UINT32 ea = EA_AW_16(mc68kcpu);
27057   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27058   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
27059
27060   m68ki_write_16((mc68kcpu), ea, res);
27061
27062   (mc68kcpu)->n_flag = NFLAG_16(res);
27063   (mc68kcpu)->not_z_flag = res;
27064   (mc68kcpu)->c_flag = src >> 7;
27065   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27066}
27067
27068
27069void m68000_base_device_ops::m68k_op_rol_16_al(m68000_base_device* mc68kcpu)
27070{
27071   UINT32 ea = EA_AL_16(mc68kcpu);
27072   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27073   UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
27074
27075   m68ki_write_16((mc68kcpu), ea, res);
27076
27077   (mc68kcpu)->n_flag = NFLAG_16(res);
27078   (mc68kcpu)->not_z_flag = res;
27079   (mc68kcpu)->c_flag = src >> 7;
27080   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27081}
27082
27083
27084void m68000_base_device_ops::m68k_op_roxr_8_s(m68000_base_device* mc68kcpu)
27085{
27086   UINT32* r_dst = &DY(mc68kcpu);
27087   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27088   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
27089   UINT32 res = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
27090
27091   if(shift != 0)
27092      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27093
27094   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
27095   res = MASK_OUT_ABOVE_8(res);
27096
27097   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
27098
27099   (mc68kcpu)->n_flag = NFLAG_8(res);
27100   (mc68kcpu)->not_z_flag = res;
27101   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27102}
27103
27104
27105void m68000_base_device_ops::m68k_op_roxr_16_s(m68000_base_device* mc68kcpu)
27106{
27107   UINT32* r_dst = &DY(mc68kcpu);
27108   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27109   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
27110   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
27111
27112   if(shift != 0)
27113      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27114
27115   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27116   res = MASK_OUT_ABOVE_16(res);
27117
27118   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
27119
27120   (mc68kcpu)->n_flag = NFLAG_16(res);
27121   (mc68kcpu)->not_z_flag = res;
27122   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27123}
27124
27125
27126void m68000_base_device_ops::m68k_op_roxr_32_s(m68000_base_device* mc68kcpu)
27127{
27128   UINT32*  r_dst = &DY(mc68kcpu);
27129   UINT32   shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27130   UINT64 src   = *r_dst;
27131   UINT64 res   = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
27132
27133   if(shift != 0)
27134      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27135
27136   res = ROR_33_64(res, shift);
27137
27138   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
27139   res = MASK_OUT_ABOVE_32(res);
27140
27141   *r_dst =  res;
27142
27143   (mc68kcpu)->n_flag = NFLAG_32(res);
27144   (mc68kcpu)->not_z_flag = res;
27145   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27146}
27147
27148
27149void m68000_base_device_ops::m68k_op_roxr_8_r(m68000_base_device* mc68kcpu)
27150{
27151   UINT32* r_dst = &DY(mc68kcpu);
27152   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
27153
27154   if(orig_shift != 0)
27155   {
27156      UINT32 shift = orig_shift % 9;
27157      UINT32 src   = MASK_OUT_ABOVE_8(*r_dst);
27158      UINT32 res   = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
27159
27160      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27161
27162      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
27163      res = MASK_OUT_ABOVE_8(res);
27164
27165      *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
27166      (mc68kcpu)->n_flag = NFLAG_8(res);
27167      (mc68kcpu)->not_z_flag = res;
27168      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27169      return;
27170   }
27171
27172   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27173   (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
27174   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
27175   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27176}
27177
27178
27179void m68000_base_device_ops::m68k_op_roxr_16_r(m68000_base_device* mc68kcpu)
27180{
27181   UINT32* r_dst = &DY(mc68kcpu);
27182   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
27183
27184   if(orig_shift != 0)
27185   {
27186      UINT32 shift = orig_shift % 17;
27187      UINT32 src   = MASK_OUT_ABOVE_16(*r_dst);
27188      UINT32 res   = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
27189
27190      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27191
27192      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27193      res = MASK_OUT_ABOVE_16(res);
27194
27195      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
27196      (mc68kcpu)->n_flag = NFLAG_16(res);
27197      (mc68kcpu)->not_z_flag = res;
27198      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27199      return;
27200   }
27201
27202   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27203   (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
27204   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
27205   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27206}
27207
27208
27209void m68000_base_device_ops::m68k_op_roxr_32_r(m68000_base_device* mc68kcpu)
27210{
27211   UINT32*  r_dst = &DY(mc68kcpu);
27212   UINT32   orig_shift = DX(mc68kcpu) & 0x3f;
27213
27214   if(orig_shift != 0)
27215   {
27216      UINT32   shift = orig_shift % 33;
27217      UINT64 src   = *r_dst;
27218      UINT64 res   = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
27219
27220      res = ROR_33_64(res, shift);
27221
27222      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27223
27224      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
27225      res = MASK_OUT_ABOVE_32(res);
27226
27227      *r_dst = res;
27228      (mc68kcpu)->n_flag = NFLAG_32(res);
27229      (mc68kcpu)->not_z_flag = res;
27230      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27231      return;
27232   }
27233
27234   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27235   (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
27236   (mc68kcpu)->not_z_flag = *r_dst;
27237   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27238}
27239
27240
27241void m68000_base_device_ops::m68k_op_roxr_16_ai(m68000_base_device* mc68kcpu)
27242{
27243   UINT32 ea = EA_AY_AI_16(mc68kcpu);
27244   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27245   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27246
27247   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27248   res = MASK_OUT_ABOVE_16(res);
27249
27250   m68ki_write_16((mc68kcpu), ea, res);
27251
27252   (mc68kcpu)->n_flag = NFLAG_16(res);
27253   (mc68kcpu)->not_z_flag = res;
27254   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27255}
27256
27257
27258void m68000_base_device_ops::m68k_op_roxr_16_pi(m68000_base_device* mc68kcpu)
27259{
27260   UINT32 ea = EA_AY_PI_16(mc68kcpu);
27261   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27262   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27263
27264   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27265   res = MASK_OUT_ABOVE_16(res);
27266
27267   m68ki_write_16((mc68kcpu), ea, res);
27268
27269   (mc68kcpu)->n_flag = NFLAG_16(res);
27270   (mc68kcpu)->not_z_flag = res;
27271   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27272}
27273
27274
27275void m68000_base_device_ops::m68k_op_roxr_16_pd(m68000_base_device* mc68kcpu)
27276{
27277   UINT32 ea = EA_AY_PD_16(mc68kcpu);
27278   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27279   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27280
27281   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27282   res = MASK_OUT_ABOVE_16(res);
27283
27284   m68ki_write_16((mc68kcpu), ea, res);
27285
27286   (mc68kcpu)->n_flag = NFLAG_16(res);
27287   (mc68kcpu)->not_z_flag = res;
27288   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27289}
27290
27291
27292void m68000_base_device_ops::m68k_op_roxr_16_di(m68000_base_device* mc68kcpu)
27293{
27294   UINT32 ea = EA_AY_DI_16(mc68kcpu);
27295   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27296   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27297
27298   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27299   res = MASK_OUT_ABOVE_16(res);
27300
27301   m68ki_write_16((mc68kcpu), ea, res);
27302
27303   (mc68kcpu)->n_flag = NFLAG_16(res);
27304   (mc68kcpu)->not_z_flag = res;
27305   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27306}
27307
27308
27309void m68000_base_device_ops::m68k_op_roxr_16_ix(m68000_base_device* mc68kcpu)
27310{
27311   UINT32 ea = EA_AY_IX_16(mc68kcpu);
27312   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27313   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27314
27315   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27316   res = MASK_OUT_ABOVE_16(res);
27317
27318   m68ki_write_16((mc68kcpu), ea, res);
27319
27320   (mc68kcpu)->n_flag = NFLAG_16(res);
27321   (mc68kcpu)->not_z_flag = res;
27322   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27323}
27324
27325
27326void m68000_base_device_ops::m68k_op_roxr_16_aw(m68000_base_device* mc68kcpu)
27327{
27328   UINT32 ea = EA_AW_16(mc68kcpu);
27329   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27330   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27331
27332   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27333   res = MASK_OUT_ABOVE_16(res);
27334
27335   m68ki_write_16((mc68kcpu), ea, res);
27336
27337   (mc68kcpu)->n_flag = NFLAG_16(res);
27338   (mc68kcpu)->not_z_flag = res;
27339   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27340}
27341
27342
27343void m68000_base_device_ops::m68k_op_roxr_16_al(m68000_base_device* mc68kcpu)
27344{
27345   UINT32 ea = EA_AL_16(mc68kcpu);
27346   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27347   UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27348
27349   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27350   res = MASK_OUT_ABOVE_16(res);
27351
27352   m68ki_write_16((mc68kcpu), ea, res);
27353
27354   (mc68kcpu)->n_flag = NFLAG_16(res);
27355   (mc68kcpu)->not_z_flag = res;
27356   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27357}
27358
27359
27360void m68000_base_device_ops::m68k_op_roxl_8_s(m68000_base_device* mc68kcpu)
27361{
27362   UINT32* r_dst = &DY(mc68kcpu);
27363   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27364   UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
27365   UINT32 res = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
27366
27367   if(shift != 0)
27368      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27369
27370   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
27371   res = MASK_OUT_ABOVE_8(res);
27372
27373   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
27374
27375   (mc68kcpu)->n_flag = NFLAG_8(res);
27376   (mc68kcpu)->not_z_flag = res;
27377   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27378}
27379
27380
27381void m68000_base_device_ops::m68k_op_roxl_16_s(m68000_base_device* mc68kcpu)
27382{
27383   UINT32* r_dst = &DY(mc68kcpu);
27384   UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27385   UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
27386   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
27387
27388   if(shift != 0)
27389      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27390
27391   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27392   res = MASK_OUT_ABOVE_16(res);
27393
27394   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
27395
27396   (mc68kcpu)->n_flag = NFLAG_16(res);
27397   (mc68kcpu)->not_z_flag = res;
27398   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27399}
27400
27401
27402void m68000_base_device_ops::m68k_op_roxl_32_s(m68000_base_device* mc68kcpu)
27403{
27404   UINT32*  r_dst = &DY(mc68kcpu);
27405   UINT32   shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
27406   UINT64 src   = *r_dst;
27407   UINT64 res   = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
27408
27409   if(shift != 0)
27410      (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
27411
27412   res = ROL_33_64(res, shift);
27413
27414   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
27415   res = MASK_OUT_ABOVE_32(res);
27416
27417   *r_dst = res;
27418
27419   (mc68kcpu)->n_flag = NFLAG_32(res);
27420   (mc68kcpu)->not_z_flag = res;
27421   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27422}
27423
27424
27425void m68000_base_device_ops::m68k_op_roxl_8_r(m68000_base_device* mc68kcpu)
27426{
27427   UINT32* r_dst = &DY(mc68kcpu);
27428   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
27429
27430
27431   if(orig_shift != 0)
27432   {
27433      UINT32 shift = orig_shift % 9;
27434      UINT32 src   = MASK_OUT_ABOVE_8(*r_dst);
27435      UINT32 res   = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
27436
27437      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27438
27439      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
27440      res = MASK_OUT_ABOVE_8(res);
27441
27442      *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
27443      (mc68kcpu)->n_flag = NFLAG_8(res);
27444      (mc68kcpu)->not_z_flag = res;
27445      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27446      return;
27447   }
27448
27449   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27450   (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
27451   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
27452   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27453}
27454
27455
27456void m68000_base_device_ops::m68k_op_roxl_16_r(m68000_base_device* mc68kcpu)
27457{
27458   UINT32* r_dst = &DY(mc68kcpu);
27459   UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
27460
27461   if(orig_shift != 0)
27462   {
27463      UINT32 shift = orig_shift % 17;
27464      UINT32 src   = MASK_OUT_ABOVE_16(*r_dst);
27465      UINT32 res   = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
27466
27467      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27468
27469      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27470      res = MASK_OUT_ABOVE_16(res);
27471
27472      *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
27473      (mc68kcpu)->n_flag = NFLAG_16(res);
27474      (mc68kcpu)->not_z_flag = res;
27475      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27476      return;
27477   }
27478
27479   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27480   (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
27481   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
27482   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27483}
27484
27485
27486void m68000_base_device_ops::m68k_op_roxl_32_r(m68000_base_device* mc68kcpu)
27487{
27488   UINT32*  r_dst = &DY(mc68kcpu);
27489   UINT32   orig_shift = DX(mc68kcpu) & 0x3f;
27490
27491   if(orig_shift != 0)
27492   {
27493      UINT32   shift = orig_shift % 33;
27494      UINT64 src   = *r_dst;
27495      UINT64 res   = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
27496
27497      res = ROL_33_64(res, shift);
27498
27499      (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
27500
27501      (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
27502      res = MASK_OUT_ABOVE_32(res);
27503
27504      *r_dst = res;
27505      (mc68kcpu)->n_flag = NFLAG_32(res);
27506      (mc68kcpu)->not_z_flag = res;
27507      (mc68kcpu)->v_flag = VFLAG_CLEAR;
27508      return;
27509   }
27510
27511   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
27512   (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
27513   (mc68kcpu)->not_z_flag = *r_dst;
27514   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27515}
27516
27517
27518void m68000_base_device_ops::m68k_op_roxl_16_ai(m68000_base_device* mc68kcpu)
27519{
27520   UINT32 ea = EA_AY_AI_16(mc68kcpu);
27521   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27522   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27523
27524   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27525   res = MASK_OUT_ABOVE_16(res);
27526
27527   m68ki_write_16((mc68kcpu), ea, res);
27528
27529   (mc68kcpu)->n_flag = NFLAG_16(res);
27530   (mc68kcpu)->not_z_flag = res;
27531   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27532}
27533
27534
27535void m68000_base_device_ops::m68k_op_roxl_16_pi(m68000_base_device* mc68kcpu)
27536{
27537   UINT32 ea = EA_AY_PI_16(mc68kcpu);
27538   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27539   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27540
27541   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27542   res = MASK_OUT_ABOVE_16(res);
27543
27544   m68ki_write_16((mc68kcpu), ea, res);
27545
27546   (mc68kcpu)->n_flag = NFLAG_16(res);
27547   (mc68kcpu)->not_z_flag = res;
27548   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27549}
27550
27551
27552void m68000_base_device_ops::m68k_op_roxl_16_pd(m68000_base_device* mc68kcpu)
27553{
27554   UINT32 ea = EA_AY_PD_16(mc68kcpu);
27555   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27556   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27557
27558   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27559   res = MASK_OUT_ABOVE_16(res);
27560
27561   m68ki_write_16((mc68kcpu), ea, res);
27562
27563   (mc68kcpu)->n_flag = NFLAG_16(res);
27564   (mc68kcpu)->not_z_flag = res;
27565   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27566}
27567
27568
27569void m68000_base_device_ops::m68k_op_roxl_16_di(m68000_base_device* mc68kcpu)
27570{
27571   UINT32 ea = EA_AY_DI_16(mc68kcpu);
27572   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27573   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27574
27575   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27576   res = MASK_OUT_ABOVE_16(res);
27577
27578   m68ki_write_16((mc68kcpu), ea, res);
27579
27580   (mc68kcpu)->n_flag = NFLAG_16(res);
27581   (mc68kcpu)->not_z_flag = res;
27582   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27583}
27584
27585
27586void m68000_base_device_ops::m68k_op_roxl_16_ix(m68000_base_device* mc68kcpu)
27587{
27588   UINT32 ea = EA_AY_IX_16(mc68kcpu);
27589   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27590   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27591
27592   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27593   res = MASK_OUT_ABOVE_16(res);
27594
27595   m68ki_write_16((mc68kcpu), ea, res);
27596
27597   (mc68kcpu)->n_flag = NFLAG_16(res);
27598   (mc68kcpu)->not_z_flag = res;
27599   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27600}
27601
27602
27603void m68000_base_device_ops::m68k_op_roxl_16_aw(m68000_base_device* mc68kcpu)
27604{
27605   UINT32 ea = EA_AW_16(mc68kcpu);
27606   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27607   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27608
27609   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27610   res = MASK_OUT_ABOVE_16(res);
27611
27612   m68ki_write_16((mc68kcpu), ea, res);
27613
27614   (mc68kcpu)->n_flag = NFLAG_16(res);
27615   (mc68kcpu)->not_z_flag = res;
27616   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27617}
27618
27619
27620void m68000_base_device_ops::m68k_op_roxl_16_al(m68000_base_device* mc68kcpu)
27621{
27622   UINT32 ea = EA_AL_16(mc68kcpu);
27623   UINT32 src = m68ki_read_16((mc68kcpu), ea);
27624   UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
27625
27626   (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
27627   res = MASK_OUT_ABOVE_16(res);
27628
27629   m68ki_write_16((mc68kcpu), ea, res);
27630
27631   (mc68kcpu)->n_flag = NFLAG_16(res);
27632   (mc68kcpu)->not_z_flag = res;
27633   (mc68kcpu)->v_flag = VFLAG_CLEAR;
27634}
27635
27636
27637void m68000_base_device_ops::m68k_op_rtd_32(m68000_base_device* mc68kcpu)
27638{
27639   if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
27640   {
27641      UINT32 new_pc = m68ki_pull_32(mc68kcpu);
27642
27643      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
27644      REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
27645      m68ki_jump((mc68kcpu), new_pc);
27646      return;
27647   }
27648   m68ki_exception_illegal(mc68kcpu);
27649}
27650
27651
27652void m68000_base_device_ops::m68k_op_rte_32(m68000_base_device* mc68kcpu)
27653{
27654   if((mc68kcpu)->s_flag)
27655   {
27656      UINT32 new_sr;
27657      UINT32 new_pc;
27658      UINT32 format_word;
27659
27660      if (!(mc68kcpu)->rte_instr_callback.isnull())
27661         ((mc68kcpu)->rte_instr_callback)(1);
27662      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
27663
27664      if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
27665      {
27666         new_sr = m68ki_pull_16(mc68kcpu);
27667         new_pc = m68ki_pull_32(mc68kcpu);
27668         m68ki_jump((mc68kcpu), new_pc);
27669         m68ki_set_sr((mc68kcpu), new_sr);
27670
27671         (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27672         (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27673
27674         return;
27675      }
27676
27677      if(CPU_TYPE_IS_010((mc68kcpu)->cpu_type))
27678      {
27679         format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[7]+6) >> 12;
27680         if(format_word == 0)
27681         {
27682            new_sr = m68ki_pull_16(mc68kcpu);
27683            new_pc = m68ki_pull_32(mc68kcpu);
27684            m68ki_fake_pull_16(mc68kcpu);   /* format word */
27685            m68ki_jump((mc68kcpu), new_pc);
27686            m68ki_set_sr((mc68kcpu), new_sr);
27687            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27688            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27689            return;
27690         }
27691         (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27692         (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27693         /* Not handling bus fault (9) */
27694         m68ki_exception_format_error(mc68kcpu);
27695         return;
27696      }
27697
27698      /* Otherwise it's 020 */
27699rte_loop:
27700      format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[7]+6) >> 12;
27701      switch(format_word)
27702      {
27703         case 0: /* Normal */
27704            new_sr = m68ki_pull_16(mc68kcpu);
27705            new_pc = m68ki_pull_32(mc68kcpu);
27706            m68ki_fake_pull_16(mc68kcpu);   /* format word */
27707            m68ki_jump((mc68kcpu), new_pc);
27708            m68ki_set_sr((mc68kcpu), new_sr);
27709            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27710            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27711            return;
27712         case 1: /* Throwaway */
27713            new_sr = m68ki_pull_16(mc68kcpu);
27714            m68ki_fake_pull_32(mc68kcpu);   /* program counter */
27715            m68ki_fake_pull_16(mc68kcpu);   /* format word */
27716            m68ki_set_sr_noint((mc68kcpu), new_sr);
27717            goto rte_loop;
27718         case 2: /* Trap */
27719            new_sr = m68ki_pull_16(mc68kcpu);
27720            new_pc = m68ki_pull_32(mc68kcpu);
27721            m68ki_fake_pull_16(mc68kcpu);   /* format word */
27722            m68ki_fake_pull_32(mc68kcpu);   /* address */
27723            m68ki_jump((mc68kcpu), new_pc);
27724            m68ki_set_sr((mc68kcpu), new_sr);
27725            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27726            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27727            return;
27728         case 7: /* 68040 access error */
27729            new_sr = m68ki_pull_16(mc68kcpu);
27730            new_pc = m68ki_pull_32(mc68kcpu);
27731            m68ki_fake_pull_16(mc68kcpu);   /* $06: format word */
27732            m68ki_fake_pull_32(mc68kcpu);   /* $08: effective address */
27733            m68ki_fake_pull_16(mc68kcpu);   /* $0c: special status word */
27734            m68ki_fake_pull_16(mc68kcpu);   /* $0e: wb3s */
27735            m68ki_fake_pull_16(mc68kcpu);   /* $10: wb2s */
27736            m68ki_fake_pull_16(mc68kcpu);   /* $12: wb1s */
27737            m68ki_fake_pull_32(mc68kcpu);   /* $14: data fault address */
27738            m68ki_fake_pull_32(mc68kcpu);   /* $18: wb3a */
27739            m68ki_fake_pull_32(mc68kcpu);   /* $1c: wb3d */
27740            m68ki_fake_pull_32(mc68kcpu);   /* $20: wb2a */
27741            m68ki_fake_pull_32(mc68kcpu);   /* $24: wb2d */
27742            m68ki_fake_pull_32(mc68kcpu);   /* $28: wb1a */
27743            m68ki_fake_pull_32(mc68kcpu);   /* $2c: wb1d/pd0 */
27744            m68ki_fake_pull_32(mc68kcpu);   /* $30: pd1 */
27745            m68ki_fake_pull_32(mc68kcpu);   /* $34: pd2 */
27746            m68ki_fake_pull_32(mc68kcpu);   /* $38: pd3 */
27747            m68ki_jump((mc68kcpu), new_pc);
27748            m68ki_set_sr((mc68kcpu), new_sr);
27749            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27750            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27751            return;
27752
27753         case 0x0a: /* Bus Error at instruction boundary */
27754            new_sr = m68ki_pull_16(mc68kcpu);
27755            new_pc = m68ki_pull_32(mc68kcpu);
27756            m68ki_fake_pull_16(mc68kcpu);   /* $06: format word */
27757            m68ki_fake_pull_16(mc68kcpu);   /* $08: internal register */
27758            m68ki_fake_pull_16(mc68kcpu);   /* $0a: special status word */
27759            m68ki_fake_pull_16(mc68kcpu);   /* $0c: instruction pipe stage c */
27760            m68ki_fake_pull_16(mc68kcpu);   /* $0e: instruction pipe stage b */
27761            m68ki_fake_pull_32(mc68kcpu);   /* $10: data fault address */
27762            m68ki_fake_pull_32(mc68kcpu);   /* $14: internal registers */
27763            m68ki_fake_pull_32(mc68kcpu);   /* $18: data output buffer */
27764            m68ki_fake_pull_32(mc68kcpu);   /* $1c: internal registers */
27765
27766            m68ki_jump((mc68kcpu), new_pc);
27767            m68ki_set_sr((mc68kcpu), new_sr);
27768            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27769            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27770            return;
27771         case 0x0b: /* Bus Error - Instruction Execution in Progress */
27772            new_sr = m68ki_pull_16(mc68kcpu);
27773            new_pc = m68ki_pull_32(mc68kcpu);
27774            m68ki_fake_pull_16(mc68kcpu);   /* $06: format word */
27775            m68ki_fake_pull_16(mc68kcpu);   /* $08: internal register */
27776            m68ki_fake_pull_16(mc68kcpu);   /* $0a: special status word */
27777            m68ki_fake_pull_16(mc68kcpu);   /* $0c: instruction pipe stage c */
27778            m68ki_fake_pull_16(mc68kcpu);   /* $0e: instruction pipe stage b */
27779            m68ki_fake_pull_32(mc68kcpu);   /* $10: data fault address */
27780            m68ki_fake_pull_32(mc68kcpu);   /* $14: internal registers */
27781            m68ki_fake_pull_32(mc68kcpu);   /* $18: data output buffer */
27782            m68ki_fake_pull_32(mc68kcpu);   /* $1c: internal registers */
27783            m68ki_fake_pull_32(mc68kcpu);   /* $20:  */
27784            m68ki_fake_pull_32(mc68kcpu);   /* $24: stage B address */
27785            m68ki_fake_pull_32(mc68kcpu);   /* $28:  */
27786            m68ki_fake_pull_32(mc68kcpu);   /* $2c: data input buffer */
27787            m68ki_fake_pull_32(mc68kcpu);   /* $30:  */
27788            m68ki_fake_pull_16(mc68kcpu);   /* $34:  */
27789            m68ki_fake_pull_16(mc68kcpu);   /* $36: version #, internal information */
27790            m68ki_fake_pull_32(mc68kcpu);   /* $38:  */
27791            m68ki_fake_pull_32(mc68kcpu);   /* $3c:  */
27792            m68ki_fake_pull_32(mc68kcpu);   /* $40:  */
27793            m68ki_fake_pull_32(mc68kcpu);   /* $44:  */
27794            m68ki_fake_pull_32(mc68kcpu);   /* $48:  */
27795            m68ki_fake_pull_32(mc68kcpu);   /* $4c:  */
27796            m68ki_fake_pull_32(mc68kcpu);   /* $50:  */
27797            m68ki_fake_pull_32(mc68kcpu);   /* $54:  */
27798            m68ki_fake_pull_32(mc68kcpu);   /* $58:  */
27799
27800            m68ki_jump((mc68kcpu), new_pc);
27801            m68ki_set_sr((mc68kcpu), new_sr);
27802            (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27803            (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27804            return;
27805      }
27806      /* Not handling long or short bus fault */
27807      (mc68kcpu)->instr_mode = INSTRUCTION_YES;
27808      (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
27809      m68ki_exception_format_error(mc68kcpu);
27810      return;
27811   }
27812   m68ki_exception_privilege_violation(mc68kcpu);
27813}
27814
27815
27816void m68000_base_device_ops::m68k_op_rtm_32(m68000_base_device* mc68kcpu)
27817{
27818   if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
27819   {
27820      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
27821      logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
27822                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
27823      return;
27824   }
27825   m68ki_exception_illegal(mc68kcpu);
27826}
27827
27828
27829void m68000_base_device_ops::m68k_op_rtr_32(m68000_base_device* mc68kcpu)
27830{
27831   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
27832   m68ki_set_ccr((mc68kcpu), m68ki_pull_16(mc68kcpu));
27833   m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
27834}
27835
27836
27837void m68000_base_device_ops::m68k_op_rts_32(m68000_base_device* mc68kcpu)
27838{
27839   m68ki_trace_t0(mc68kcpu);                  /* auto-disable (see m68kcpu.h) */
27840   m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
27841}
27842
27843
27844void m68000_base_device_ops::m68k_op_sbcd_8_rr(m68000_base_device* mc68kcpu)
27845{
27846   UINT32* r_dst = &DX(mc68kcpu);
27847   UINT32 src = DY(mc68kcpu);
27848   UINT32 dst = *r_dst;
27849   UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
27850
27851//  (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
27852   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to assume cleared. */
27853
27854   if(res > 9)
27855      res -= 6;
27856   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
27857   if(res > 0x99)
27858   {
27859      res += 0xa0;
27860      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
27861      (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
27862   }
27863   else
27864      (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
27865
27866   res = MASK_OUT_ABOVE_8(res);
27867
27868//  (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
27869//  (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
27870   (mc68kcpu)->not_z_flag |= res;
27871
27872   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
27873}
27874
27875
27876void m68000_base_device_ops::m68k_op_sbcd_8_mm_ax7(m68000_base_device* mc68kcpu)
27877{
27878   UINT32 src = OPER_AY_PD_8(mc68kcpu);
27879   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
27880   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
27881   UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
27882
27883//  (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
27884   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
27885
27886   if(res > 9)
27887      res -= 6;
27888   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
27889   if(res > 0x99)
27890   {
27891      res += 0xa0;
27892      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
27893      (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
27894   }
27895   else
27896      (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
27897
27898   res = MASK_OUT_ABOVE_8(res);
27899
27900//  (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
27901//  (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
27902   (mc68kcpu)->not_z_flag |= res;
27903
27904   m68ki_write_8((mc68kcpu), ea, res);
27905}
27906
27907
27908void m68000_base_device_ops::m68k_op_sbcd_8_mm_ay7(m68000_base_device* mc68kcpu)
27909{
27910   UINT32 src = OPER_A7_PD_8(mc68kcpu);
27911   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
27912   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
27913   UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
27914
27915//  (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
27916   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
27917
27918   if(res > 9)
27919      res -= 6;
27920   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
27921   if(res > 0x99)
27922   {
27923      res += 0xa0;
27924      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
27925      (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
27926   }
27927   else
27928      (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
27929
27930   res = MASK_OUT_ABOVE_8(res);
27931
27932//  (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
27933//  (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
27934   (mc68kcpu)->not_z_flag |= res;
27935
27936   m68ki_write_8((mc68kcpu), ea, res);
27937}
27938
27939
27940void m68000_base_device_ops::m68k_op_sbcd_8_mm_axy7(m68000_base_device* mc68kcpu)
27941{
27942   UINT32 src = OPER_A7_PD_8(mc68kcpu);
27943   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
27944   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
27945   UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
27946
27947//  (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
27948   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
27949
27950   if(res > 9)
27951      res -= 6;
27952   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
27953   if(res > 0x99)
27954   {
27955      res += 0xa0;
27956      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
27957      (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
27958   }
27959   else
27960      (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
27961
27962   res = MASK_OUT_ABOVE_8(res);
27963
27964//  (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
27965//  (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
27966   (mc68kcpu)->not_z_flag |= res;
27967
27968   m68ki_write_8((mc68kcpu), ea, res);
27969}
27970
27971
27972void m68000_base_device_ops::m68k_op_sbcd_8_mm(m68000_base_device* mc68kcpu)
27973{
27974   UINT32 src = OPER_AY_PD_8(mc68kcpu);
27975   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
27976   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
27977   UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
27978
27979//  (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
27980   (mc68kcpu)->v_flag = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
27981
27982   if(res > 9)
27983      res -= 6;
27984   res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
27985   if(res > 0x99)
27986   {
27987      res += 0xa0;
27988      (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
27989      (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
27990   }
27991   else
27992      (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
27993
27994   res = MASK_OUT_ABOVE_8(res);
27995
27996//  (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
27997//  (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
27998   (mc68kcpu)->not_z_flag |= res;
27999
28000   m68ki_write_8((mc68kcpu), ea, res);
28001}
28002
28003
28004void m68000_base_device_ops::m68k_op_st_8_d(m68000_base_device* mc68kcpu)
28005{
28006   DY(mc68kcpu) |= 0xff;
28007}
28008
28009
28010void m68000_base_device_ops::m68k_op_st_8_ai(m68000_base_device* mc68kcpu)
28011{
28012   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), 0xff);
28013}
28014
28015
28016void m68000_base_device_ops::m68k_op_st_8_pi(m68000_base_device* mc68kcpu)
28017{
28018   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), 0xff);
28019}
28020
28021
28022void m68000_base_device_ops::m68k_op_st_8_pi7(m68000_base_device* mc68kcpu)
28023{
28024   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), 0xff);
28025}
28026
28027
28028void m68000_base_device_ops::m68k_op_st_8_pd(m68000_base_device* mc68kcpu)
28029{
28030   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), 0xff);
28031}
28032
28033
28034void m68000_base_device_ops::m68k_op_st_8_pd7(m68000_base_device* mc68kcpu)
28035{
28036   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), 0xff);
28037}
28038
28039
28040void m68000_base_device_ops::m68k_op_st_8_di(m68000_base_device* mc68kcpu)
28041{
28042   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), 0xff);
28043}
28044
28045
28046void m68000_base_device_ops::m68k_op_st_8_ix(m68000_base_device* mc68kcpu)
28047{
28048   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), 0xff);
28049}
28050
28051
28052void m68000_base_device_ops::m68k_op_st_8_aw(m68000_base_device* mc68kcpu)
28053{
28054   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), 0xff);
28055}
28056
28057
28058void m68000_base_device_ops::m68k_op_st_8_al(m68000_base_device* mc68kcpu)
28059{
28060   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), 0xff);
28061}
28062
28063
28064void m68000_base_device_ops::m68k_op_sf_8_d(m68000_base_device* mc68kcpu)
28065{
28066   DY(mc68kcpu) &= 0xffffff00;
28067}
28068
28069
28070void m68000_base_device_ops::m68k_op_sf_8_ai(m68000_base_device* mc68kcpu)
28071{
28072   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), 0);
28073}
28074
28075
28076void m68000_base_device_ops::m68k_op_sf_8_pi(m68000_base_device* mc68kcpu)
28077{
28078   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), 0);
28079}
28080
28081
28082void m68000_base_device_ops::m68k_op_sf_8_pi7(m68000_base_device* mc68kcpu)
28083{
28084   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), 0);
28085}
28086
28087
28088void m68000_base_device_ops::m68k_op_sf_8_pd(m68000_base_device* mc68kcpu)
28089{
28090   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), 0);
28091}
28092
28093
28094void m68000_base_device_ops::m68k_op_sf_8_pd7(m68000_base_device* mc68kcpu)
28095{
28096   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), 0);
28097}
28098
28099
28100void m68000_base_device_ops::m68k_op_sf_8_di(m68000_base_device* mc68kcpu)
28101{
28102   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), 0);
28103}
28104
28105
28106void m68000_base_device_ops::m68k_op_sf_8_ix(m68000_base_device* mc68kcpu)
28107{
28108   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), 0);
28109}
28110
28111
28112void m68000_base_device_ops::m68k_op_sf_8_aw(m68000_base_device* mc68kcpu)
28113{
28114   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), 0);
28115}
28116
28117
28118void m68000_base_device_ops::m68k_op_sf_8_al(m68000_base_device* mc68kcpu)
28119{
28120   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), 0);
28121}
28122
28123
28124void m68000_base_device_ops::m68k_op_shi_8_d(m68000_base_device* mc68kcpu)
28125{
28126   if(COND_HI(mc68kcpu))
28127   {
28128      DY(mc68kcpu) |= 0xff;
28129      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28130      return;
28131   }
28132   DY(mc68kcpu) &= 0xffffff00;
28133}
28134
28135
28136void m68000_base_device_ops::m68k_op_sls_8_d(m68000_base_device* mc68kcpu)
28137{
28138   if(COND_LS(mc68kcpu))
28139   {
28140      DY(mc68kcpu) |= 0xff;
28141      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28142      return;
28143   }
28144   DY(mc68kcpu) &= 0xffffff00;
28145}
28146
28147
28148void m68000_base_device_ops::m68k_op_scc_8_d(m68000_base_device* mc68kcpu)
28149{
28150   if(COND_CC(mc68kcpu))
28151   {
28152      DY(mc68kcpu) |= 0xff;
28153      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28154      return;
28155   }
28156   DY(mc68kcpu) &= 0xffffff00;
28157}
28158
28159
28160void m68000_base_device_ops::m68k_op_scs_8_d(m68000_base_device* mc68kcpu)
28161{
28162   if(COND_CS(mc68kcpu))
28163   {
28164      DY(mc68kcpu) |= 0xff;
28165      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28166      return;
28167   }
28168   DY(mc68kcpu) &= 0xffffff00;
28169}
28170
28171
28172void m68000_base_device_ops::m68k_op_sne_8_d(m68000_base_device* mc68kcpu)
28173{
28174   if(COND_NE(mc68kcpu))
28175   {
28176      DY(mc68kcpu) |= 0xff;
28177      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28178      return;
28179   }
28180   DY(mc68kcpu) &= 0xffffff00;
28181}
28182
28183
28184void m68000_base_device_ops::m68k_op_seq_8_d(m68000_base_device* mc68kcpu)
28185{
28186   if(COND_EQ(mc68kcpu))
28187   {
28188      DY(mc68kcpu) |= 0xff;
28189      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28190      return;
28191   }
28192   DY(mc68kcpu) &= 0xffffff00;
28193}
28194
28195
28196void m68000_base_device_ops::m68k_op_svc_8_d(m68000_base_device* mc68kcpu)
28197{
28198   if(COND_VC(mc68kcpu))
28199   {
28200      DY(mc68kcpu) |= 0xff;
28201      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28202      return;
28203   }
28204   DY(mc68kcpu) &= 0xffffff00;
28205}
28206
28207
28208void m68000_base_device_ops::m68k_op_svs_8_d(m68000_base_device* mc68kcpu)
28209{
28210   if(COND_VS(mc68kcpu))
28211   {
28212      DY(mc68kcpu) |= 0xff;
28213      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28214      return;
28215   }
28216   DY(mc68kcpu) &= 0xffffff00;
28217}
28218
28219
28220void m68000_base_device_ops::m68k_op_spl_8_d(m68000_base_device* mc68kcpu)
28221{
28222   if(COND_PL(mc68kcpu))
28223   {
28224      DY(mc68kcpu) |= 0xff;
28225      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28226      return;
28227   }
28228   DY(mc68kcpu) &= 0xffffff00;
28229}
28230
28231
28232void m68000_base_device_ops::m68k_op_smi_8_d(m68000_base_device* mc68kcpu)
28233{
28234   if(COND_MI(mc68kcpu))
28235   {
28236      DY(mc68kcpu) |= 0xff;
28237      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28238      return;
28239   }
28240   DY(mc68kcpu) &= 0xffffff00;
28241}
28242
28243
28244void m68000_base_device_ops::m68k_op_sge_8_d(m68000_base_device* mc68kcpu)
28245{
28246   if(COND_GE(mc68kcpu))
28247   {
28248      DY(mc68kcpu) |= 0xff;
28249      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28250      return;
28251   }
28252   DY(mc68kcpu) &= 0xffffff00;
28253}
28254
28255
28256void m68000_base_device_ops::m68k_op_slt_8_d(m68000_base_device* mc68kcpu)
28257{
28258   if(COND_LT(mc68kcpu))
28259   {
28260      DY(mc68kcpu) |= 0xff;
28261      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28262      return;
28263   }
28264   DY(mc68kcpu) &= 0xffffff00;
28265}
28266
28267
28268void m68000_base_device_ops::m68k_op_sgt_8_d(m68000_base_device* mc68kcpu)
28269{
28270   if(COND_GT(mc68kcpu))
28271   {
28272      DY(mc68kcpu) |= 0xff;
28273      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28274      return;
28275   }
28276   DY(mc68kcpu) &= 0xffffff00;
28277}
28278
28279
28280void m68000_base_device_ops::m68k_op_sle_8_d(m68000_base_device* mc68kcpu)
28281{
28282   if(COND_LE(mc68kcpu))
28283   {
28284      DY(mc68kcpu) |= 0xff;
28285      (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
28286      return;
28287   }
28288   DY(mc68kcpu) &= 0xffffff00;
28289}
28290
28291
28292void m68000_base_device_ops::m68k_op_shi_8_ai(m68000_base_device* mc68kcpu)
28293{
28294   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28295}
28296
28297
28298void m68000_base_device_ops::m68k_op_shi_8_pi(m68000_base_device* mc68kcpu)
28299{
28300   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28301}
28302
28303
28304void m68000_base_device_ops::m68k_op_shi_8_pi7(m68000_base_device* mc68kcpu)
28305{
28306   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28307}
28308
28309
28310void m68000_base_device_ops::m68k_op_shi_8_pd(m68000_base_device* mc68kcpu)
28311{
28312   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28313}
28314
28315
28316void m68000_base_device_ops::m68k_op_shi_8_pd7(m68000_base_device* mc68kcpu)
28317{
28318   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28319}
28320
28321
28322void m68000_base_device_ops::m68k_op_shi_8_di(m68000_base_device* mc68kcpu)
28323{
28324   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28325}
28326
28327
28328void m68000_base_device_ops::m68k_op_shi_8_ix(m68000_base_device* mc68kcpu)
28329{
28330   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28331}
28332
28333
28334void m68000_base_device_ops::m68k_op_shi_8_aw(m68000_base_device* mc68kcpu)
28335{
28336   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28337}
28338
28339
28340void m68000_base_device_ops::m68k_op_shi_8_al(m68000_base_device* mc68kcpu)
28341{
28342   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
28343}
28344
28345
28346void m68000_base_device_ops::m68k_op_sls_8_ai(m68000_base_device* mc68kcpu)
28347{
28348   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28349}
28350
28351
28352void m68000_base_device_ops::m68k_op_sls_8_pi(m68000_base_device* mc68kcpu)
28353{
28354   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28355}
28356
28357
28358void m68000_base_device_ops::m68k_op_sls_8_pi7(m68000_base_device* mc68kcpu)
28359{
28360   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28361}
28362
28363
28364void m68000_base_device_ops::m68k_op_sls_8_pd(m68000_base_device* mc68kcpu)
28365{
28366   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28367}
28368
28369
28370void m68000_base_device_ops::m68k_op_sls_8_pd7(m68000_base_device* mc68kcpu)
28371{
28372   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28373}
28374
28375
28376void m68000_base_device_ops::m68k_op_sls_8_di(m68000_base_device* mc68kcpu)
28377{
28378   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28379}
28380
28381
28382void m68000_base_device_ops::m68k_op_sls_8_ix(m68000_base_device* mc68kcpu)
28383{
28384   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28385}
28386
28387
28388void m68000_base_device_ops::m68k_op_sls_8_aw(m68000_base_device* mc68kcpu)
28389{
28390   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28391}
28392
28393
28394void m68000_base_device_ops::m68k_op_sls_8_al(m68000_base_device* mc68kcpu)
28395{
28396   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
28397}
28398
28399
28400void m68000_base_device_ops::m68k_op_scc_8_ai(m68000_base_device* mc68kcpu)
28401{
28402   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28403}
28404
28405
28406void m68000_base_device_ops::m68k_op_scc_8_pi(m68000_base_device* mc68kcpu)
28407{
28408   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28409}
28410
28411
28412void m68000_base_device_ops::m68k_op_scc_8_pi7(m68000_base_device* mc68kcpu)
28413{
28414   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28415}
28416
28417
28418void m68000_base_device_ops::m68k_op_scc_8_pd(m68000_base_device* mc68kcpu)
28419{
28420   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28421}
28422
28423
28424void m68000_base_device_ops::m68k_op_scc_8_pd7(m68000_base_device* mc68kcpu)
28425{
28426   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28427}
28428
28429
28430void m68000_base_device_ops::m68k_op_scc_8_di(m68000_base_device* mc68kcpu)
28431{
28432   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28433}
28434
28435
28436void m68000_base_device_ops::m68k_op_scc_8_ix(m68000_base_device* mc68kcpu)
28437{
28438   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28439}
28440
28441
28442void m68000_base_device_ops::m68k_op_scc_8_aw(m68000_base_device* mc68kcpu)
28443{
28444   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28445}
28446
28447
28448void m68000_base_device_ops::m68k_op_scc_8_al(m68000_base_device* mc68kcpu)
28449{
28450   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
28451}
28452
28453
28454void m68000_base_device_ops::m68k_op_scs_8_ai(m68000_base_device* mc68kcpu)
28455{
28456   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28457}
28458
28459
28460void m68000_base_device_ops::m68k_op_scs_8_pi(m68000_base_device* mc68kcpu)
28461{
28462   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28463}
28464
28465
28466void m68000_base_device_ops::m68k_op_scs_8_pi7(m68000_base_device* mc68kcpu)
28467{
28468   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28469}
28470
28471
28472void m68000_base_device_ops::m68k_op_scs_8_pd(m68000_base_device* mc68kcpu)
28473{
28474   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28475}
28476
28477
28478void m68000_base_device_ops::m68k_op_scs_8_pd7(m68000_base_device* mc68kcpu)
28479{
28480   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28481}
28482
28483
28484void m68000_base_device_ops::m68k_op_scs_8_di(m68000_base_device* mc68kcpu)
28485{
28486   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28487}
28488
28489
28490void m68000_base_device_ops::m68k_op_scs_8_ix(m68000_base_device* mc68kcpu)
28491{
28492   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28493}
28494
28495
28496void m68000_base_device_ops::m68k_op_scs_8_aw(m68000_base_device* mc68kcpu)
28497{
28498   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28499}
28500
28501
28502void m68000_base_device_ops::m68k_op_scs_8_al(m68000_base_device* mc68kcpu)
28503{
28504   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
28505}
28506
28507
28508void m68000_base_device_ops::m68k_op_sne_8_ai(m68000_base_device* mc68kcpu)
28509{
28510   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28511}
28512
28513
28514void m68000_base_device_ops::m68k_op_sne_8_pi(m68000_base_device* mc68kcpu)
28515{
28516   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28517}
28518
28519
28520void m68000_base_device_ops::m68k_op_sne_8_pi7(m68000_base_device* mc68kcpu)
28521{
28522   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28523}
28524
28525
28526void m68000_base_device_ops::m68k_op_sne_8_pd(m68000_base_device* mc68kcpu)
28527{
28528   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28529}
28530
28531
28532void m68000_base_device_ops::m68k_op_sne_8_pd7(m68000_base_device* mc68kcpu)
28533{
28534   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28535}
28536
28537
28538void m68000_base_device_ops::m68k_op_sne_8_di(m68000_base_device* mc68kcpu)
28539{
28540   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28541}
28542
28543
28544void m68000_base_device_ops::m68k_op_sne_8_ix(m68000_base_device* mc68kcpu)
28545{
28546   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28547}
28548
28549
28550void m68000_base_device_ops::m68k_op_sne_8_aw(m68000_base_device* mc68kcpu)
28551{
28552   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28553}
28554
28555
28556void m68000_base_device_ops::m68k_op_sne_8_al(m68000_base_device* mc68kcpu)
28557{
28558   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
28559}
28560
28561
28562void m68000_base_device_ops::m68k_op_seq_8_ai(m68000_base_device* mc68kcpu)
28563{
28564   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28565}
28566
28567
28568void m68000_base_device_ops::m68k_op_seq_8_pi(m68000_base_device* mc68kcpu)
28569{
28570   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28571}
28572
28573
28574void m68000_base_device_ops::m68k_op_seq_8_pi7(m68000_base_device* mc68kcpu)
28575{
28576   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28577}
28578
28579
28580void m68000_base_device_ops::m68k_op_seq_8_pd(m68000_base_device* mc68kcpu)
28581{
28582   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28583}
28584
28585
28586void m68000_base_device_ops::m68k_op_seq_8_pd7(m68000_base_device* mc68kcpu)
28587{
28588   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28589}
28590
28591
28592void m68000_base_device_ops::m68k_op_seq_8_di(m68000_base_device* mc68kcpu)
28593{
28594   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28595}
28596
28597
28598void m68000_base_device_ops::m68k_op_seq_8_ix(m68000_base_device* mc68kcpu)
28599{
28600   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28601}
28602
28603
28604void m68000_base_device_ops::m68k_op_seq_8_aw(m68000_base_device* mc68kcpu)
28605{
28606   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28607}
28608
28609
28610void m68000_base_device_ops::m68k_op_seq_8_al(m68000_base_device* mc68kcpu)
28611{
28612   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
28613}
28614
28615
28616void m68000_base_device_ops::m68k_op_svc_8_ai(m68000_base_device* mc68kcpu)
28617{
28618   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28619}
28620
28621
28622void m68000_base_device_ops::m68k_op_svc_8_pi(m68000_base_device* mc68kcpu)
28623{
28624   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28625}
28626
28627
28628void m68000_base_device_ops::m68k_op_svc_8_pi7(m68000_base_device* mc68kcpu)
28629{
28630   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28631}
28632
28633
28634void m68000_base_device_ops::m68k_op_svc_8_pd(m68000_base_device* mc68kcpu)
28635{
28636   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28637}
28638
28639
28640void m68000_base_device_ops::m68k_op_svc_8_pd7(m68000_base_device* mc68kcpu)
28641{
28642   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28643}
28644
28645
28646void m68000_base_device_ops::m68k_op_svc_8_di(m68000_base_device* mc68kcpu)
28647{
28648   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28649}
28650
28651
28652void m68000_base_device_ops::m68k_op_svc_8_ix(m68000_base_device* mc68kcpu)
28653{
28654   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28655}
28656
28657
28658void m68000_base_device_ops::m68k_op_svc_8_aw(m68000_base_device* mc68kcpu)
28659{
28660   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28661}
28662
28663
28664void m68000_base_device_ops::m68k_op_svc_8_al(m68000_base_device* mc68kcpu)
28665{
28666   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
28667}
28668
28669
28670void m68000_base_device_ops::m68k_op_svs_8_ai(m68000_base_device* mc68kcpu)
28671{
28672   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28673}
28674
28675
28676void m68000_base_device_ops::m68k_op_svs_8_pi(m68000_base_device* mc68kcpu)
28677{
28678   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28679}
28680
28681
28682void m68000_base_device_ops::m68k_op_svs_8_pi7(m68000_base_device* mc68kcpu)
28683{
28684   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28685}
28686
28687
28688void m68000_base_device_ops::m68k_op_svs_8_pd(m68000_base_device* mc68kcpu)
28689{
28690   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28691}
28692
28693
28694void m68000_base_device_ops::m68k_op_svs_8_pd7(m68000_base_device* mc68kcpu)
28695{
28696   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28697}
28698
28699
28700void m68000_base_device_ops::m68k_op_svs_8_di(m68000_base_device* mc68kcpu)
28701{
28702   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28703}
28704
28705
28706void m68000_base_device_ops::m68k_op_svs_8_ix(m68000_base_device* mc68kcpu)
28707{
28708   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28709}
28710
28711
28712void m68000_base_device_ops::m68k_op_svs_8_aw(m68000_base_device* mc68kcpu)
28713{
28714   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28715}
28716
28717
28718void m68000_base_device_ops::m68k_op_svs_8_al(m68000_base_device* mc68kcpu)
28719{
28720   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
28721}
28722
28723
28724void m68000_base_device_ops::m68k_op_spl_8_ai(m68000_base_device* mc68kcpu)
28725{
28726   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28727}
28728
28729
28730void m68000_base_device_ops::m68k_op_spl_8_pi(m68000_base_device* mc68kcpu)
28731{
28732   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28733}
28734
28735
28736void m68000_base_device_ops::m68k_op_spl_8_pi7(m68000_base_device* mc68kcpu)
28737{
28738   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28739}
28740
28741
28742void m68000_base_device_ops::m68k_op_spl_8_pd(m68000_base_device* mc68kcpu)
28743{
28744   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28745}
28746
28747
28748void m68000_base_device_ops::m68k_op_spl_8_pd7(m68000_base_device* mc68kcpu)
28749{
28750   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28751}
28752
28753
28754void m68000_base_device_ops::m68k_op_spl_8_di(m68000_base_device* mc68kcpu)
28755{
28756   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28757}
28758
28759
28760void m68000_base_device_ops::m68k_op_spl_8_ix(m68000_base_device* mc68kcpu)
28761{
28762   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28763}
28764
28765
28766void m68000_base_device_ops::m68k_op_spl_8_aw(m68000_base_device* mc68kcpu)
28767{
28768   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28769}
28770
28771
28772void m68000_base_device_ops::m68k_op_spl_8_al(m68000_base_device* mc68kcpu)
28773{
28774   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
28775}
28776
28777
28778void m68000_base_device_ops::m68k_op_smi_8_ai(m68000_base_device* mc68kcpu)
28779{
28780   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28781}
28782
28783
28784void m68000_base_device_ops::m68k_op_smi_8_pi(m68000_base_device* mc68kcpu)
28785{
28786   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28787}
28788
28789
28790void m68000_base_device_ops::m68k_op_smi_8_pi7(m68000_base_device* mc68kcpu)
28791{
28792   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28793}
28794
28795
28796void m68000_base_device_ops::m68k_op_smi_8_pd(m68000_base_device* mc68kcpu)
28797{
28798   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28799}
28800
28801
28802void m68000_base_device_ops::m68k_op_smi_8_pd7(m68000_base_device* mc68kcpu)
28803{
28804   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28805}
28806
28807
28808void m68000_base_device_ops::m68k_op_smi_8_di(m68000_base_device* mc68kcpu)
28809{
28810   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28811}
28812
28813
28814void m68000_base_device_ops::m68k_op_smi_8_ix(m68000_base_device* mc68kcpu)
28815{
28816   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28817}
28818
28819
28820void m68000_base_device_ops::m68k_op_smi_8_aw(m68000_base_device* mc68kcpu)
28821{
28822   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28823}
28824
28825
28826void m68000_base_device_ops::m68k_op_smi_8_al(m68000_base_device* mc68kcpu)
28827{
28828   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
28829}
28830
28831
28832void m68000_base_device_ops::m68k_op_sge_8_ai(m68000_base_device* mc68kcpu)
28833{
28834   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28835}
28836
28837
28838void m68000_base_device_ops::m68k_op_sge_8_pi(m68000_base_device* mc68kcpu)
28839{
28840   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28841}
28842
28843
28844void m68000_base_device_ops::m68k_op_sge_8_pi7(m68000_base_device* mc68kcpu)
28845{
28846   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28847}
28848
28849
28850void m68000_base_device_ops::m68k_op_sge_8_pd(m68000_base_device* mc68kcpu)
28851{
28852   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28853}
28854
28855
28856void m68000_base_device_ops::m68k_op_sge_8_pd7(m68000_base_device* mc68kcpu)
28857{
28858   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28859}
28860
28861
28862void m68000_base_device_ops::m68k_op_sge_8_di(m68000_base_device* mc68kcpu)
28863{
28864   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28865}
28866
28867
28868void m68000_base_device_ops::m68k_op_sge_8_ix(m68000_base_device* mc68kcpu)
28869{
28870   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28871}
28872
28873
28874void m68000_base_device_ops::m68k_op_sge_8_aw(m68000_base_device* mc68kcpu)
28875{
28876   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28877}
28878
28879
28880void m68000_base_device_ops::m68k_op_sge_8_al(m68000_base_device* mc68kcpu)
28881{
28882   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
28883}
28884
28885
28886void m68000_base_device_ops::m68k_op_slt_8_ai(m68000_base_device* mc68kcpu)
28887{
28888   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28889}
28890
28891
28892void m68000_base_device_ops::m68k_op_slt_8_pi(m68000_base_device* mc68kcpu)
28893{
28894   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28895}
28896
28897
28898void m68000_base_device_ops::m68k_op_slt_8_pi7(m68000_base_device* mc68kcpu)
28899{
28900   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28901}
28902
28903
28904void m68000_base_device_ops::m68k_op_slt_8_pd(m68000_base_device* mc68kcpu)
28905{
28906   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28907}
28908
28909
28910void m68000_base_device_ops::m68k_op_slt_8_pd7(m68000_base_device* mc68kcpu)
28911{
28912   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28913}
28914
28915
28916void m68000_base_device_ops::m68k_op_slt_8_di(m68000_base_device* mc68kcpu)
28917{
28918   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28919}
28920
28921
28922void m68000_base_device_ops::m68k_op_slt_8_ix(m68000_base_device* mc68kcpu)
28923{
28924   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28925}
28926
28927
28928void m68000_base_device_ops::m68k_op_slt_8_aw(m68000_base_device* mc68kcpu)
28929{
28930   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28931}
28932
28933
28934void m68000_base_device_ops::m68k_op_slt_8_al(m68000_base_device* mc68kcpu)
28935{
28936   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
28937}
28938
28939
28940void m68000_base_device_ops::m68k_op_sgt_8_ai(m68000_base_device* mc68kcpu)
28941{
28942   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28943}
28944
28945
28946void m68000_base_device_ops::m68k_op_sgt_8_pi(m68000_base_device* mc68kcpu)
28947{
28948   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28949}
28950
28951
28952void m68000_base_device_ops::m68k_op_sgt_8_pi7(m68000_base_device* mc68kcpu)
28953{
28954   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28955}
28956
28957
28958void m68000_base_device_ops::m68k_op_sgt_8_pd(m68000_base_device* mc68kcpu)
28959{
28960   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28961}
28962
28963
28964void m68000_base_device_ops::m68k_op_sgt_8_pd7(m68000_base_device* mc68kcpu)
28965{
28966   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28967}
28968
28969
28970void m68000_base_device_ops::m68k_op_sgt_8_di(m68000_base_device* mc68kcpu)
28971{
28972   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28973}
28974
28975
28976void m68000_base_device_ops::m68k_op_sgt_8_ix(m68000_base_device* mc68kcpu)
28977{
28978   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28979}
28980
28981
28982void m68000_base_device_ops::m68k_op_sgt_8_aw(m68000_base_device* mc68kcpu)
28983{
28984   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28985}
28986
28987
28988void m68000_base_device_ops::m68k_op_sgt_8_al(m68000_base_device* mc68kcpu)
28989{
28990   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
28991}
28992
28993
28994void m68000_base_device_ops::m68k_op_sle_8_ai(m68000_base_device* mc68kcpu)
28995{
28996   m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
28997}
28998
28999
29000void m68000_base_device_ops::m68k_op_sle_8_pi(m68000_base_device* mc68kcpu)
29001{
29002   m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29003}
29004
29005
29006void m68000_base_device_ops::m68k_op_sle_8_pi7(m68000_base_device* mc68kcpu)
29007{
29008   m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29009}
29010
29011
29012void m68000_base_device_ops::m68k_op_sle_8_pd(m68000_base_device* mc68kcpu)
29013{
29014   m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29015}
29016
29017
29018void m68000_base_device_ops::m68k_op_sle_8_pd7(m68000_base_device* mc68kcpu)
29019{
29020   m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29021}
29022
29023
29024void m68000_base_device_ops::m68k_op_sle_8_di(m68000_base_device* mc68kcpu)
29025{
29026   m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29027}
29028
29029
29030void m68000_base_device_ops::m68k_op_sle_8_ix(m68000_base_device* mc68kcpu)
29031{
29032   m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29033}
29034
29035
29036void m68000_base_device_ops::m68k_op_sle_8_aw(m68000_base_device* mc68kcpu)
29037{
29038   m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29039}
29040
29041
29042void m68000_base_device_ops::m68k_op_sle_8_al(m68000_base_device* mc68kcpu)
29043{
29044   m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
29045}
29046
29047
29048void m68000_base_device_ops::m68k_op_stop(m68000_base_device* mc68kcpu)
29049{
29050   if((mc68kcpu)->s_flag)
29051   {
29052      UINT32 new_sr = OPER_I_16(mc68kcpu);
29053      m68ki_trace_t0(mc68kcpu);              /* auto-disable (see m68kcpu.h) */
29054      (mc68kcpu)->stopped |= STOP_LEVEL_STOP;
29055      m68ki_set_sr((mc68kcpu), new_sr);
29056      (mc68kcpu)->remaining_cycles = 0;
29057      return;
29058   }
29059   m68ki_exception_privilege_violation(mc68kcpu);
29060}
29061
29062
29063void m68000_base_device_ops::m68k_op_sub_8_er_d(m68000_base_device* mc68kcpu)
29064{
29065   UINT32* r_dst = &DX(mc68kcpu);
29066   UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
29067   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29068   UINT32 res = dst - src;
29069
29070   (mc68kcpu)->n_flag = NFLAG_8(res);
29071   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29072   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29073   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29074
29075   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29076}
29077
29078
29079void m68000_base_device_ops::m68k_op_sub_8_er_ai(m68000_base_device* mc68kcpu)
29080{
29081   UINT32* r_dst = &DX(mc68kcpu);
29082   UINT32 src = OPER_AY_AI_8(mc68kcpu);
29083   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29084   UINT32 res = dst - src;
29085
29086   (mc68kcpu)->n_flag = NFLAG_8(res);
29087   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29088   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29089   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29090
29091   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29092}
29093
29094
29095void m68000_base_device_ops::m68k_op_sub_8_er_pi(m68000_base_device* mc68kcpu)
29096{
29097   UINT32* r_dst = &DX(mc68kcpu);
29098   UINT32 src = OPER_AY_PI_8(mc68kcpu);
29099   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29100   UINT32 res = dst - src;
29101
29102   (mc68kcpu)->n_flag = NFLAG_8(res);
29103   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29104   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29105   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29106
29107   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29108}
29109
29110
29111void m68000_base_device_ops::m68k_op_sub_8_er_pi7(m68000_base_device* mc68kcpu)
29112{
29113   UINT32* r_dst = &DX(mc68kcpu);
29114   UINT32 src = OPER_A7_PI_8(mc68kcpu);
29115   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29116   UINT32 res = dst - src;
29117
29118   (mc68kcpu)->n_flag = NFLAG_8(res);
29119   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29120   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29121   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29122
29123   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29124}
29125
29126
29127void m68000_base_device_ops::m68k_op_sub_8_er_pd(m68000_base_device* mc68kcpu)
29128{
29129   UINT32* r_dst = &DX(mc68kcpu);
29130   UINT32 src = OPER_AY_PD_8(mc68kcpu);
29131   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29132   UINT32 res = dst - src;
29133
29134   (mc68kcpu)->n_flag = NFLAG_8(res);
29135   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29136   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29137   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29138
29139   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29140}
29141
29142
29143void m68000_base_device_ops::m68k_op_sub_8_er_pd7(m68000_base_device* mc68kcpu)
29144{
29145   UINT32* r_dst = &DX(mc68kcpu);
29146   UINT32 src = OPER_A7_PD_8(mc68kcpu);
29147   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29148   UINT32 res = dst - src;
29149
29150   (mc68kcpu)->n_flag = NFLAG_8(res);
29151   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29152   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29153   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29154
29155   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29156}
29157
29158
29159void m68000_base_device_ops::m68k_op_sub_8_er_di(m68000_base_device* mc68kcpu)
29160{
29161   UINT32* r_dst = &DX(mc68kcpu);
29162   UINT32 src = OPER_AY_DI_8(mc68kcpu);
29163   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29164   UINT32 res = dst - src;
29165
29166   (mc68kcpu)->n_flag = NFLAG_8(res);
29167   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29168   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29169   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29170
29171   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29172}
29173
29174
29175void m68000_base_device_ops::m68k_op_sub_8_er_ix(m68000_base_device* mc68kcpu)
29176{
29177   UINT32* r_dst = &DX(mc68kcpu);
29178   UINT32 src = OPER_AY_IX_8(mc68kcpu);
29179   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29180   UINT32 res = dst - src;
29181
29182   (mc68kcpu)->n_flag = NFLAG_8(res);
29183   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29184   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29185   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29186
29187   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29188}
29189
29190
29191void m68000_base_device_ops::m68k_op_sub_8_er_aw(m68000_base_device* mc68kcpu)
29192{
29193   UINT32* r_dst = &DX(mc68kcpu);
29194   UINT32 src = OPER_AW_8(mc68kcpu);
29195   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29196   UINT32 res = dst - src;
29197
29198   (mc68kcpu)->n_flag = NFLAG_8(res);
29199   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29200   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29201   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29202
29203   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29204}
29205
29206
29207void m68000_base_device_ops::m68k_op_sub_8_er_al(m68000_base_device* mc68kcpu)
29208{
29209   UINT32* r_dst = &DX(mc68kcpu);
29210   UINT32 src = OPER_AL_8(mc68kcpu);
29211   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29212   UINT32 res = dst - src;
29213
29214   (mc68kcpu)->n_flag = NFLAG_8(res);
29215   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29216   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29217   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29218
29219   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29220}
29221
29222
29223void m68000_base_device_ops::m68k_op_sub_8_er_pcdi(m68000_base_device* mc68kcpu)
29224{
29225   UINT32* r_dst = &DX(mc68kcpu);
29226   UINT32 src = OPER_PCDI_8(mc68kcpu);
29227   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29228   UINT32 res = dst - src;
29229
29230   (mc68kcpu)->n_flag = NFLAG_8(res);
29231   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29232   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29233   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29234
29235   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29236}
29237
29238
29239void m68000_base_device_ops::m68k_op_sub_8_er_pcix(m68000_base_device* mc68kcpu)
29240{
29241   UINT32* r_dst = &DX(mc68kcpu);
29242   UINT32 src = OPER_PCIX_8(mc68kcpu);
29243   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29244   UINT32 res = dst - src;
29245
29246   (mc68kcpu)->n_flag = NFLAG_8(res);
29247   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29248   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29249   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29250
29251   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29252}
29253
29254
29255void m68000_base_device_ops::m68k_op_sub_8_er_i(m68000_base_device* mc68kcpu)
29256{
29257   UINT32* r_dst = &DX(mc68kcpu);
29258   UINT32 src = OPER_I_8(mc68kcpu);
29259   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
29260   UINT32 res = dst - src;
29261
29262   (mc68kcpu)->n_flag = NFLAG_8(res);
29263   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29264   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29265   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29266
29267   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
29268}
29269
29270
29271void m68000_base_device_ops::m68k_op_sub_16_er_d(m68000_base_device* mc68kcpu)
29272{
29273   UINT32* r_dst = &DX(mc68kcpu);
29274   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
29275   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29276   UINT32 res = dst - src;
29277
29278   (mc68kcpu)->n_flag = NFLAG_16(res);
29279   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29280   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29281   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29282
29283   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29284}
29285
29286
29287void m68000_base_device_ops::m68k_op_sub_16_er_a(m68000_base_device* mc68kcpu)
29288{
29289   UINT32* r_dst = &DX(mc68kcpu);
29290   UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
29291   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29292   UINT32 res = dst - src;
29293
29294   (mc68kcpu)->n_flag = NFLAG_16(res);
29295   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29296   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29297   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29298
29299   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29300}
29301
29302
29303void m68000_base_device_ops::m68k_op_sub_16_er_ai(m68000_base_device* mc68kcpu)
29304{
29305   UINT32* r_dst = &DX(mc68kcpu);
29306   UINT32 src = OPER_AY_AI_16(mc68kcpu);
29307   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29308   UINT32 res = dst - src;
29309
29310   (mc68kcpu)->n_flag = NFLAG_16(res);
29311   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29312   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29313   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29314
29315   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29316}
29317
29318
29319void m68000_base_device_ops::m68k_op_sub_16_er_pi(m68000_base_device* mc68kcpu)
29320{
29321   UINT32* r_dst = &DX(mc68kcpu);
29322   UINT32 src = OPER_AY_PI_16(mc68kcpu);
29323   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29324   UINT32 res = dst - src;
29325
29326   (mc68kcpu)->n_flag = NFLAG_16(res);
29327   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29328   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29329   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29330
29331   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29332}
29333
29334
29335void m68000_base_device_ops::m68k_op_sub_16_er_pd(m68000_base_device* mc68kcpu)
29336{
29337   UINT32* r_dst = &DX(mc68kcpu);
29338   UINT32 src = OPER_AY_PD_16(mc68kcpu);
29339   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29340   UINT32 res = dst - src;
29341
29342   (mc68kcpu)->n_flag = NFLAG_16(res);
29343   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29344   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29345   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29346
29347   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29348}
29349
29350
29351void m68000_base_device_ops::m68k_op_sub_16_er_di(m68000_base_device* mc68kcpu)
29352{
29353   UINT32* r_dst = &DX(mc68kcpu);
29354   UINT32 src = OPER_AY_DI_16(mc68kcpu);
29355   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29356   UINT32 res = dst - src;
29357
29358   (mc68kcpu)->n_flag = NFLAG_16(res);
29359   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29360   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29361   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29362
29363   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29364}
29365
29366
29367void m68000_base_device_ops::m68k_op_sub_16_er_ix(m68000_base_device* mc68kcpu)
29368{
29369   UINT32* r_dst = &DX(mc68kcpu);
29370   UINT32 src = OPER_AY_IX_16(mc68kcpu);
29371   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29372   UINT32 res = dst - src;
29373
29374   (mc68kcpu)->n_flag = NFLAG_16(res);
29375   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29376   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29377   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29378
29379   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29380}
29381
29382
29383void m68000_base_device_ops::m68k_op_sub_16_er_aw(m68000_base_device* mc68kcpu)
29384{
29385   UINT32* r_dst = &DX(mc68kcpu);
29386   UINT32 src = OPER_AW_16(mc68kcpu);
29387   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29388   UINT32 res = dst - src;
29389
29390   (mc68kcpu)->n_flag = NFLAG_16(res);
29391   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29392   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29393   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29394
29395   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29396}
29397
29398
29399void m68000_base_device_ops::m68k_op_sub_16_er_al(m68000_base_device* mc68kcpu)
29400{
29401   UINT32* r_dst = &DX(mc68kcpu);
29402   UINT32 src = OPER_AL_16(mc68kcpu);
29403   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29404   UINT32 res = dst - src;
29405
29406   (mc68kcpu)->n_flag = NFLAG_16(res);
29407   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29408   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29409   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29410
29411   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29412}
29413
29414
29415void m68000_base_device_ops::m68k_op_sub_16_er_pcdi(m68000_base_device* mc68kcpu)
29416{
29417   UINT32* r_dst = &DX(mc68kcpu);
29418   UINT32 src = OPER_PCDI_16(mc68kcpu);
29419   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29420   UINT32 res = dst - src;
29421
29422   (mc68kcpu)->n_flag = NFLAG_16(res);
29423   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29424   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29425   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29426
29427   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29428}
29429
29430
29431void m68000_base_device_ops::m68k_op_sub_16_er_pcix(m68000_base_device* mc68kcpu)
29432{
29433   UINT32* r_dst = &DX(mc68kcpu);
29434   UINT32 src = OPER_PCIX_16(mc68kcpu);
29435   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29436   UINT32 res = dst - src;
29437
29438   (mc68kcpu)->n_flag = NFLAG_16(res);
29439   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29440   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29441   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29442
29443   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29444}
29445
29446
29447void m68000_base_device_ops::m68k_op_sub_16_er_i(m68000_base_device* mc68kcpu)
29448{
29449   UINT32* r_dst = &DX(mc68kcpu);
29450   UINT32 src = OPER_I_16(mc68kcpu);
29451   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
29452   UINT32 res = dst - src;
29453
29454   (mc68kcpu)->n_flag = NFLAG_16(res);
29455   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29456   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29457   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29458
29459   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
29460}
29461
29462
29463void m68000_base_device_ops::m68k_op_sub_32_er_d(m68000_base_device* mc68kcpu)
29464{
29465   UINT32* r_dst = &DX(mc68kcpu);
29466   UINT32 src = DY(mc68kcpu);
29467   UINT32 dst = *r_dst;
29468   UINT32 res = dst - src;
29469
29470   (mc68kcpu)->n_flag = NFLAG_32(res);
29471   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29472   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29473   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29474
29475   *r_dst = (mc68kcpu)->not_z_flag;
29476}
29477
29478
29479void m68000_base_device_ops::m68k_op_sub_32_er_a(m68000_base_device* mc68kcpu)
29480{
29481   UINT32* r_dst = &DX(mc68kcpu);
29482   UINT32 src = AY(mc68kcpu);
29483   UINT32 dst = *r_dst;
29484   UINT32 res = dst - src;
29485
29486   (mc68kcpu)->n_flag = NFLAG_32(res);
29487   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29488   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29489   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29490
29491   *r_dst = (mc68kcpu)->not_z_flag;
29492}
29493
29494
29495void m68000_base_device_ops::m68k_op_sub_32_er_ai(m68000_base_device* mc68kcpu)
29496{
29497   UINT32* r_dst = &DX(mc68kcpu);
29498   UINT32 src = OPER_AY_AI_32(mc68kcpu);
29499   UINT32 dst = *r_dst;
29500   UINT32 res = dst - src;
29501
29502   (mc68kcpu)->n_flag = NFLAG_32(res);
29503   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29504   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29505   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29506
29507   *r_dst = (mc68kcpu)->not_z_flag;
29508}
29509
29510
29511void m68000_base_device_ops::m68k_op_sub_32_er_pi(m68000_base_device* mc68kcpu)
29512{
29513   UINT32* r_dst = &DX(mc68kcpu);
29514   UINT32 src = OPER_AY_PI_32(mc68kcpu);
29515   UINT32 dst = *r_dst;
29516   UINT32 res = dst - src;
29517
29518   (mc68kcpu)->n_flag = NFLAG_32(res);
29519   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29520   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29521   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29522
29523   *r_dst = (mc68kcpu)->not_z_flag;
29524}
29525
29526
29527void m68000_base_device_ops::m68k_op_sub_32_er_pd(m68000_base_device* mc68kcpu)
29528{
29529   UINT32* r_dst = &DX(mc68kcpu);
29530   UINT32 src = OPER_AY_PD_32(mc68kcpu);
29531   UINT32 dst = *r_dst;
29532   UINT32 res = dst - src;
29533
29534   (mc68kcpu)->n_flag = NFLAG_32(res);
29535   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29536   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29537   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29538
29539   *r_dst = (mc68kcpu)->not_z_flag;
29540}
29541
29542
29543void m68000_base_device_ops::m68k_op_sub_32_er_di(m68000_base_device* mc68kcpu)
29544{
29545   UINT32* r_dst = &DX(mc68kcpu);
29546   UINT32 src = OPER_AY_DI_32(mc68kcpu);
29547   UINT32 dst = *r_dst;
29548   UINT32 res = dst - src;
29549
29550   (mc68kcpu)->n_flag = NFLAG_32(res);
29551   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29552   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29553   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29554
29555   *r_dst = (mc68kcpu)->not_z_flag;
29556}
29557
29558
29559void m68000_base_device_ops::m68k_op_sub_32_er_ix(m68000_base_device* mc68kcpu)
29560{
29561   UINT32* r_dst = &DX(mc68kcpu);
29562   UINT32 src = OPER_AY_IX_32(mc68kcpu);
29563   UINT32 dst = *r_dst;
29564   UINT32 res = dst - src;
29565
29566   (mc68kcpu)->n_flag = NFLAG_32(res);
29567   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29568   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29569   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29570
29571   *r_dst = (mc68kcpu)->not_z_flag;
29572}
29573
29574
29575void m68000_base_device_ops::m68k_op_sub_32_er_aw(m68000_base_device* mc68kcpu)
29576{
29577   UINT32* r_dst = &DX(mc68kcpu);
29578   UINT32 src = OPER_AW_32(mc68kcpu);
29579   UINT32 dst = *r_dst;
29580   UINT32 res = dst - src;
29581
29582   (mc68kcpu)->n_flag = NFLAG_32(res);
29583   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29584   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29585   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29586
29587   *r_dst = (mc68kcpu)->not_z_flag;
29588}
29589
29590
29591void m68000_base_device_ops::m68k_op_sub_32_er_al(m68000_base_device* mc68kcpu)
29592{
29593   UINT32* r_dst = &DX(mc68kcpu);
29594   UINT32 src = OPER_AL_32(mc68kcpu);
29595   UINT32 dst = *r_dst;
29596   UINT32 res = dst - src;
29597
29598   (mc68kcpu)->n_flag = NFLAG_32(res);
29599   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29600   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29601   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29602
29603   *r_dst = (mc68kcpu)->not_z_flag;
29604}
29605
29606
29607void m68000_base_device_ops::m68k_op_sub_32_er_pcdi(m68000_base_device* mc68kcpu)
29608{
29609   UINT32* r_dst = &DX(mc68kcpu);
29610   UINT32 src = OPER_PCDI_32(mc68kcpu);
29611   UINT32 dst = *r_dst;
29612   UINT32 res = dst - src;
29613
29614   (mc68kcpu)->n_flag = NFLAG_32(res);
29615   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29616   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29617   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29618
29619   *r_dst = (mc68kcpu)->not_z_flag;
29620}
29621
29622
29623void m68000_base_device_ops::m68k_op_sub_32_er_pcix(m68000_base_device* mc68kcpu)
29624{
29625   UINT32* r_dst = &DX(mc68kcpu);
29626   UINT32 src = OPER_PCIX_32(mc68kcpu);
29627   UINT32 dst = *r_dst;
29628   UINT32 res = dst - src;
29629
29630   (mc68kcpu)->n_flag = NFLAG_32(res);
29631   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29632   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29633   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29634
29635   *r_dst = (mc68kcpu)->not_z_flag;
29636}
29637
29638
29639void m68000_base_device_ops::m68k_op_sub_32_er_i(m68000_base_device* mc68kcpu)
29640{
29641   UINT32* r_dst = &DX(mc68kcpu);
29642   UINT32 src = OPER_I_32(mc68kcpu);
29643   UINT32 dst = *r_dst;
29644   UINT32 res = dst - src;
29645
29646   (mc68kcpu)->n_flag = NFLAG_32(res);
29647   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29648   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29649   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29650
29651   *r_dst = (mc68kcpu)->not_z_flag;
29652}
29653
29654
29655void m68000_base_device_ops::m68k_op_sub_8_re_ai(m68000_base_device* mc68kcpu)
29656{
29657   UINT32 ea = EA_AY_AI_8(mc68kcpu);
29658   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29659   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29660   UINT32 res = dst - src;
29661
29662   (mc68kcpu)->n_flag = NFLAG_8(res);
29663   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29664   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29665   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29666
29667   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29668}
29669
29670
29671void m68000_base_device_ops::m68k_op_sub_8_re_pi(m68000_base_device* mc68kcpu)
29672{
29673   UINT32 ea = EA_AY_PI_8(mc68kcpu);
29674   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29675   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29676   UINT32 res = dst - src;
29677
29678   (mc68kcpu)->n_flag = NFLAG_8(res);
29679   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29680   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29681   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29682
29683   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29684}
29685
29686
29687void m68000_base_device_ops::m68k_op_sub_8_re_pi7(m68000_base_device* mc68kcpu)
29688{
29689   UINT32 ea = EA_A7_PI_8(mc68kcpu);
29690   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29691   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29692   UINT32 res = dst - src;
29693
29694   (mc68kcpu)->n_flag = NFLAG_8(res);
29695   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29696   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29697   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29698
29699   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29700}
29701
29702
29703void m68000_base_device_ops::m68k_op_sub_8_re_pd(m68000_base_device* mc68kcpu)
29704{
29705   UINT32 ea = EA_AY_PD_8(mc68kcpu);
29706   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29707   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29708   UINT32 res = dst - src;
29709
29710   (mc68kcpu)->n_flag = NFLAG_8(res);
29711   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29712   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29713   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29714
29715   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29716}
29717
29718
29719void m68000_base_device_ops::m68k_op_sub_8_re_pd7(m68000_base_device* mc68kcpu)
29720{
29721   UINT32 ea = EA_A7_PD_8(mc68kcpu);
29722   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29723   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29724   UINT32 res = dst - src;
29725
29726   (mc68kcpu)->n_flag = NFLAG_8(res);
29727   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29728   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29729   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29730
29731   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29732}
29733
29734
29735void m68000_base_device_ops::m68k_op_sub_8_re_di(m68000_base_device* mc68kcpu)
29736{
29737   UINT32 ea = EA_AY_DI_8(mc68kcpu);
29738   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29739   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29740   UINT32 res = dst - src;
29741
29742   (mc68kcpu)->n_flag = NFLAG_8(res);
29743   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29744   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29745   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29746
29747   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29748}
29749
29750
29751void m68000_base_device_ops::m68k_op_sub_8_re_ix(m68000_base_device* mc68kcpu)
29752{
29753   UINT32 ea = EA_AY_IX_8(mc68kcpu);
29754   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29755   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29756   UINT32 res = dst - src;
29757
29758   (mc68kcpu)->n_flag = NFLAG_8(res);
29759   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29760   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29761   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29762
29763   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29764}
29765
29766
29767void m68000_base_device_ops::m68k_op_sub_8_re_aw(m68000_base_device* mc68kcpu)
29768{
29769   UINT32 ea = EA_AW_8(mc68kcpu);
29770   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29771   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29772   UINT32 res = dst - src;
29773
29774   (mc68kcpu)->n_flag = NFLAG_8(res);
29775   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29776   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29777   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29778
29779   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29780}
29781
29782
29783void m68000_base_device_ops::m68k_op_sub_8_re_al(m68000_base_device* mc68kcpu)
29784{
29785   UINT32 ea = EA_AL_8(mc68kcpu);
29786   UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
29787   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
29788   UINT32 res = dst - src;
29789
29790   (mc68kcpu)->n_flag = NFLAG_8(res);
29791   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
29792   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
29793   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
29794
29795   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29796}
29797
29798
29799void m68000_base_device_ops::m68k_op_sub_16_re_ai(m68000_base_device* mc68kcpu)
29800{
29801   UINT32 ea = EA_AY_AI_16(mc68kcpu);
29802   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29803   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29804   UINT32 res = dst - src;
29805
29806   (mc68kcpu)->n_flag = NFLAG_16(res);
29807   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29808   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29809   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29810
29811   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29812}
29813
29814
29815void m68000_base_device_ops::m68k_op_sub_16_re_pi(m68000_base_device* mc68kcpu)
29816{
29817   UINT32 ea = EA_AY_PI_16(mc68kcpu);
29818   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29819   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29820   UINT32 res = dst - src;
29821
29822   (mc68kcpu)->n_flag = NFLAG_16(res);
29823   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29824   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29825   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29826
29827   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29828}
29829
29830
29831void m68000_base_device_ops::m68k_op_sub_16_re_pd(m68000_base_device* mc68kcpu)
29832{
29833   UINT32 ea = EA_AY_PD_16(mc68kcpu);
29834   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29835   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29836   UINT32 res = dst - src;
29837
29838   (mc68kcpu)->n_flag = NFLAG_16(res);
29839   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29840   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29841   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29842
29843   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29844}
29845
29846
29847void m68000_base_device_ops::m68k_op_sub_16_re_di(m68000_base_device* mc68kcpu)
29848{
29849   UINT32 ea = EA_AY_DI_16(mc68kcpu);
29850   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29851   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29852   UINT32 res = dst - src;
29853
29854   (mc68kcpu)->n_flag = NFLAG_16(res);
29855   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29856   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29857   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29858
29859   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29860}
29861
29862
29863void m68000_base_device_ops::m68k_op_sub_16_re_ix(m68000_base_device* mc68kcpu)
29864{
29865   UINT32 ea = EA_AY_IX_16(mc68kcpu);
29866   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29867   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29868   UINT32 res = dst - src;
29869
29870   (mc68kcpu)->n_flag = NFLAG_16(res);
29871   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29872   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29873   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29874
29875   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29876}
29877
29878
29879void m68000_base_device_ops::m68k_op_sub_16_re_aw(m68000_base_device* mc68kcpu)
29880{
29881   UINT32 ea = EA_AW_16(mc68kcpu);
29882   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29883   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29884   UINT32 res = dst - src;
29885
29886   (mc68kcpu)->n_flag = NFLAG_16(res);
29887   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29888   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29889   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29890
29891   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29892}
29893
29894
29895void m68000_base_device_ops::m68k_op_sub_16_re_al(m68000_base_device* mc68kcpu)
29896{
29897   UINT32 ea = EA_AL_16(mc68kcpu);
29898   UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
29899   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
29900   UINT32 res = dst - src;
29901
29902   (mc68kcpu)->n_flag = NFLAG_16(res);
29903   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
29904   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
29905   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
29906
29907   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29908}
29909
29910
29911void m68000_base_device_ops::m68k_op_sub_32_re_ai(m68000_base_device* mc68kcpu)
29912{
29913   UINT32 ea = EA_AY_AI_32(mc68kcpu);
29914   UINT32 src = DX(mc68kcpu);
29915   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29916   UINT32 res = dst - src;
29917
29918   (mc68kcpu)->n_flag = NFLAG_32(res);
29919   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29920   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29921   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29922
29923   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29924}
29925
29926
29927void m68000_base_device_ops::m68k_op_sub_32_re_pi(m68000_base_device* mc68kcpu)
29928{
29929   UINT32 ea = EA_AY_PI_32(mc68kcpu);
29930   UINT32 src = DX(mc68kcpu);
29931   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29932   UINT32 res = dst - src;
29933
29934   (mc68kcpu)->n_flag = NFLAG_32(res);
29935   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29936   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29937   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29938
29939   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29940}
29941
29942
29943void m68000_base_device_ops::m68k_op_sub_32_re_pd(m68000_base_device* mc68kcpu)
29944{
29945   UINT32 ea = EA_AY_PD_32(mc68kcpu);
29946   UINT32 src = DX(mc68kcpu);
29947   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29948   UINT32 res = dst - src;
29949
29950   (mc68kcpu)->n_flag = NFLAG_32(res);
29951   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29952   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29953   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29954
29955   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29956}
29957
29958
29959void m68000_base_device_ops::m68k_op_sub_32_re_di(m68000_base_device* mc68kcpu)
29960{
29961   UINT32 ea = EA_AY_DI_32(mc68kcpu);
29962   UINT32 src = DX(mc68kcpu);
29963   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29964   UINT32 res = dst - src;
29965
29966   (mc68kcpu)->n_flag = NFLAG_32(res);
29967   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29968   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29969   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29970
29971   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29972}
29973
29974
29975void m68000_base_device_ops::m68k_op_sub_32_re_ix(m68000_base_device* mc68kcpu)
29976{
29977   UINT32 ea = EA_AY_IX_32(mc68kcpu);
29978   UINT32 src = DX(mc68kcpu);
29979   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29980   UINT32 res = dst - src;
29981
29982   (mc68kcpu)->n_flag = NFLAG_32(res);
29983   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
29984   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
29985   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
29986
29987   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
29988}
29989
29990
29991void m68000_base_device_ops::m68k_op_sub_32_re_aw(m68000_base_device* mc68kcpu)
29992{
29993   UINT32 ea = EA_AW_32(mc68kcpu);
29994   UINT32 src = DX(mc68kcpu);
29995   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
29996   UINT32 res = dst - src;
29997
29998   (mc68kcpu)->n_flag = NFLAG_32(res);
29999   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30000   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30001   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30002
30003   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30004}
30005
30006
30007void m68000_base_device_ops::m68k_op_sub_32_re_al(m68000_base_device* mc68kcpu)
30008{
30009   UINT32 ea = EA_AL_32(mc68kcpu);
30010   UINT32 src = DX(mc68kcpu);
30011   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30012   UINT32 res = dst - src;
30013
30014   (mc68kcpu)->n_flag = NFLAG_32(res);
30015   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30016   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30017   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30018
30019   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30020}
30021
30022
30023void m68000_base_device_ops::m68k_op_suba_16_d(m68000_base_device* mc68kcpu)
30024{
30025   UINT32* r_dst = &AX(mc68kcpu);
30026
30027   *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY(mc68kcpu)));
30028}
30029
30030
30031void m68000_base_device_ops::m68k_op_suba_16_a(m68000_base_device* mc68kcpu)
30032{
30033   UINT32* r_dst = &AX(mc68kcpu);
30034
30035   *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY(mc68kcpu)));
30036}
30037
30038
30039void m68000_base_device_ops::m68k_op_suba_16_ai(m68000_base_device* mc68kcpu)
30040{
30041   UINT32* r_dst = &AX(mc68kcpu);
30042   UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
30043
30044   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30045}
30046
30047
30048void m68000_base_device_ops::m68k_op_suba_16_pi(m68000_base_device* mc68kcpu)
30049{
30050   UINT32* r_dst = &AX(mc68kcpu);
30051   UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
30052
30053   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30054}
30055
30056
30057void m68000_base_device_ops::m68k_op_suba_16_pd(m68000_base_device* mc68kcpu)
30058{
30059   UINT32* r_dst = &AX(mc68kcpu);
30060   UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
30061
30062   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30063}
30064
30065
30066void m68000_base_device_ops::m68k_op_suba_16_di(m68000_base_device* mc68kcpu)
30067{
30068   UINT32* r_dst = &AX(mc68kcpu);
30069   UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
30070
30071   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30072}
30073
30074
30075void m68000_base_device_ops::m68k_op_suba_16_ix(m68000_base_device* mc68kcpu)
30076{
30077   UINT32* r_dst = &AX(mc68kcpu);
30078   UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
30079
30080   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30081}
30082
30083
30084void m68000_base_device_ops::m68k_op_suba_16_aw(m68000_base_device* mc68kcpu)
30085{
30086   UINT32* r_dst = &AX(mc68kcpu);
30087   UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
30088
30089   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30090}
30091
30092
30093void m68000_base_device_ops::m68k_op_suba_16_al(m68000_base_device* mc68kcpu)
30094{
30095   UINT32* r_dst = &AX(mc68kcpu);
30096   UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
30097
30098   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30099}
30100
30101
30102void m68000_base_device_ops::m68k_op_suba_16_pcdi(m68000_base_device* mc68kcpu)
30103{
30104   UINT32* r_dst = &AX(mc68kcpu);
30105   UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
30106
30107   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30108}
30109
30110
30111void m68000_base_device_ops::m68k_op_suba_16_pcix(m68000_base_device* mc68kcpu)
30112{
30113   UINT32* r_dst = &AX(mc68kcpu);
30114   UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
30115
30116   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30117}
30118
30119
30120void m68000_base_device_ops::m68k_op_suba_16_i(m68000_base_device* mc68kcpu)
30121{
30122   UINT32* r_dst = &AX(mc68kcpu);
30123   UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
30124
30125   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30126}
30127
30128
30129void m68000_base_device_ops::m68k_op_suba_32_d(m68000_base_device* mc68kcpu)
30130{
30131   UINT32* r_dst = &AX(mc68kcpu);
30132
30133   *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY(mc68kcpu));
30134}
30135
30136
30137void m68000_base_device_ops::m68k_op_suba_32_a(m68000_base_device* mc68kcpu)
30138{
30139   UINT32* r_dst = &AX(mc68kcpu);
30140
30141   *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY(mc68kcpu));
30142}
30143
30144
30145void m68000_base_device_ops::m68k_op_suba_32_ai(m68000_base_device* mc68kcpu)
30146{
30147   UINT32* r_dst = &AX(mc68kcpu);
30148   UINT32 src = OPER_AY_AI_32(mc68kcpu);
30149
30150   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30151}
30152
30153
30154void m68000_base_device_ops::m68k_op_suba_32_pi(m68000_base_device* mc68kcpu)
30155{
30156   UINT32* r_dst = &AX(mc68kcpu);
30157   UINT32 src = OPER_AY_PI_32(mc68kcpu);
30158
30159   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30160}
30161
30162
30163void m68000_base_device_ops::m68k_op_suba_32_pd(m68000_base_device* mc68kcpu)
30164{
30165   UINT32* r_dst = &AX(mc68kcpu);
30166   UINT32 src = OPER_AY_PD_32(mc68kcpu);
30167
30168   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30169}
30170
30171
30172void m68000_base_device_ops::m68k_op_suba_32_di(m68000_base_device* mc68kcpu)
30173{
30174   UINT32* r_dst = &AX(mc68kcpu);
30175   UINT32 src = OPER_AY_DI_32(mc68kcpu);
30176
30177   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30178}
30179
30180
30181void m68000_base_device_ops::m68k_op_suba_32_ix(m68000_base_device* mc68kcpu)
30182{
30183   UINT32* r_dst = &AX(mc68kcpu);
30184   UINT32 src = OPER_AY_IX_32(mc68kcpu);
30185
30186   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30187}
30188
30189
30190void m68000_base_device_ops::m68k_op_suba_32_aw(m68000_base_device* mc68kcpu)
30191{
30192   UINT32* r_dst = &AX(mc68kcpu);
30193   UINT32 src = OPER_AW_32(mc68kcpu);
30194
30195   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30196}
30197
30198
30199void m68000_base_device_ops::m68k_op_suba_32_al(m68000_base_device* mc68kcpu)
30200{
30201   UINT32* r_dst = &AX(mc68kcpu);
30202   UINT32 src = OPER_AL_32(mc68kcpu);
30203
30204   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30205}
30206
30207
30208void m68000_base_device_ops::m68k_op_suba_32_pcdi(m68000_base_device* mc68kcpu)
30209{
30210   UINT32* r_dst = &AX(mc68kcpu);
30211   UINT32 src = OPER_PCDI_32(mc68kcpu);
30212
30213   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30214}
30215
30216
30217void m68000_base_device_ops::m68k_op_suba_32_pcix(m68000_base_device* mc68kcpu)
30218{
30219   UINT32* r_dst = &AX(mc68kcpu);
30220   UINT32 src = OPER_PCIX_32(mc68kcpu);
30221
30222   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30223}
30224
30225
30226void m68000_base_device_ops::m68k_op_suba_32_i(m68000_base_device* mc68kcpu)
30227{
30228   UINT32* r_dst = &AX(mc68kcpu);
30229   UINT32 src = OPER_I_32(mc68kcpu);
30230
30231   *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
30232}
30233
30234
30235void m68000_base_device_ops::m68k_op_subi_8_d(m68000_base_device* mc68kcpu)
30236{
30237   UINT32* r_dst = &DY(mc68kcpu);
30238   UINT32 src = OPER_I_8(mc68kcpu);
30239   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
30240   UINT32 res = dst - src;
30241
30242   (mc68kcpu)->n_flag = NFLAG_8(res);
30243   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30244   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30245   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30246
30247   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
30248}
30249
30250
30251void m68000_base_device_ops::m68k_op_subi_8_ai(m68000_base_device* mc68kcpu)
30252{
30253   UINT32 src = OPER_I_8(mc68kcpu);
30254   UINT32 ea = EA_AY_AI_8(mc68kcpu);
30255   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30256   UINT32 res = dst - src;
30257
30258   (mc68kcpu)->n_flag = NFLAG_8(res);
30259   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30260   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30261   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30262
30263   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30264}
30265
30266
30267void m68000_base_device_ops::m68k_op_subi_8_pi(m68000_base_device* mc68kcpu)
30268{
30269   UINT32 src = OPER_I_8(mc68kcpu);
30270   UINT32 ea = EA_AY_PI_8(mc68kcpu);
30271   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30272   UINT32 res = dst - src;
30273
30274   (mc68kcpu)->n_flag = NFLAG_8(res);
30275   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30276   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30277   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30278
30279   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30280}
30281
30282
30283void m68000_base_device_ops::m68k_op_subi_8_pi7(m68000_base_device* mc68kcpu)
30284{
30285   UINT32 src = OPER_I_8(mc68kcpu);
30286   UINT32 ea = EA_A7_PI_8(mc68kcpu);
30287   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30288   UINT32 res = dst - src;
30289
30290   (mc68kcpu)->n_flag = NFLAG_8(res);
30291   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30292   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30293   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30294
30295   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30296}
30297
30298
30299void m68000_base_device_ops::m68k_op_subi_8_pd(m68000_base_device* mc68kcpu)
30300{
30301   UINT32 src = OPER_I_8(mc68kcpu);
30302   UINT32 ea = EA_AY_PD_8(mc68kcpu);
30303   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30304   UINT32 res = dst - src;
30305
30306   (mc68kcpu)->n_flag = NFLAG_8(res);
30307   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30308   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30309   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30310
30311   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30312}
30313
30314
30315void m68000_base_device_ops::m68k_op_subi_8_pd7(m68000_base_device* mc68kcpu)
30316{
30317   UINT32 src = OPER_I_8(mc68kcpu);
30318   UINT32 ea = EA_A7_PD_8(mc68kcpu);
30319   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30320   UINT32 res = dst - src;
30321
30322   (mc68kcpu)->n_flag = NFLAG_8(res);
30323   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30324   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30325   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30326
30327   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30328}
30329
30330
30331void m68000_base_device_ops::m68k_op_subi_8_di(m68000_base_device* mc68kcpu)
30332{
30333   UINT32 src = OPER_I_8(mc68kcpu);
30334   UINT32 ea = EA_AY_DI_8(mc68kcpu);
30335   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30336   UINT32 res = dst - src;
30337
30338   (mc68kcpu)->n_flag = NFLAG_8(res);
30339   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30340   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30341   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30342
30343   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30344}
30345
30346
30347void m68000_base_device_ops::m68k_op_subi_8_ix(m68000_base_device* mc68kcpu)
30348{
30349   UINT32 src = OPER_I_8(mc68kcpu);
30350   UINT32 ea = EA_AY_IX_8(mc68kcpu);
30351   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30352   UINT32 res = dst - src;
30353
30354   (mc68kcpu)->n_flag = NFLAG_8(res);
30355   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30356   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30357   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30358
30359   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30360}
30361
30362
30363void m68000_base_device_ops::m68k_op_subi_8_aw(m68000_base_device* mc68kcpu)
30364{
30365   UINT32 src = OPER_I_8(mc68kcpu);
30366   UINT32 ea = EA_AW_8(mc68kcpu);
30367   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30368   UINT32 res = dst - src;
30369
30370   (mc68kcpu)->n_flag = NFLAG_8(res);
30371   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30372   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30373   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30374
30375   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30376}
30377
30378
30379void m68000_base_device_ops::m68k_op_subi_8_al(m68000_base_device* mc68kcpu)
30380{
30381   UINT32 src = OPER_I_8(mc68kcpu);
30382   UINT32 ea = EA_AL_8(mc68kcpu);
30383   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30384   UINT32 res = dst - src;
30385
30386   (mc68kcpu)->n_flag = NFLAG_8(res);
30387   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30388   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30389   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30390
30391   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30392}
30393
30394
30395void m68000_base_device_ops::m68k_op_subi_16_d(m68000_base_device* mc68kcpu)
30396{
30397   UINT32* r_dst = &DY(mc68kcpu);
30398   UINT32 src = OPER_I_16(mc68kcpu);
30399   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
30400   UINT32 res = dst - src;
30401
30402   (mc68kcpu)->n_flag = NFLAG_16(res);
30403   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30404   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30405   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30406
30407   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
30408}
30409
30410
30411void m68000_base_device_ops::m68k_op_subi_16_ai(m68000_base_device* mc68kcpu)
30412{
30413   UINT32 src = OPER_I_16(mc68kcpu);
30414   UINT32 ea = EA_AY_AI_16(mc68kcpu);
30415   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30416   UINT32 res = dst - src;
30417
30418   (mc68kcpu)->n_flag = NFLAG_16(res);
30419   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30420   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30421   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30422
30423   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30424}
30425
30426
30427void m68000_base_device_ops::m68k_op_subi_16_pi(m68000_base_device* mc68kcpu)
30428{
30429   UINT32 src = OPER_I_16(mc68kcpu);
30430   UINT32 ea = EA_AY_PI_16(mc68kcpu);
30431   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30432   UINT32 res = dst - src;
30433
30434   (mc68kcpu)->n_flag = NFLAG_16(res);
30435   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30436   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30437   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30438
30439   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30440}
30441
30442
30443void m68000_base_device_ops::m68k_op_subi_16_pd(m68000_base_device* mc68kcpu)
30444{
30445   UINT32 src = OPER_I_16(mc68kcpu);
30446   UINT32 ea = EA_AY_PD_16(mc68kcpu);
30447   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30448   UINT32 res = dst - src;
30449
30450   (mc68kcpu)->n_flag = NFLAG_16(res);
30451   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30452   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30453   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30454
30455   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30456}
30457
30458
30459void m68000_base_device_ops::m68k_op_subi_16_di(m68000_base_device* mc68kcpu)
30460{
30461   UINT32 src = OPER_I_16(mc68kcpu);
30462   UINT32 ea = EA_AY_DI_16(mc68kcpu);
30463   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30464   UINT32 res = dst - src;
30465
30466   (mc68kcpu)->n_flag = NFLAG_16(res);
30467   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30468   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30469   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30470
30471   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30472}
30473
30474
30475void m68000_base_device_ops::m68k_op_subi_16_ix(m68000_base_device* mc68kcpu)
30476{
30477   UINT32 src = OPER_I_16(mc68kcpu);
30478   UINT32 ea = EA_AY_IX_16(mc68kcpu);
30479   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30480   UINT32 res = dst - src;
30481
30482   (mc68kcpu)->n_flag = NFLAG_16(res);
30483   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30484   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30485   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30486
30487   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30488}
30489
30490
30491void m68000_base_device_ops::m68k_op_subi_16_aw(m68000_base_device* mc68kcpu)
30492{
30493   UINT32 src = OPER_I_16(mc68kcpu);
30494   UINT32 ea = EA_AW_16(mc68kcpu);
30495   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30496   UINT32 res = dst - src;
30497
30498   (mc68kcpu)->n_flag = NFLAG_16(res);
30499   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30500   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30501   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30502
30503   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30504}
30505
30506
30507void m68000_base_device_ops::m68k_op_subi_16_al(m68000_base_device* mc68kcpu)
30508{
30509   UINT32 src = OPER_I_16(mc68kcpu);
30510   UINT32 ea = EA_AL_16(mc68kcpu);
30511   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30512   UINT32 res = dst - src;
30513
30514   (mc68kcpu)->n_flag = NFLAG_16(res);
30515   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30516   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30517   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30518
30519   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30520}
30521
30522
30523void m68000_base_device_ops::m68k_op_subi_32_d(m68000_base_device* mc68kcpu)
30524{
30525   UINT32* r_dst = &DY(mc68kcpu);
30526   UINT32 src = OPER_I_32(mc68kcpu);
30527   UINT32 dst = *r_dst;
30528   UINT32 res = dst - src;
30529
30530   (mc68kcpu)->n_flag = NFLAG_32(res);
30531   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30532   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30533   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30534
30535   *r_dst = (mc68kcpu)->not_z_flag;
30536}
30537
30538
30539void m68000_base_device_ops::m68k_op_subi_32_ai(m68000_base_device* mc68kcpu)
30540{
30541   UINT32 src = OPER_I_32(mc68kcpu);
30542   UINT32 ea = EA_AY_AI_32(mc68kcpu);
30543   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30544   UINT32 res = dst - src;
30545
30546   (mc68kcpu)->n_flag = NFLAG_32(res);
30547   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30548   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30549   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30550
30551   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30552}
30553
30554
30555void m68000_base_device_ops::m68k_op_subi_32_pi(m68000_base_device* mc68kcpu)
30556{
30557   UINT32 src = OPER_I_32(mc68kcpu);
30558   UINT32 ea = EA_AY_PI_32(mc68kcpu);
30559   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30560   UINT32 res = dst - src;
30561
30562   (mc68kcpu)->n_flag = NFLAG_32(res);
30563   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30564   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30565   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30566
30567   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30568}
30569
30570
30571void m68000_base_device_ops::m68k_op_subi_32_pd(m68000_base_device* mc68kcpu)
30572{
30573   UINT32 src = OPER_I_32(mc68kcpu);
30574   UINT32 ea = EA_AY_PD_32(mc68kcpu);
30575   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30576   UINT32 res = dst - src;
30577
30578   (mc68kcpu)->n_flag = NFLAG_32(res);
30579   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30580   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30581   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30582
30583   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30584}
30585
30586
30587void m68000_base_device_ops::m68k_op_subi_32_di(m68000_base_device* mc68kcpu)
30588{
30589   UINT32 src = OPER_I_32(mc68kcpu);
30590   UINT32 ea = EA_AY_DI_32(mc68kcpu);
30591   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30592   UINT32 res = dst - src;
30593
30594   (mc68kcpu)->n_flag = NFLAG_32(res);
30595   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30596   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30597   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30598
30599   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30600}
30601
30602
30603void m68000_base_device_ops::m68k_op_subi_32_ix(m68000_base_device* mc68kcpu)
30604{
30605   UINT32 src = OPER_I_32(mc68kcpu);
30606   UINT32 ea = EA_AY_IX_32(mc68kcpu);
30607   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30608   UINT32 res = dst - src;
30609
30610   (mc68kcpu)->n_flag = NFLAG_32(res);
30611   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30612   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30613   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30614
30615   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30616}
30617
30618
30619void m68000_base_device_ops::m68k_op_subi_32_aw(m68000_base_device* mc68kcpu)
30620{
30621   UINT32 src = OPER_I_32(mc68kcpu);
30622   UINT32 ea = EA_AW_32(mc68kcpu);
30623   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30624   UINT32 res = dst - src;
30625
30626   (mc68kcpu)->n_flag = NFLAG_32(res);
30627   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30628   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30629   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30630
30631   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30632}
30633
30634
30635void m68000_base_device_ops::m68k_op_subi_32_al(m68000_base_device* mc68kcpu)
30636{
30637   UINT32 src = OPER_I_32(mc68kcpu);
30638   UINT32 ea = EA_AL_32(mc68kcpu);
30639   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30640   UINT32 res = dst - src;
30641
30642   (mc68kcpu)->n_flag = NFLAG_32(res);
30643   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30644   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30645   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30646
30647   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30648}
30649
30650
30651void m68000_base_device_ops::m68k_op_subq_8_d(m68000_base_device* mc68kcpu)
30652{
30653   UINT32* r_dst = &DY(mc68kcpu);
30654   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30655   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
30656   UINT32 res = dst - src;
30657
30658   (mc68kcpu)->n_flag = NFLAG_8(res);
30659   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30660   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30661   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30662
30663   *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
30664}
30665
30666
30667void m68000_base_device_ops::m68k_op_subq_8_ai(m68000_base_device* mc68kcpu)
30668{
30669   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30670   UINT32 ea = EA_AY_AI_8(mc68kcpu);
30671   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30672   UINT32 res = dst - src;
30673
30674   (mc68kcpu)->n_flag = NFLAG_8(res);
30675   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30676   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30677   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30678
30679   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30680}
30681
30682
30683void m68000_base_device_ops::m68k_op_subq_8_pi(m68000_base_device* mc68kcpu)
30684{
30685   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30686   UINT32 ea = EA_AY_PI_8(mc68kcpu);
30687   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30688   UINT32 res = dst - src;
30689
30690   (mc68kcpu)->n_flag = NFLAG_8(res);
30691   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30692   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30693   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30694
30695   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30696}
30697
30698
30699void m68000_base_device_ops::m68k_op_subq_8_pi7(m68000_base_device* mc68kcpu)
30700{
30701   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30702   UINT32 ea = EA_A7_PI_8(mc68kcpu);
30703   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30704   UINT32 res = dst - src;
30705
30706   (mc68kcpu)->n_flag = NFLAG_8(res);
30707   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30708   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30709   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30710
30711   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30712}
30713
30714
30715void m68000_base_device_ops::m68k_op_subq_8_pd(m68000_base_device* mc68kcpu)
30716{
30717   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30718   UINT32 ea = EA_AY_PD_8(mc68kcpu);
30719   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30720   UINT32 res = dst - src;
30721
30722   (mc68kcpu)->n_flag = NFLAG_8(res);
30723   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30724   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30725   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30726
30727   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30728}
30729
30730
30731void m68000_base_device_ops::m68k_op_subq_8_pd7(m68000_base_device* mc68kcpu)
30732{
30733   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30734   UINT32 ea = EA_A7_PD_8(mc68kcpu);
30735   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30736   UINT32 res = dst - src;
30737
30738   (mc68kcpu)->n_flag = NFLAG_8(res);
30739   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30740   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30741   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30742
30743   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30744}
30745
30746
30747void m68000_base_device_ops::m68k_op_subq_8_di(m68000_base_device* mc68kcpu)
30748{
30749   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30750   UINT32 ea = EA_AY_DI_8(mc68kcpu);
30751   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30752   UINT32 res = dst - src;
30753
30754   (mc68kcpu)->n_flag = NFLAG_8(res);
30755   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30756   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30757   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30758
30759   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30760}
30761
30762
30763void m68000_base_device_ops::m68k_op_subq_8_ix(m68000_base_device* mc68kcpu)
30764{
30765   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30766   UINT32 ea = EA_AY_IX_8(mc68kcpu);
30767   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30768   UINT32 res = dst - src;
30769
30770   (mc68kcpu)->n_flag = NFLAG_8(res);
30771   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30772   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30773   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30774
30775   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30776}
30777
30778
30779void m68000_base_device_ops::m68k_op_subq_8_aw(m68000_base_device* mc68kcpu)
30780{
30781   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30782   UINT32 ea = EA_AW_8(mc68kcpu);
30783   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30784   UINT32 res = dst - src;
30785
30786   (mc68kcpu)->n_flag = NFLAG_8(res);
30787   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30788   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30789   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30790
30791   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30792}
30793
30794
30795void m68000_base_device_ops::m68k_op_subq_8_al(m68000_base_device* mc68kcpu)
30796{
30797   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30798   UINT32 ea = EA_AL_8(mc68kcpu);
30799   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
30800   UINT32 res = dst - src;
30801
30802   (mc68kcpu)->n_flag = NFLAG_8(res);
30803   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
30804   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
30805   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
30806
30807   m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30808}
30809
30810
30811void m68000_base_device_ops::m68k_op_subq_16_d(m68000_base_device* mc68kcpu)
30812{
30813   UINT32* r_dst = &DY(mc68kcpu);
30814   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30815   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
30816   UINT32 res = dst - src;
30817
30818   (mc68kcpu)->n_flag = NFLAG_16(res);
30819   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30820   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30821   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30822
30823   *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
30824}
30825
30826
30827void m68000_base_device_ops::m68k_op_subq_16_a(m68000_base_device* mc68kcpu)
30828{
30829   UINT32* r_dst = &AY(mc68kcpu);
30830
30831   *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
30832}
30833
30834
30835void m68000_base_device_ops::m68k_op_subq_16_ai(m68000_base_device* mc68kcpu)
30836{
30837   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30838   UINT32 ea = EA_AY_AI_16(mc68kcpu);
30839   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30840   UINT32 res = dst - src;
30841
30842   (mc68kcpu)->n_flag = NFLAG_16(res);
30843   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30844   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30845   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30846
30847   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30848}
30849
30850
30851void m68000_base_device_ops::m68k_op_subq_16_pi(m68000_base_device* mc68kcpu)
30852{
30853   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30854   UINT32 ea = EA_AY_PI_16(mc68kcpu);
30855   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30856   UINT32 res = dst - src;
30857
30858   (mc68kcpu)->n_flag = NFLAG_16(res);
30859   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30860   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30861   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30862
30863   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30864}
30865
30866
30867void m68000_base_device_ops::m68k_op_subq_16_pd(m68000_base_device* mc68kcpu)
30868{
30869   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30870   UINT32 ea = EA_AY_PD_16(mc68kcpu);
30871   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30872   UINT32 res = dst - src;
30873
30874   (mc68kcpu)->n_flag = NFLAG_16(res);
30875   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30876   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30877   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30878
30879   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30880}
30881
30882
30883void m68000_base_device_ops::m68k_op_subq_16_di(m68000_base_device* mc68kcpu)
30884{
30885   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30886   UINT32 ea = EA_AY_DI_16(mc68kcpu);
30887   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30888   UINT32 res = dst - src;
30889
30890   (mc68kcpu)->n_flag = NFLAG_16(res);
30891   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30892   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30893   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30894
30895   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30896}
30897
30898
30899void m68000_base_device_ops::m68k_op_subq_16_ix(m68000_base_device* mc68kcpu)
30900{
30901   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30902   UINT32 ea = EA_AY_IX_16(mc68kcpu);
30903   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30904   UINT32 res = dst - src;
30905
30906   (mc68kcpu)->n_flag = NFLAG_16(res);
30907   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30908   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30909   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30910
30911   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30912}
30913
30914
30915void m68000_base_device_ops::m68k_op_subq_16_aw(m68000_base_device* mc68kcpu)
30916{
30917   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30918   UINT32 ea = EA_AW_16(mc68kcpu);
30919   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30920   UINT32 res = dst - src;
30921
30922   (mc68kcpu)->n_flag = NFLAG_16(res);
30923   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30924   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30925   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30926
30927   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30928}
30929
30930
30931void m68000_base_device_ops::m68k_op_subq_16_al(m68000_base_device* mc68kcpu)
30932{
30933   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30934   UINT32 ea = EA_AL_16(mc68kcpu);
30935   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
30936   UINT32 res = dst - src;
30937
30938   (mc68kcpu)->n_flag = NFLAG_16(res);
30939   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
30940   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
30941   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
30942
30943   m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30944}
30945
30946
30947void m68000_base_device_ops::m68k_op_subq_32_d(m68000_base_device* mc68kcpu)
30948{
30949   UINT32* r_dst = &DY(mc68kcpu);
30950   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30951   UINT32 dst = *r_dst;
30952   UINT32 res = dst - src;
30953
30954   (mc68kcpu)->n_flag = NFLAG_32(res);
30955   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30956   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30957   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30958
30959   *r_dst = (mc68kcpu)->not_z_flag;
30960}
30961
30962
30963void m68000_base_device_ops::m68k_op_subq_32_a(m68000_base_device* mc68kcpu)
30964{
30965   UINT32* r_dst = &AY(mc68kcpu);
30966
30967   *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
30968}
30969
30970
30971void m68000_base_device_ops::m68k_op_subq_32_ai(m68000_base_device* mc68kcpu)
30972{
30973   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30974   UINT32 ea = EA_AY_AI_32(mc68kcpu);
30975   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30976   UINT32 res = dst - src;
30977
30978   (mc68kcpu)->n_flag = NFLAG_32(res);
30979   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30980   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30981   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30982
30983   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
30984}
30985
30986
30987void m68000_base_device_ops::m68k_op_subq_32_pi(m68000_base_device* mc68kcpu)
30988{
30989   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
30990   UINT32 ea = EA_AY_PI_32(mc68kcpu);
30991   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
30992   UINT32 res = dst - src;
30993
30994   (mc68kcpu)->n_flag = NFLAG_32(res);
30995   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
30996   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
30997   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
30998
30999   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31000}
31001
31002
31003void m68000_base_device_ops::m68k_op_subq_32_pd(m68000_base_device* mc68kcpu)
31004{
31005   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
31006   UINT32 ea = EA_AY_PD_32(mc68kcpu);
31007   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31008   UINT32 res = dst - src;
31009
31010   (mc68kcpu)->n_flag = NFLAG_32(res);
31011   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
31012   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31013   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31014
31015   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31016}
31017
31018
31019void m68000_base_device_ops::m68k_op_subq_32_di(m68000_base_device* mc68kcpu)
31020{
31021   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
31022   UINT32 ea = EA_AY_DI_32(mc68kcpu);
31023   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31024   UINT32 res = dst - src;
31025
31026   (mc68kcpu)->n_flag = NFLAG_32(res);
31027   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
31028   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31029   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31030
31031   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31032}
31033
31034
31035void m68000_base_device_ops::m68k_op_subq_32_ix(m68000_base_device* mc68kcpu)
31036{
31037   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
31038   UINT32 ea = EA_AY_IX_32(mc68kcpu);
31039   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31040   UINT32 res = dst - src;
31041
31042   (mc68kcpu)->n_flag = NFLAG_32(res);
31043   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
31044   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31045   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31046
31047   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31048}
31049
31050
31051void m68000_base_device_ops::m68k_op_subq_32_aw(m68000_base_device* mc68kcpu)
31052{
31053   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
31054   UINT32 ea = EA_AW_32(mc68kcpu);
31055   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31056   UINT32 res = dst - src;
31057
31058   (mc68kcpu)->n_flag = NFLAG_32(res);
31059   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
31060   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31061   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31062
31063   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31064}
31065
31066
31067void m68000_base_device_ops::m68k_op_subq_32_al(m68000_base_device* mc68kcpu)
31068{
31069   UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
31070   UINT32 ea = EA_AL_32(mc68kcpu);
31071   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31072   UINT32 res = dst - src;
31073
31074   (mc68kcpu)->n_flag = NFLAG_32(res);
31075   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
31076   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31077   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31078
31079   m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
31080}
31081
31082
31083void m68000_base_device_ops::m68k_op_subx_8_rr(m68000_base_device* mc68kcpu)
31084{
31085   UINT32* r_dst = &DX(mc68kcpu);
31086   UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
31087   UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
31088   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31089
31090   (mc68kcpu)->n_flag = NFLAG_8(res);
31091   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
31092   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
31093
31094   res = MASK_OUT_ABOVE_8(res);
31095   (mc68kcpu)->not_z_flag |= res;
31096
31097   *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
31098}
31099
31100
31101void m68000_base_device_ops::m68k_op_subx_16_rr(m68000_base_device* mc68kcpu)
31102{
31103   UINT32* r_dst = &DX(mc68kcpu);
31104   UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
31105   UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
31106   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31107
31108   (mc68kcpu)->n_flag = NFLAG_16(res);
31109   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
31110   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
31111
31112   res = MASK_OUT_ABOVE_16(res);
31113   (mc68kcpu)->not_z_flag |= res;
31114
31115   *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
31116}
31117
31118
31119void m68000_base_device_ops::m68k_op_subx_32_rr(m68000_base_device* mc68kcpu)
31120{
31121   UINT32* r_dst = &DX(mc68kcpu);
31122   UINT32 src = DY(mc68kcpu);
31123   UINT32 dst = *r_dst;
31124   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31125
31126   (mc68kcpu)->n_flag = NFLAG_32(res);
31127   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31128   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31129
31130   res = MASK_OUT_ABOVE_32(res);
31131   (mc68kcpu)->not_z_flag |= res;
31132
31133   *r_dst = res;
31134}
31135
31136
31137void m68000_base_device_ops::m68k_op_subx_8_mm_ax7(m68000_base_device* mc68kcpu)
31138{
31139   UINT32 src = OPER_AY_PD_8(mc68kcpu);
31140   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
31141   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31142   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31143
31144   (mc68kcpu)->n_flag = NFLAG_8(res);
31145   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
31146   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
31147
31148   res = MASK_OUT_ABOVE_8(res);
31149   (mc68kcpu)->not_z_flag |= res;
31150
31151   m68ki_write_8((mc68kcpu), ea, res);
31152}
31153
31154
31155void m68000_base_device_ops::m68k_op_subx_8_mm_ay7(m68000_base_device* mc68kcpu)
31156{
31157   UINT32 src = OPER_A7_PD_8(mc68kcpu);
31158   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
31159   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31160   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31161
31162   (mc68kcpu)->n_flag = NFLAG_8(res);
31163   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
31164   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
31165
31166   res = MASK_OUT_ABOVE_8(res);
31167   (mc68kcpu)->not_z_flag |= res;
31168
31169   m68ki_write_8((mc68kcpu), ea, res);
31170}
31171
31172
31173void m68000_base_device_ops::m68k_op_subx_8_mm_axy7(m68000_base_device* mc68kcpu)
31174{
31175   UINT32 src = OPER_A7_PD_8(mc68kcpu);
31176   UINT32 ea  = EA_A7_PD_8(mc68kcpu);
31177   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31178   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31179
31180   (mc68kcpu)->n_flag = NFLAG_8(res);
31181   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
31182   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
31183
31184   res = MASK_OUT_ABOVE_8(res);
31185   (mc68kcpu)->not_z_flag |= res;
31186
31187   m68ki_write_8((mc68kcpu), ea, res);
31188}
31189
31190
31191void m68000_base_device_ops::m68k_op_subx_8_mm(m68000_base_device* mc68kcpu)
31192{
31193   UINT32 src = OPER_AY_PD_8(mc68kcpu);
31194   UINT32 ea  = EA_AX_PD_8(mc68kcpu);
31195   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31196   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31197
31198   (mc68kcpu)->n_flag = NFLAG_8(res);
31199   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
31200   (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
31201
31202   res = MASK_OUT_ABOVE_8(res);
31203   (mc68kcpu)->not_z_flag |= res;
31204
31205   m68ki_write_8((mc68kcpu), ea, res);
31206}
31207
31208
31209void m68000_base_device_ops::m68k_op_subx_16_mm(m68000_base_device* mc68kcpu)
31210{
31211   UINT32 src = OPER_AY_PD_16(mc68kcpu);
31212   UINT32 ea  = EA_AX_PD_16(mc68kcpu);
31213   UINT32 dst = m68ki_read_16((mc68kcpu), ea);
31214   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31215
31216   (mc68kcpu)->n_flag = NFLAG_16(res);
31217   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
31218   (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
31219
31220   res = MASK_OUT_ABOVE_16(res);
31221   (mc68kcpu)->not_z_flag |= res;
31222
31223   m68ki_write_16((mc68kcpu), ea, res);
31224}
31225
31226
31227void m68000_base_device_ops::m68k_op_subx_32_mm(m68000_base_device* mc68kcpu)
31228{
31229   UINT32 src = OPER_AY_PD_32(mc68kcpu);
31230   UINT32 ea  = EA_AX_PD_32(mc68kcpu);
31231   UINT32 dst = m68ki_read_32((mc68kcpu), ea);
31232   UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
31233
31234   (mc68kcpu)->n_flag = NFLAG_32(res);
31235   (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
31236   (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
31237
31238   res = MASK_OUT_ABOVE_32(res);
31239   (mc68kcpu)->not_z_flag |= res;
31240
31241   m68ki_write_32((mc68kcpu), ea, res);
31242}
31243
31244
31245void m68000_base_device_ops::m68k_op_swap_32(m68000_base_device* mc68kcpu)
31246{
31247   UINT32* r_dst = &DY(mc68kcpu);
31248
31249   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(*r_dst<<16);
31250   *r_dst = (*r_dst>>16) | (mc68kcpu)->not_z_flag;
31251
31252   (mc68kcpu)->not_z_flag = *r_dst;
31253   (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
31254   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31255   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31256}
31257
31258
31259void m68000_base_device_ops::m68k_op_tas_8_d(m68000_base_device* mc68kcpu)
31260{
31261   UINT32* r_dst = &DY(mc68kcpu);
31262
31263   (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
31264   (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
31265   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31266   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31267   *r_dst |= 0x80;
31268}
31269
31270
31271void m68000_base_device_ops::m68k_op_tas_8_ai(m68000_base_device* mc68kcpu)
31272{
31273   UINT32 ea = EA_AY_AI_8(mc68kcpu);
31274   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31275
31276   (mc68kcpu)->not_z_flag = dst;
31277   (mc68kcpu)->n_flag = NFLAG_8(dst);
31278   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31279   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31280
31281   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31282      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31283      bus implementation.
31284      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31285      to fail to write back in order to function properly. */
31286   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31287      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31288   else
31289      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31290}
31291
31292
31293void m68000_base_device_ops::m68k_op_tas_8_pi(m68000_base_device* mc68kcpu)
31294{
31295   UINT32 ea = EA_AY_PI_8(mc68kcpu);
31296   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31297
31298   (mc68kcpu)->not_z_flag = dst;
31299   (mc68kcpu)->n_flag = NFLAG_8(dst);
31300   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31301   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31302
31303   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31304      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31305      bus implementation.
31306      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31307      to fail to write back in order to function properly. */
31308   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31309      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31310   else
31311      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31312}
31313
31314
31315void m68000_base_device_ops::m68k_op_tas_8_pi7(m68000_base_device* mc68kcpu)
31316{
31317   UINT32 ea = EA_A7_PI_8(mc68kcpu);
31318   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31319
31320   (mc68kcpu)->not_z_flag = dst;
31321   (mc68kcpu)->n_flag = NFLAG_8(dst);
31322   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31323   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31324
31325   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31326      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31327      bus implementation.
31328      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31329      to fail to write back in order to function properly. */
31330   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31331      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31332   else
31333      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31334}
31335
31336
31337void m68000_base_device_ops::m68k_op_tas_8_pd(m68000_base_device* mc68kcpu)
31338{
31339   UINT32 ea = EA_AY_PD_8(mc68kcpu);
31340   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31341
31342   (mc68kcpu)->not_z_flag = dst;
31343   (mc68kcpu)->n_flag = NFLAG_8(dst);
31344   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31345   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31346
31347   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31348      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31349      bus implementation.
31350      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31351      to fail to write back in order to function properly. */
31352   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31353      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31354   else
31355      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31356}
31357
31358
31359void m68000_base_device_ops::m68k_op_tas_8_pd7(m68000_base_device* mc68kcpu)
31360{
31361   UINT32 ea = EA_A7_PD_8(mc68kcpu);
31362   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31363
31364   (mc68kcpu)->not_z_flag = dst;
31365   (mc68kcpu)->n_flag = NFLAG_8(dst);
31366   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31367   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31368
31369   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31370      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31371      bus implementation.
31372      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31373      to fail to write back in order to function properly. */
31374   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31375      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31376   else
31377      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31378}
31379
31380
31381void m68000_base_device_ops::m68k_op_tas_8_di(m68000_base_device* mc68kcpu)
31382{
31383   UINT32 ea = EA_AY_DI_8(mc68kcpu);
31384   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31385
31386   (mc68kcpu)->not_z_flag = dst;
31387   (mc68kcpu)->n_flag = NFLAG_8(dst);
31388   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31389   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31390
31391   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31392      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31393      bus implementation.
31394      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31395      to fail to write back in order to function properly. */
31396   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31397      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31398   else
31399      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31400}
31401
31402
31403void m68000_base_device_ops::m68k_op_tas_8_ix(m68000_base_device* mc68kcpu)
31404{
31405   UINT32 ea = EA_AY_IX_8(mc68kcpu);
31406   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31407
31408   (mc68kcpu)->not_z_flag = dst;
31409   (mc68kcpu)->n_flag = NFLAG_8(dst);
31410   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31411   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31412
31413   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31414      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31415      bus implementation.
31416      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31417      to fail to write back in order to function properly. */
31418   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31419      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31420   else
31421      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31422}
31423
31424
31425void m68000_base_device_ops::m68k_op_tas_8_aw(m68000_base_device* mc68kcpu)
31426{
31427   UINT32 ea = EA_AW_8(mc68kcpu);
31428   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31429
31430   (mc68kcpu)->not_z_flag = dst;
31431   (mc68kcpu)->n_flag = NFLAG_8(dst);
31432   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31433   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31434
31435   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31436      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31437      bus implementation.
31438      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31439      to fail to write back in order to function properly. */
31440   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31441      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31442   else
31443      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31444}
31445
31446
31447void m68000_base_device_ops::m68k_op_tas_8_al(m68000_base_device* mc68kcpu)
31448{
31449   UINT32 ea = EA_AL_8(mc68kcpu);
31450   UINT32 dst = m68ki_read_8((mc68kcpu), ea);
31451
31452   (mc68kcpu)->not_z_flag = dst;
31453   (mc68kcpu)->n_flag = NFLAG_8(dst);
31454   (mc68kcpu)->v_flag = VFLAG_CLEAR;
31455   (mc68kcpu)->c_flag = CFLAG_CLEAR;
31456
31457   /* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
31458      side effects (e.g. delaying DMA) or may fail to write back at all depending on the
31459      bus implementation.
31460      In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
31461      to fail to write back in order to function properly. */
31462   if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
31463      ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
31464   else
31465      m68ki_write_8((mc68kcpu), ea, dst | 0x80);
31466}
31467
31468
31469void m68000_base_device_ops::m68k_op_trap(m68000_base_device* mc68kcpu)
31470{
31471   /* Trap#n stacks exception frame type 0 */
31472   m68ki_exception_trapN((mc68kcpu), EXCEPTION_TRAP_BASE + ((mc68kcpu)->ir & 0xf));    /* HJB 990403 */
31473}
31474
31475
31476void m68000_base_device_ops::m68k_op_trapt(m68000_base_device* mc68kcpu)
31477{
31478   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31479   {
31480      m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31481      return;
31482   }
31483   m68ki_exception_illegal(mc68kcpu);
31484}
31485
31486
31487void m68000_base_device_ops::m68k_op_trapt_16(m68000_base_device* mc68kcpu)
31488{
31489   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31490   {
31491      m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31492      return;
31493   }
31494   m68ki_exception_illegal(mc68kcpu);
31495}
31496
31497
31498void m68000_base_device_ops::m68k_op_trapt_32(m68000_base_device* mc68kcpu)
31499{
31500   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31501   {
31502      m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31503      return;
31504   }
31505   m68ki_exception_illegal(mc68kcpu);
31506}
31507
31508
31509void m68000_base_device_ops::m68k_op_trapf(m68000_base_device* mc68kcpu)
31510{
31511   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31512   {
31513      return;
31514   }
31515   m68ki_exception_illegal(mc68kcpu);
31516}
31517
31518
31519void m68000_base_device_ops::m68k_op_trapf_16(m68000_base_device* mc68kcpu)
31520{
31521   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31522   {
31523      REG_PC(mc68kcpu) += 2;
31524      return;
31525   }
31526   m68ki_exception_illegal(mc68kcpu);
31527}
31528
31529
31530void m68000_base_device_ops::m68k_op_trapf_32(m68000_base_device* mc68kcpu)
31531{
31532   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31533   {
31534      REG_PC(mc68kcpu) += 4;
31535      return;
31536   }
31537   m68ki_exception_illegal(mc68kcpu);
31538}
31539
31540
31541void m68000_base_device_ops::m68k_op_traphi(m68000_base_device* mc68kcpu)
31542{
31543   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31544   {
31545      if(COND_HI(mc68kcpu))
31546         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31547      return;
31548   }
31549   m68ki_exception_illegal(mc68kcpu);
31550}
31551
31552
31553void m68000_base_device_ops::m68k_op_trapls(m68000_base_device* mc68kcpu)
31554{
31555   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31556   {
31557      if(COND_LS(mc68kcpu))
31558         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31559      return;
31560   }
31561   m68ki_exception_illegal(mc68kcpu);
31562}
31563
31564
31565void m68000_base_device_ops::m68k_op_trapcc(m68000_base_device* mc68kcpu)
31566{
31567   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31568   {
31569      if(COND_CC(mc68kcpu))
31570         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31571      return;
31572   }
31573   m68ki_exception_illegal(mc68kcpu);
31574}
31575
31576
31577void m68000_base_device_ops::m68k_op_trapcs(m68000_base_device* mc68kcpu)
31578{
31579   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31580   {
31581      if(COND_CS(mc68kcpu))
31582         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31583      return;
31584   }
31585   m68ki_exception_illegal(mc68kcpu);
31586}
31587
31588
31589void m68000_base_device_ops::m68k_op_trapne(m68000_base_device* mc68kcpu)
31590{
31591   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31592   {
31593      if(COND_NE(mc68kcpu))
31594         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31595      return;
31596   }
31597   m68ki_exception_illegal(mc68kcpu);
31598}
31599
31600
31601void m68000_base_device_ops::m68k_op_trapeq(m68000_base_device* mc68kcpu)
31602{
31603   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31604   {
31605      if(COND_EQ(mc68kcpu))
31606         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31607      return;
31608   }
31609   m68ki_exception_illegal(mc68kcpu);
31610}
31611
31612
31613void m68000_base_device_ops::m68k_op_trapvc(m68000_base_device* mc68kcpu)
31614{
31615   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31616   {
31617      if(COND_VC(mc68kcpu))
31618         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31619      return;
31620   }
31621   m68ki_exception_illegal(mc68kcpu);
31622}
31623
31624
31625void m68000_base_device_ops::m68k_op_trapvs(m68000_base_device* mc68kcpu)
31626{
31627   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31628   {
31629      if(COND_VS(mc68kcpu))
31630         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31631      return;
31632   }
31633   m68ki_exception_illegal(mc68kcpu);
31634}
31635
31636
31637void m68000_base_device_ops::m68k_op_trappl(m68000_base_device* mc68kcpu)
31638{
31639   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31640   {
31641      if(COND_PL(mc68kcpu))
31642         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31643      return;
31644   }
31645   m68ki_exception_illegal(mc68kcpu);
31646}
31647
31648
31649void m68000_base_device_ops::m68k_op_trapmi(m68000_base_device* mc68kcpu)
31650{
31651   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31652   {
31653      if(COND_MI(mc68kcpu))
31654         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31655      return;
31656   }
31657   m68ki_exception_illegal(mc68kcpu);
31658}
31659
31660
31661void m68000_base_device_ops::m68k_op_trapge(m68000_base_device* mc68kcpu)
31662{
31663   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31664   {
31665      if(COND_GE(mc68kcpu))
31666         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31667      return;
31668   }
31669   m68ki_exception_illegal(mc68kcpu);
31670}
31671
31672
31673void m68000_base_device_ops::m68k_op_traplt(m68000_base_device* mc68kcpu)
31674{
31675   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31676   {
31677      if(COND_LT(mc68kcpu))
31678         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31679      return;
31680   }
31681   m68ki_exception_illegal(mc68kcpu);
31682}
31683
31684
31685void m68000_base_device_ops::m68k_op_trapgt(m68000_base_device* mc68kcpu)
31686{
31687   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31688   {
31689      if(COND_GT(mc68kcpu))
31690         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31691      return;
31692   }
31693   m68ki_exception_illegal(mc68kcpu);
31694}
31695
31696
31697void m68000_base_device_ops::m68k_op_traple(m68000_base_device* mc68kcpu)
31698{
31699   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31700   {
31701      if(COND_LE(mc68kcpu))
31702         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31703      return;
31704   }
31705   m68ki_exception_illegal(mc68kcpu);
31706}
31707
31708
31709void m68000_base_device_ops::m68k_op_traphi_16(m68000_base_device* mc68kcpu)
31710{
31711   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31712   {
31713      if(COND_HI(mc68kcpu))
31714      {
31715         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31716         return;
31717      }
31718      REG_PC(mc68kcpu) += 2;
31719      return;
31720   }
31721   m68ki_exception_illegal(mc68kcpu);
31722}
31723
31724
31725void m68000_base_device_ops::m68k_op_trapls_16(m68000_base_device* mc68kcpu)
31726{
31727   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31728   {
31729      if(COND_LS(mc68kcpu))
31730      {
31731         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31732         return;
31733      }
31734      REG_PC(mc68kcpu) += 2;
31735      return;
31736   }
31737   m68ki_exception_illegal(mc68kcpu);
31738}
31739
31740
31741void m68000_base_device_ops::m68k_op_trapcc_16(m68000_base_device* mc68kcpu)
31742{
31743   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31744   {
31745      if(COND_CC(mc68kcpu))
31746      {
31747         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31748         return;
31749      }
31750      REG_PC(mc68kcpu) += 2;
31751      return;
31752   }
31753   m68ki_exception_illegal(mc68kcpu);
31754}
31755
31756
31757void m68000_base_device_ops::m68k_op_trapcs_16(m68000_base_device* mc68kcpu)
31758{
31759   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31760   {
31761      if(COND_CS(mc68kcpu))
31762      {
31763         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31764         return;
31765      }
31766      REG_PC(mc68kcpu) += 2;
31767      return;
31768   }
31769   m68ki_exception_illegal(mc68kcpu);
31770}
31771
31772
31773void m68000_base_device_ops::m68k_op_trapne_16(m68000_base_device* mc68kcpu)
31774{
31775   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31776   {
31777      if(COND_NE(mc68kcpu))
31778      {
31779         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31780         return;
31781      }
31782      REG_PC(mc68kcpu) += 2;
31783      return;
31784   }
31785   m68ki_exception_illegal(mc68kcpu);
31786}
31787
31788
31789void m68000_base_device_ops::m68k_op_trapeq_16(m68000_base_device* mc68kcpu)
31790{
31791   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31792   {
31793      if(COND_EQ(mc68kcpu))
31794      {
31795         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31796         return;
31797      }
31798      REG_PC(mc68kcpu) += 2;
31799      return;
31800   }
31801   m68ki_exception_illegal(mc68kcpu);
31802}
31803
31804
31805void m68000_base_device_ops::m68k_op_trapvc_16(m68000_base_device* mc68kcpu)
31806{
31807   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31808   {
31809      if(COND_VC(mc68kcpu))
31810      {
31811         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31812         return;
31813      }
31814      REG_PC(mc68kcpu) += 2;
31815      return;
31816   }
31817   m68ki_exception_illegal(mc68kcpu);
31818}
31819
31820
31821void m68000_base_device_ops::m68k_op_trapvs_16(m68000_base_device* mc68kcpu)
31822{
31823   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31824   {
31825      if(COND_VS(mc68kcpu))
31826      {
31827         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31828         return;
31829      }
31830      REG_PC(mc68kcpu) += 2;
31831      return;
31832   }
31833   m68ki_exception_illegal(mc68kcpu);
31834}
31835
31836
31837void m68000_base_device_ops::m68k_op_trappl_16(m68000_base_device* mc68kcpu)
31838{
31839   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31840   {
31841      if(COND_PL(mc68kcpu))
31842      {
31843         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31844         return;
31845      }
31846      REG_PC(mc68kcpu) += 2;
31847      return;
31848   }
31849   m68ki_exception_illegal(mc68kcpu);
31850}
31851
31852
31853void m68000_base_device_ops::m68k_op_trapmi_16(m68000_base_device* mc68kcpu)
31854{
31855   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31856   {
31857      if(COND_MI(mc68kcpu))
31858      {
31859         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31860         return;
31861      }
31862      REG_PC(mc68kcpu) += 2;
31863      return;
31864   }
31865   m68ki_exception_illegal(mc68kcpu);
31866}
31867
31868
31869void m68000_base_device_ops::m68k_op_trapge_16(m68000_base_device* mc68kcpu)
31870{
31871   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31872   {
31873      if(COND_GE(mc68kcpu))
31874      {
31875         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31876         return;
31877      }
31878      REG_PC(mc68kcpu) += 2;
31879      return;
31880   }
31881   m68ki_exception_illegal(mc68kcpu);
31882}
31883
31884
31885void m68000_base_device_ops::m68k_op_traplt_16(m68000_base_device* mc68kcpu)
31886{
31887   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31888   {
31889      if(COND_LT(mc68kcpu))
31890      {
31891         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31892         return;
31893      }
31894      REG_PC(mc68kcpu) += 2;
31895      return;
31896   }
31897   m68ki_exception_illegal(mc68kcpu);
31898}
31899
31900
31901void m68000_base_device_ops::m68k_op_trapgt_16(m68000_base_device* mc68kcpu)
31902{
31903   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31904   {
31905      if(COND_GT(mc68kcpu))
31906      {
31907         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31908         return;
31909      }
31910      REG_PC(mc68kcpu) += 2;
31911      return;
31912   }
31913   m68ki_exception_illegal(mc68kcpu);
31914}
31915
31916
31917void m68000_base_device_ops::m68k_op_traple_16(m68000_base_device* mc68kcpu)
31918{
31919   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31920   {
31921      if(COND_LE(mc68kcpu))
31922      {
31923         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31924         return;
31925      }
31926      REG_PC(mc68kcpu) += 2;
31927      return;
31928   }
31929   m68ki_exception_illegal(mc68kcpu);
31930}
31931
31932
31933void m68000_base_device_ops::m68k_op_traphi_32(m68000_base_device* mc68kcpu)
31934{
31935   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31936   {
31937      if(COND_HI(mc68kcpu))
31938      {
31939         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31940         return;
31941      }
31942      REG_PC(mc68kcpu) += 4;
31943      return;
31944   }
31945   m68ki_exception_illegal(mc68kcpu);
31946}
31947
31948
31949void m68000_base_device_ops::m68k_op_trapls_32(m68000_base_device* mc68kcpu)
31950{
31951   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31952   {
31953      if(COND_LS(mc68kcpu))
31954      {
31955         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31956         return;
31957      }
31958      REG_PC(mc68kcpu) += 4;
31959      return;
31960   }
31961   m68ki_exception_illegal(mc68kcpu);
31962}
31963
31964
31965void m68000_base_device_ops::m68k_op_trapcc_32(m68000_base_device* mc68kcpu)
31966{
31967   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31968   {
31969      if(COND_CC(mc68kcpu))
31970      {
31971         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31972         return;
31973      }
31974      REG_PC(mc68kcpu) += 4;
31975      return;
31976   }
31977   m68ki_exception_illegal(mc68kcpu);
31978}
31979
31980
31981void m68000_base_device_ops::m68k_op_trapcs_32(m68000_base_device* mc68kcpu)
31982{
31983   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
31984   {
31985      if(COND_CS(mc68kcpu))
31986      {
31987         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
31988         return;
31989      }
31990      REG_PC(mc68kcpu) += 4;
31991      return;
31992   }
31993   m68ki_exception_illegal(mc68kcpu);
31994}
31995
31996
31997void m68000_base_device_ops::m68k_op_trapne_32(m68000_base_device* mc68kcpu)
31998{
31999   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32000   {
32001      if(COND_NE(mc68kcpu))
32002      {
32003         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32004         return;
32005      }
32006      REG_PC(mc68kcpu) += 4;
32007      return;
32008   }
32009   m68ki_exception_illegal(mc68kcpu);
32010}
32011
32012
32013void m68000_base_device_ops::m68k_op_trapeq_32(m68000_base_device* mc68kcpu)
32014{
32015   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32016   {
32017      if(COND_EQ(mc68kcpu))
32018      {
32019         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32020         return;
32021      }
32022      REG_PC(mc68kcpu) += 4;
32023      return;
32024   }
32025   m68ki_exception_illegal(mc68kcpu);
32026}
32027
32028
32029void m68000_base_device_ops::m68k_op_trapvc_32(m68000_base_device* mc68kcpu)
32030{
32031   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32032   {
32033      if(COND_VC(mc68kcpu))
32034      {
32035         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32036         return;
32037      }
32038      REG_PC(mc68kcpu) += 4;
32039      return;
32040   }
32041   m68ki_exception_illegal(mc68kcpu);
32042}
32043
32044
32045void m68000_base_device_ops::m68k_op_trapvs_32(m68000_base_device* mc68kcpu)
32046{
32047   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32048   {
32049      if(COND_VS(mc68kcpu))
32050      {
32051         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32052         return;
32053      }
32054      REG_PC(mc68kcpu) += 4;
32055      return;
32056   }
32057   m68ki_exception_illegal(mc68kcpu);
32058}
32059
32060
32061void m68000_base_device_ops::m68k_op_trappl_32(m68000_base_device* mc68kcpu)
32062{
32063   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32064   {
32065      if(COND_PL(mc68kcpu))
32066      {
32067         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32068         return;
32069      }
32070      REG_PC(mc68kcpu) += 4;
32071      return;
32072   }
32073   m68ki_exception_illegal(mc68kcpu);
32074}
32075
32076
32077void m68000_base_device_ops::m68k_op_trapmi_32(m68000_base_device* mc68kcpu)
32078{
32079   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32080   {
32081      if(COND_MI(mc68kcpu))
32082      {
32083         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32084         return;
32085      }
32086      REG_PC(mc68kcpu) += 4;
32087      return;
32088   }
32089   m68ki_exception_illegal(mc68kcpu);
32090}
32091
32092
32093void m68000_base_device_ops::m68k_op_trapge_32(m68000_base_device* mc68kcpu)
32094{
32095   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32096   {
32097      if(COND_GE(mc68kcpu))
32098      {
32099         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32100         return;
32101      }
32102      REG_PC(mc68kcpu) += 4;
32103      return;
32104   }
32105   m68ki_exception_illegal(mc68kcpu);
32106}
32107
32108
32109void m68000_base_device_ops::m68k_op_traplt_32(m68000_base_device* mc68kcpu)
32110{
32111   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32112   {
32113      if(COND_LT(mc68kcpu))
32114      {
32115         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32116         return;
32117      }
32118      REG_PC(mc68kcpu) += 4;
32119      return;
32120   }
32121   m68ki_exception_illegal(mc68kcpu);
32122}
32123
32124
32125void m68000_base_device_ops::m68k_op_trapgt_32(m68000_base_device* mc68kcpu)
32126{
32127   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32128   {
32129      if(COND_GT(mc68kcpu))
32130      {
32131         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32132         return;
32133      }
32134      REG_PC(mc68kcpu) += 4;
32135      return;
32136   }
32137   m68ki_exception_illegal(mc68kcpu);
32138}
32139
32140
32141void m68000_base_device_ops::m68k_op_traple_32(m68000_base_device* mc68kcpu)
32142{
32143   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32144   {
32145      if(COND_LE(mc68kcpu))
32146      {
32147         m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32148         return;
32149      }
32150      REG_PC(mc68kcpu) += 4;
32151      return;
32152   }
32153   m68ki_exception_illegal(mc68kcpu);
32154}
32155
32156
32157void m68000_base_device_ops::m68k_op_trapv(m68000_base_device* mc68kcpu)
32158{
32159   if(COND_VC(mc68kcpu))
32160   {
32161      return;
32162   }
32163   m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV);  /* HJB 990403 */
32164}
32165
32166
32167void m68000_base_device_ops::m68k_op_tst_8_d(m68000_base_device* mc68kcpu)
32168{
32169   UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
32170
32171   (mc68kcpu)->n_flag = NFLAG_8(res);
32172   (mc68kcpu)->not_z_flag = res;
32173   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32174   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32175}
32176
32177
32178void m68000_base_device_ops::m68k_op_tst_8_ai(m68000_base_device* mc68kcpu)
32179{
32180   UINT32 res = OPER_AY_AI_8(mc68kcpu);
32181
32182   (mc68kcpu)->n_flag = NFLAG_8(res);
32183   (mc68kcpu)->not_z_flag = res;
32184   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32185   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32186}
32187
32188
32189void m68000_base_device_ops::m68k_op_tst_8_pi(m68000_base_device* mc68kcpu)
32190{
32191   UINT32 res = OPER_AY_PI_8(mc68kcpu);
32192
32193   (mc68kcpu)->n_flag = NFLAG_8(res);
32194   (mc68kcpu)->not_z_flag = res;
32195   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32196   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32197}
32198
32199
32200void m68000_base_device_ops::m68k_op_tst_8_pi7(m68000_base_device* mc68kcpu)
32201{
32202   UINT32 res = OPER_A7_PI_8(mc68kcpu);
32203
32204   (mc68kcpu)->n_flag = NFLAG_8(res);
32205   (mc68kcpu)->not_z_flag = res;
32206   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32207   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32208}
32209
32210
32211void m68000_base_device_ops::m68k_op_tst_8_pd(m68000_base_device* mc68kcpu)
32212{
32213   UINT32 res = OPER_AY_PD_8(mc68kcpu);
32214
32215   (mc68kcpu)->n_flag = NFLAG_8(res);
32216   (mc68kcpu)->not_z_flag = res;
32217   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32218   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32219}
32220
32221
32222void m68000_base_device_ops::m68k_op_tst_8_pd7(m68000_base_device* mc68kcpu)
32223{
32224   UINT32 res = OPER_A7_PD_8(mc68kcpu);
32225
32226   (mc68kcpu)->n_flag = NFLAG_8(res);
32227   (mc68kcpu)->not_z_flag = res;
32228   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32229   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32230}
32231
32232
32233void m68000_base_device_ops::m68k_op_tst_8_di(m68000_base_device* mc68kcpu)
32234{
32235   UINT32 res = OPER_AY_DI_8(mc68kcpu);
32236
32237   (mc68kcpu)->n_flag = NFLAG_8(res);
32238   (mc68kcpu)->not_z_flag = res;
32239   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32240   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32241}
32242
32243
32244void m68000_base_device_ops::m68k_op_tst_8_ix(m68000_base_device* mc68kcpu)
32245{
32246   UINT32 res = OPER_AY_IX_8(mc68kcpu);
32247
32248   (mc68kcpu)->n_flag = NFLAG_8(res);
32249   (mc68kcpu)->not_z_flag = res;
32250   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32251   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32252}
32253
32254
32255void m68000_base_device_ops::m68k_op_tst_8_aw(m68000_base_device* mc68kcpu)
32256{
32257   UINT32 res = OPER_AW_8(mc68kcpu);
32258
32259   (mc68kcpu)->n_flag = NFLAG_8(res);
32260   (mc68kcpu)->not_z_flag = res;
32261   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32262   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32263}
32264
32265
32266void m68000_base_device_ops::m68k_op_tst_8_al(m68000_base_device* mc68kcpu)
32267{
32268   UINT32 res = OPER_AL_8(mc68kcpu);
32269
32270   (mc68kcpu)->n_flag = NFLAG_8(res);
32271   (mc68kcpu)->not_z_flag = res;
32272   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32273   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32274}
32275
32276
32277void m68000_base_device_ops::m68k_op_tst_8_pcdi(m68000_base_device* mc68kcpu)
32278{
32279   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32280   {
32281      UINT32 res = OPER_PCDI_8(mc68kcpu);
32282
32283      (mc68kcpu)->n_flag = NFLAG_8(res);
32284      (mc68kcpu)->not_z_flag = res;
32285      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32286      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32287      return;
32288   }
32289   m68ki_exception_illegal(mc68kcpu);
32290}
32291
32292
32293void m68000_base_device_ops::m68k_op_tst_8_pcix(m68000_base_device* mc68kcpu)
32294{
32295   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32296   {
32297      UINT32 res = OPER_PCIX_8(mc68kcpu);
32298
32299      (mc68kcpu)->n_flag = NFLAG_8(res);
32300      (mc68kcpu)->not_z_flag = res;
32301      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32302      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32303      return;
32304   }
32305   m68ki_exception_illegal(mc68kcpu);
32306}
32307
32308
32309void m68000_base_device_ops::m68k_op_tst_8_i(m68000_base_device* mc68kcpu)
32310{
32311   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32312   {
32313      UINT32 res = OPER_I_8(mc68kcpu);
32314
32315      (mc68kcpu)->n_flag = NFLAG_8(res);
32316      (mc68kcpu)->not_z_flag = res;
32317      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32318      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32319      return;
32320   }
32321   m68ki_exception_illegal(mc68kcpu);
32322}
32323
32324
32325void m68000_base_device_ops::m68k_op_tst_16_d(m68000_base_device* mc68kcpu)
32326{
32327   UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
32328
32329   (mc68kcpu)->n_flag = NFLAG_16(res);
32330   (mc68kcpu)->not_z_flag = res;
32331   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32332   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32333}
32334
32335
32336void m68000_base_device_ops::m68k_op_tst_16_a(m68000_base_device* mc68kcpu)
32337{
32338   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32339   {
32340      UINT32 res = MAKE_INT_16(AY(mc68kcpu));
32341
32342      (mc68kcpu)->n_flag = NFLAG_16(res);
32343      (mc68kcpu)->not_z_flag = res;
32344      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32345      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32346      return;
32347   }
32348   m68ki_exception_illegal(mc68kcpu);
32349}
32350
32351
32352void m68000_base_device_ops::m68k_op_tst_16_ai(m68000_base_device* mc68kcpu)
32353{
32354   UINT32 res = OPER_AY_AI_16(mc68kcpu);
32355
32356   (mc68kcpu)->n_flag = NFLAG_16(res);
32357   (mc68kcpu)->not_z_flag = res;
32358   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32359   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32360}
32361
32362
32363void m68000_base_device_ops::m68k_op_tst_16_pi(m68000_base_device* mc68kcpu)
32364{
32365   UINT32 res = OPER_AY_PI_16(mc68kcpu);
32366
32367   (mc68kcpu)->n_flag = NFLAG_16(res);
32368   (mc68kcpu)->not_z_flag = res;
32369   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32370   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32371}
32372
32373
32374void m68000_base_device_ops::m68k_op_tst_16_pd(m68000_base_device* mc68kcpu)
32375{
32376   UINT32 res = OPER_AY_PD_16(mc68kcpu);
32377
32378   (mc68kcpu)->n_flag = NFLAG_16(res);
32379   (mc68kcpu)->not_z_flag = res;
32380   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32381   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32382}
32383
32384
32385void m68000_base_device_ops::m68k_op_tst_16_di(m68000_base_device* mc68kcpu)
32386{
32387   UINT32 res = OPER_AY_DI_16(mc68kcpu);
32388
32389   (mc68kcpu)->n_flag = NFLAG_16(res);
32390   (mc68kcpu)->not_z_flag = res;
32391   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32392   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32393}
32394
32395
32396void m68000_base_device_ops::m68k_op_tst_16_ix(m68000_base_device* mc68kcpu)
32397{
32398   UINT32 res = OPER_AY_IX_16(mc68kcpu);
32399
32400   (mc68kcpu)->n_flag = NFLAG_16(res);
32401   (mc68kcpu)->not_z_flag = res;
32402   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32403   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32404}
32405
32406
32407void m68000_base_device_ops::m68k_op_tst_16_aw(m68000_base_device* mc68kcpu)
32408{
32409   UINT32 res = OPER_AW_16(mc68kcpu);
32410
32411   (mc68kcpu)->n_flag = NFLAG_16(res);
32412   (mc68kcpu)->not_z_flag = res;
32413   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32414   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32415}
32416
32417
32418void m68000_base_device_ops::m68k_op_tst_16_al(m68000_base_device* mc68kcpu)
32419{
32420   UINT32 res = OPER_AL_16(mc68kcpu);
32421
32422   (mc68kcpu)->n_flag = NFLAG_16(res);
32423   (mc68kcpu)->not_z_flag = res;
32424   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32425   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32426}
32427
32428
32429void m68000_base_device_ops::m68k_op_tst_16_pcdi(m68000_base_device* mc68kcpu)
32430{
32431   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32432   {
32433      UINT32 res = OPER_PCDI_16(mc68kcpu);
32434
32435      (mc68kcpu)->n_flag = NFLAG_16(res);
32436      (mc68kcpu)->not_z_flag = res;
32437      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32438      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32439      return;
32440   }
32441   m68ki_exception_illegal(mc68kcpu);
32442}
32443
32444
32445void m68000_base_device_ops::m68k_op_tst_16_pcix(m68000_base_device* mc68kcpu)
32446{
32447   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32448   {
32449      UINT32 res = OPER_PCIX_16(mc68kcpu);
32450
32451      (mc68kcpu)->n_flag = NFLAG_16(res);
32452      (mc68kcpu)->not_z_flag = res;
32453      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32454      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32455      return;
32456   }
32457   m68ki_exception_illegal(mc68kcpu);
32458}
32459
32460
32461void m68000_base_device_ops::m68k_op_tst_16_i(m68000_base_device* mc68kcpu)
32462{
32463   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32464   {
32465      UINT32 res = OPER_I_16(mc68kcpu);
32466
32467      (mc68kcpu)->n_flag = NFLAG_16(res);
32468      (mc68kcpu)->not_z_flag = res;
32469      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32470      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32471      return;
32472   }
32473   m68ki_exception_illegal(mc68kcpu);
32474}
32475
32476
32477void m68000_base_device_ops::m68k_op_tst_32_d(m68000_base_device* mc68kcpu)
32478{
32479   UINT32 res = DY(mc68kcpu);
32480
32481   (mc68kcpu)->n_flag = NFLAG_32(res);
32482   (mc68kcpu)->not_z_flag = res;
32483   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32484   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32485}
32486
32487
32488void m68000_base_device_ops::m68k_op_tst_32_a(m68000_base_device* mc68kcpu)
32489{
32490   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32491   {
32492      UINT32 res = AY(mc68kcpu);
32493
32494      (mc68kcpu)->n_flag = NFLAG_32(res);
32495      (mc68kcpu)->not_z_flag = res;
32496      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32497      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32498      return;
32499   }
32500   m68ki_exception_illegal(mc68kcpu);
32501}
32502
32503
32504void m68000_base_device_ops::m68k_op_tst_32_ai(m68000_base_device* mc68kcpu)
32505{
32506   UINT32 res = OPER_AY_AI_32(mc68kcpu);
32507
32508   (mc68kcpu)->n_flag = NFLAG_32(res);
32509   (mc68kcpu)->not_z_flag = res;
32510   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32511   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32512}
32513
32514
32515void m68000_base_device_ops::m68k_op_tst_32_pi(m68000_base_device* mc68kcpu)
32516{
32517   UINT32 res = OPER_AY_PI_32(mc68kcpu);
32518
32519   (mc68kcpu)->n_flag = NFLAG_32(res);
32520   (mc68kcpu)->not_z_flag = res;
32521   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32522   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32523}
32524
32525
32526void m68000_base_device_ops::m68k_op_tst_32_pd(m68000_base_device* mc68kcpu)
32527{
32528   UINT32 res = OPER_AY_PD_32(mc68kcpu);
32529
32530   (mc68kcpu)->n_flag = NFLAG_32(res);
32531   (mc68kcpu)->not_z_flag = res;
32532   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32533   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32534}
32535
32536
32537void m68000_base_device_ops::m68k_op_tst_32_di(m68000_base_device* mc68kcpu)
32538{
32539   UINT32 res = OPER_AY_DI_32(mc68kcpu);
32540
32541   (mc68kcpu)->n_flag = NFLAG_32(res);
32542   (mc68kcpu)->not_z_flag = res;
32543   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32544   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32545}
32546
32547
32548void m68000_base_device_ops::m68k_op_tst_32_ix(m68000_base_device* mc68kcpu)
32549{
32550   UINT32 res = OPER_AY_IX_32(mc68kcpu);
32551
32552   (mc68kcpu)->n_flag = NFLAG_32(res);
32553   (mc68kcpu)->not_z_flag = res;
32554   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32555   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32556}
32557
32558
32559void m68000_base_device_ops::m68k_op_tst_32_aw(m68000_base_device* mc68kcpu)
32560{
32561   UINT32 res = OPER_AW_32(mc68kcpu);
32562
32563   (mc68kcpu)->n_flag = NFLAG_32(res);
32564   (mc68kcpu)->not_z_flag = res;
32565   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32566   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32567}
32568
32569
32570void m68000_base_device_ops::m68k_op_tst_32_al(m68000_base_device* mc68kcpu)
32571{
32572   UINT32 res = OPER_AL_32(mc68kcpu);
32573
32574   (mc68kcpu)->n_flag = NFLAG_32(res);
32575   (mc68kcpu)->not_z_flag = res;
32576   (mc68kcpu)->v_flag = VFLAG_CLEAR;
32577   (mc68kcpu)->c_flag = CFLAG_CLEAR;
32578}
32579
32580
32581void m68000_base_device_ops::m68k_op_tst_32_pcdi(m68000_base_device* mc68kcpu)
32582{
32583   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32584   {
32585      UINT32 res = OPER_PCDI_32(mc68kcpu);
32586
32587      (mc68kcpu)->n_flag = NFLAG_32(res);
32588      (mc68kcpu)->not_z_flag = res;
32589      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32590      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32591      return;
32592   }
32593   m68ki_exception_illegal(mc68kcpu);
32594}
32595
32596
32597void m68000_base_device_ops::m68k_op_tst_32_pcix(m68000_base_device* mc68kcpu)
32598{
32599   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32600   {
32601      UINT32 res = OPER_PCIX_32(mc68kcpu);
32602
32603      (mc68kcpu)->n_flag = NFLAG_32(res);
32604      (mc68kcpu)->not_z_flag = res;
32605      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32606      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32607      return;
32608   }
32609   m68ki_exception_illegal(mc68kcpu);
32610}
32611
32612
32613void m68000_base_device_ops::m68k_op_tst_32_i(m68000_base_device* mc68kcpu)
32614{
32615   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32616   {
32617      UINT32 res = OPER_I_32(mc68kcpu);
32618
32619      (mc68kcpu)->n_flag = NFLAG_32(res);
32620      (mc68kcpu)->not_z_flag = res;
32621      (mc68kcpu)->v_flag = VFLAG_CLEAR;
32622      (mc68kcpu)->c_flag = CFLAG_CLEAR;
32623      return;
32624   }
32625   m68ki_exception_illegal(mc68kcpu);
32626}
32627
32628
32629void m68000_base_device_ops::m68k_op_unlk_32_a7(m68000_base_device* mc68kcpu)
32630{
32631   REG_A(mc68kcpu)[7] = m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[7]);
32632}
32633
32634
32635void m68000_base_device_ops::m68k_op_unlk_32(m68000_base_device* mc68kcpu)
32636{
32637   UINT32* r_dst = &AY(mc68kcpu);
32638
32639   REG_A(mc68kcpu)[7] = *r_dst;
32640   *r_dst = m68ki_pull_32(mc68kcpu);
32641}
32642
32643
32644void m68000_base_device_ops::m68k_op_unpk_16_rr(m68000_base_device* mc68kcpu)
32645{
32646   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32647   {
32648      /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
32649      UINT32 src = DY(mc68kcpu);
32650      UINT32* r_dst = &DX(mc68kcpu);
32651
32652      *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu)) & 0xffff);
32653      return;
32654   }
32655   m68ki_exception_illegal(mc68kcpu);
32656}
32657
32658
32659void m68000_base_device_ops::m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu)
32660{
32661   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32662   {
32663      /* Note: AX and AY are reversed in Motorola's docs */
32664      UINT32 src = OPER_AY_PD_8(mc68kcpu);
32665      UINT32 ea_dst;
32666
32667      src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
32668      ea_dst = EA_A7_PD_8(mc68kcpu);
32669      m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
32670      ea_dst = EA_A7_PD_8(mc68kcpu);
32671      m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
32672      return;
32673   }
32674   m68ki_exception_illegal(mc68kcpu);
32675}
32676
32677
32678void m68000_base_device_ops::m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu)
32679{
32680   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32681   {
32682      /* Note: AX and AY are reversed in Motorola's docs */
32683      UINT32 src = OPER_A7_PD_8(mc68kcpu);
32684      UINT32 ea_dst;
32685
32686      src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
32687      ea_dst = EA_AX_PD_8(mc68kcpu);
32688      m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
32689      ea_dst = EA_AX_PD_8(mc68kcpu);
32690      m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
32691      return;
32692   }
32693   m68ki_exception_illegal(mc68kcpu);
32694}
32695
32696
32697void m68000_base_device_ops::m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcpu)
32698{
32699   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32700   {
32701      UINT32 src = OPER_A7_PD_8(mc68kcpu);
32702      UINT32 ea_dst;
32703
32704      src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
32705      ea_dst = EA_A7_PD_8(mc68kcpu);
32706      m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
32707      ea_dst = EA_A7_PD_8(mc68kcpu);
32708      m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
32709      return;
32710   }
32711   m68ki_exception_illegal(mc68kcpu);
32712}
32713
32714
32715void m68000_base_device_ops::m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu)
32716{
32717   if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
32718   {
32719      /* Note: AX and AY are reversed in Motorola's docs */
32720      UINT32 src = OPER_AY_PD_8(mc68kcpu);
32721      UINT32 ea_dst;
32722
32723      src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
32724      ea_dst = EA_AX_PD_8(mc68kcpu);
32725      m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
32726      ea_dst = EA_AX_PD_8(mc68kcpu);
32727      m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
32728      return;
32729   }
32730   m68ki_exception_illegal(mc68kcpu);
32731}
32732
32733
32734void m68000_base_device_ops::m68k_op_cinv_32(m68000_base_device* mc68kcpu)
32735{
32736   if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
32737   {
32738      UINT16 ir = mc68kcpu->ir;
32739      UINT8 cache = (ir >> 6) & 3;
32740//      UINT8 scope = (ir >> 3) & 3;
32741//      logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7);
32742      switch (cache)
32743      {
32744      case 2:
32745      case 3:
32746         // we invalidate/push the whole instruction cache
32747         m68ki_ic_clear(mc68kcpu);
32748      }
32749      return;
32750   }
32751   m68ki_exception_1111(mc68kcpu);
32752}
32753
32754
32755void m68000_base_device_ops::m68k_op_cpush_32(m68000_base_device* mc68kcpu)
32756{
32757   if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
32758   {
32759      logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
32760                  (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
32761      return;
32762   }
32763   m68ki_exception_1111(mc68kcpu);
32764}
32765
32766
32767/* ======================================================================== */
32768/* ============================== END OF FILE ============================= */
32769/* ======================================================================== */
32770
32771
32772/* ======================================================================== */
32773/* ========================= OPCODE TABLE BUILDER ========================= */
32774/* ======================================================================== */
32775
32776#include "m68kops.h"
32777
32778#define NUM_CPU_TYPES 7
32779
32780void (*m68ki_instruction_jump_table[NUM_CPU_TYPES][0x10000])(m68000_base_device *m68k); /* opcode handler jump table */
32781unsigned char m68ki_cycles[NUM_CPU_TYPES][0x10000]; /* Cycles used by CPU type */
32782
32783/* This is used to generate the opcode handler jump table */
32784struct opcode_handler_struct
32785{
32786   void (*opcode_handler)(m68000_base_device *m68k);        /* handler function */
32787   unsigned int  mask;                  /* mask on opcode */
32788   unsigned int  match;                 /* what to match after masking */
32789   unsigned char cycles[NUM_CPU_TYPES]; /* cycles each cpu type takes */
32790};
32791
32792
32793/* Opcode handler table */
32794static const opcode_handler_struct m68k_opcode_handler_table[] =
32795{
32796/*   function                      mask    match    000  010  020  040 */
32797
32798
32799   {m68000_base_device_ops::m68k_op_1010, 0xf000, 0xa000, {  4,   4,   4,   4,   4,   4,   4}},
32800   {m68000_base_device_ops::m68k_op_1111, 0xf000, 0xf000, {  4,   4,   4,   4,   4,   4,   4}},
32801   {m68000_base_device_ops::m68k_op_moveq_32, 0xf100, 0x7000, {  4,   4,   2,   2,   2,   2,   2}},
32802   {m68000_base_device_ops::m68k_op_cpbcc_32, 0xf180, 0xf080, {255, 255,   4,   4, 255, 255, 255}},
32803   {m68000_base_device_ops::m68k_op_cpgen_32, 0xf1c0, 0xf000, {255, 255,   4,   4, 255, 255, 255}},
32804   {m68000_base_device_ops::m68k_op_cpscc_32, 0xf1c0, 0xf040, {255, 255,   4,   4, 255, 255, 255}},
32805   {m68000_base_device_ops::m68k_op_pmmu_32, 0xfe00, 0xf000, {255, 255,   8,   8,   8,   8,   8}},
32806   {m68000_base_device_ops::m68k_op_bra_8, 0xff00, 0x6000, { 10,  10,  10,  10,  10,  10,  10}},
32807   {m68000_base_device_ops::m68k_op_bsr_8, 0xff00, 0x6100, { 18,  18,   7,   7,   7,   7,   7}},
32808   {m68000_base_device_ops::m68k_op_bhi_8, 0xff00, 0x6200, { 10,  10,   6,   6,   6,   6,   6}},
32809   {m68000_base_device_ops::m68k_op_bls_8, 0xff00, 0x6300, { 10,  10,   6,   6,   6,   6,   6}},
32810   {m68000_base_device_ops::m68k_op_bcc_8, 0xff00, 0x6400, { 10,  10,   6,   6,   6,   6,   6}},
32811   {m68000_base_device_ops::m68k_op_bcs_8, 0xff00, 0x6500, { 10,  10,   6,   6,   6,   6,   6}},
32812   {m68000_base_device_ops::m68k_op_bne_8, 0xff00, 0x6600, { 10,  10,   6,   6,   6,   6,   6}},
32813   {m68000_base_device_ops::m68k_op_beq_8, 0xff00, 0x6700, { 10,  10,   6,   6,   6,   6,   6}},
32814   {m68000_base_device_ops::m68k_op_bvc_8, 0xff00, 0x6800, { 10,  10,   6,   6,   6,   6,   6}},
32815   {m68000_base_device_ops::m68k_op_bvs_8, 0xff00, 0x6900, { 10,  10,   6,   6,   6,   6,   6}},
32816   {m68000_base_device_ops::m68k_op_bpl_8, 0xff00, 0x6a00, { 10,  10,   6,   6,   6,   6,   6}},
32817   {m68000_base_device_ops::m68k_op_bmi_8, 0xff00, 0x6b00, { 10,  10,   6,   6,   6,   6,   6}},
32818   {m68000_base_device_ops::m68k_op_bge_8, 0xff00, 0x6c00, { 10,  10,   6,   6,   6,   6,   6}},
32819   {m68000_base_device_ops::m68k_op_blt_8, 0xff00, 0x6d00, { 10,  10,   6,   6,   6,   6,   6}},
32820   {m68000_base_device_ops::m68k_op_bgt_8, 0xff00, 0x6e00, { 10,  10,   6,   6,   6,   6,   6}},
32821   {m68000_base_device_ops::m68k_op_ble_8, 0xff00, 0x6f00, { 10,  10,   6,   6,   6,   6,   6}},
32822   {m68000_base_device_ops::m68k_op_040fpu0_32, 0xff00, 0xf200, {255, 255,   0,   0,   0,   0, 255}},
32823   {m68000_base_device_ops::m68k_op_040fpu1_32, 0xff00, 0xf300, {255, 255,   0,   0,   0,   0, 255}},
32824   {m68000_base_device_ops::m68k_op_cinv_32, 0xff20, 0xf400, {255, 255, 255, 255,  16, 255, 255}},
32825   {m68000_base_device_ops::m68k_op_cpush_32, 0xff20, 0xf420, {255, 255, 255, 255,  16, 255, 255}},
32826   {m68000_base_device_ops::m68k_op_btst_32_r_d, 0xf1f8, 0x0100, {  6,   6,   4,   4,   4,   4,   4}},
32827   {m68000_base_device_ops::m68k_op_movep_16_er, 0xf1f8, 0x0108, { 16,  16,  12,  12,  12,  12,  12}},
32828   {m68000_base_device_ops::m68k_op_btst_8_r_ai, 0xf1f8, 0x0110, {  8,   8,   8,   8,   8,   8,   4}},
32829   {m68000_base_device_ops::m68k_op_btst_8_r_pi, 0xf1f8, 0x0118, {  8,   8,   8,   8,   8,   8,   4}},
32830   {m68000_base_device_ops::m68k_op_btst_8_r_pd, 0xf1f8, 0x0120, { 10,  10,   9,   9,   9,   9,   4}},
32831   {m68000_base_device_ops::m68k_op_btst_8_r_di, 0xf1f8, 0x0128, { 12,  12,   9,   9,   9,   9,   4}},
32832   {m68000_base_device_ops::m68k_op_btst_8_r_ix, 0xf1f8, 0x0130, { 14,  14,  11,  11,  11,  11,   4}},
32833   {m68000_base_device_ops::m68k_op_bchg_32_r_d, 0xf1f8, 0x0140, {  8,   8,   4,   4,   4,   4,   4}},
32834   {m68000_base_device_ops::m68k_op_movep_32_er, 0xf1f8, 0x0148, { 24,  24,  18,  18,  18,  18,  18}},
32835   {m68000_base_device_ops::m68k_op_bchg_8_r_ai, 0xf1f8, 0x0150, { 12,  12,   8,   8,   8,   8,   4}},
32836   {m68000_base_device_ops::m68k_op_bchg_8_r_pi, 0xf1f8, 0x0158, { 12,  12,   8,   8,   8,   8,   4}},
32837   {m68000_base_device_ops::m68k_op_bchg_8_r_pd, 0xf1f8, 0x0160, { 14,  14,   9,   9,   9,   9,   4}},
32838   {m68000_base_device_ops::m68k_op_bchg_8_r_di, 0xf1f8, 0x0168, { 16,  16,   9,   9,   9,   9,   4}},
32839   {m68000_base_device_ops::m68k_op_bchg_8_r_ix, 0xf1f8, 0x0170, { 18,  18,  11,  11,  11,  11,   4}},
32840   {m68000_base_device_ops::m68k_op_bclr_32_r_d, 0xf1f8, 0x0180, { 10,  10,   4,   4,   4,   4,   4}},
32841   {m68000_base_device_ops::m68k_op_movep_16_re, 0xf1f8, 0x0188, { 16,  16,  11,  11,  11,  11,  11}},
32842   {m68000_base_device_ops::m68k_op_bclr_8_r_ai, 0xf1f8, 0x0190, { 12,  14,   8,   8,   8,   8,   4}},
32843   {m68000_base_device_ops::m68k_op_bclr_8_r_pi, 0xf1f8, 0x0198, { 12,  14,   8,   8,   8,   8,   4}},
32844   {m68000_base_device_ops::m68k_op_bclr_8_r_pd, 0xf1f8, 0x01a0, { 14,  16,   9,   9,   9,   9,   4}},
32845   {m68000_base_device_ops::m68k_op_bclr_8_r_di, 0xf1f8, 0x01a8, { 16,  18,   9,   9,   9,   9,   4}},
32846   {m68000_base_device_ops::m68k_op_bclr_8_r_ix, 0xf1f8, 0x01b0, { 18,  20,  11,  11,  11,  11,   4}},
32847   {m68000_base_device_ops::m68k_op_bset_32_r_d, 0xf1f8, 0x01c0, {  8,   8,   4,   4,   4,   4,   4}},
32848   {m68000_base_device_ops::m68k_op_movep_32_re, 0xf1f8, 0x01c8, { 24,  24,  17,  17,  17,  17,  17}},
32849   {m68000_base_device_ops::m68k_op_bset_8_r_ai, 0xf1f8, 0x01d0, { 12,  12,   8,   8,   8,   8,   4}},
32850   {m68000_base_device_ops::m68k_op_bset_8_r_pi, 0xf1f8, 0x01d8, { 12,  12,   8,   8,   8,   8,   4}},
32851   {m68000_base_device_ops::m68k_op_bset_8_r_pd, 0xf1f8, 0x01e0, { 14,  14,   9,   9,   9,   9,   4}},
32852   {m68000_base_device_ops::m68k_op_bset_8_r_di, 0xf1f8, 0x01e8, { 16,  16,   9,   9,   9,   9,   4}},
32853   {m68000_base_device_ops::m68k_op_bset_8_r_ix, 0xf1f8, 0x01f0, { 18,  18,  11,  11,  11,  11,   4}},
32854   {m68000_base_device_ops::m68k_op_move_8_d_d, 0xf1f8, 0x1000, {  4,   4,   2,   2,   2,   2,   2}},
32855   {m68000_base_device_ops::m68k_op_move_8_d_ai, 0xf1f8, 0x1010, {  8,   8,   6,   6,   6,   6,   2}},
32856   {m68000_base_device_ops::m68k_op_move_8_d_pi, 0xf1f8, 0x1018, {  8,   8,   6,   6,   6,   6,   2}},
32857   {m68000_base_device_ops::m68k_op_move_8_d_pd, 0xf1f8, 0x1020, { 10,  10,   7,   7,   7,   7,   2}},
32858   {m68000_base_device_ops::m68k_op_move_8_d_di, 0xf1f8, 0x1028, { 12,  12,   7,   7,   7,   7,   2}},
32859   {m68000_base_device_ops::m68k_op_move_8_d_ix, 0xf1f8, 0x1030, { 14,  14,   9,   9,   9,   9,   2}},
32860   {m68000_base_device_ops::m68k_op_move_8_ai_d, 0xf1f8, 0x1080, {  8,   8,   4,   4,   4,   4,   4}},
32861   {m68000_base_device_ops::m68k_op_move_8_ai_ai, 0xf1f8, 0x1090, { 12,  12,   8,   8,   8,   8,   4}},
32862   {m68000_base_device_ops::m68k_op_move_8_ai_pi, 0xf1f8, 0x1098, { 12,  12,   8,   8,   8,   8,   4}},
32863   {m68000_base_device_ops::m68k_op_move_8_ai_pd, 0xf1f8, 0x10a0, { 14,  14,   9,   9,   9,   9,   4}},
32864   {m68000_base_device_ops::m68k_op_move_8_ai_di, 0xf1f8, 0x10a8, { 16,  16,   9,   9,   9,   9,   4}},
32865   {m68000_base_device_ops::m68k_op_move_8_ai_ix, 0xf1f8, 0x10b0, { 18,  18,  11,  11,  11,  11,   4}},
32866   {m68000_base_device_ops::m68k_op_move_8_pi_d, 0xf1f8, 0x10c0, {  8,   8,   4,   4,   4,   4,   4}},
32867   {m68000_base_device_ops::m68k_op_move_8_pi_ai, 0xf1f8, 0x10d0, { 12,  12,   8,   8,   8,   8,   4}},
32868   {m68000_base_device_ops::m68k_op_move_8_pi_pi, 0xf1f8, 0x10d8, { 12,  12,   8,   8,   8,   8,   4}},
32869   {m68000_base_device_ops::m68k_op_move_8_pi_pd, 0xf1f8, 0x10e0, { 14,  14,   9,   9,   9,   9,   4}},
32870   {m68000_base_device_ops::m68k_op_move_8_pi_di, 0xf1f8, 0x10e8, { 16,  16,   9,   9,   9,   9,   4}},
32871   {m68000_base_device_ops::m68k_op_move_8_pi_ix, 0xf1f8, 0x10f0, { 18,  18,  11,  11,  11,  11,   4}},
32872   {m68000_base_device_ops::m68k_op_move_8_pd_d, 0xf1f8, 0x1100, {  8,   8,   5,   5,   5,   5,   5}},
32873   {m68000_base_device_ops::m68k_op_move_8_pd_ai, 0xf1f8, 0x1110, { 12,  12,   9,   9,   9,   9,   5}},
32874   {m68000_base_device_ops::m68k_op_move_8_pd_pi, 0xf1f8, 0x1118, { 12,  12,   9,   9,   9,   9,   5}},
32875   {m68000_base_device_ops::m68k_op_move_8_pd_pd, 0xf1f8, 0x1120, { 14,  14,  10,  10,  10,  10,   5}},
32876   {m68000_base_device_ops::m68k_op_move_8_pd_di, 0xf1f8, 0x1128, { 16,  16,  10,  10,  10,  10,   5}},
32877   {m68000_base_device_ops::m68k_op_move_8_pd_ix, 0xf1f8, 0x1130, { 18,  18,  12,  12,  12,  12,   5}},
32878   {m68000_base_device_ops::m68k_op_move_8_di_d, 0xf1f8, 0x1140, { 12,  12,   5,   5,   5,   5,   5}},
32879   {m68000_base_device_ops::m68k_op_move_8_di_ai, 0xf1f8, 0x1150, { 16,  16,   9,   9,   9,   9,   5}},
32880   {m68000_base_device_ops::m68k_op_move_8_di_pi, 0xf1f8, 0x1158, { 16,  16,   9,   9,   9,   9,   5}},
32881   {m68000_base_device_ops::m68k_op_move_8_di_pd, 0xf1f8, 0x1160, { 18,  18,  10,  10,  10,  10,   5}},
32882   {m68000_base_device_ops::m68k_op_move_8_di_di, 0xf1f8, 0x1168, { 20,  20,  10,  10,  10,  10,   5}},
32883   {m68000_base_device_ops::m68k_op_move_8_di_ix, 0xf1f8, 0x1170, { 22,  22,  12,  12,  12,  12,   5}},
32884   {m68000_base_device_ops::m68k_op_move_8_ix_d, 0xf1f8, 0x1180, { 14,  14,   7,   7,   7,   7,   7}},
32885   {m68000_base_device_ops::m68k_op_move_8_ix_ai, 0xf1f8, 0x1190, { 18,  18,  11,  11,  11,  11,   7}},
32886   {m68000_base_device_ops::m68k_op_move_8_ix_pi, 0xf1f8, 0x1198, { 18,  18,  11,  11,  11,  11,   7}},
32887   {m68000_base_device_ops::m68k_op_move_8_ix_pd, 0xf1f8, 0x11a0, { 20,  20,  12,  12,  12,  12,   7}},
32888   {m68000_base_device_ops::m68k_op_move_8_ix_di, 0xf1f8, 0x11a8, { 22,  22,  12,  12,  12,  12,   7}},
32889   {m68000_base_device_ops::m68k_op_move_8_ix_ix, 0xf1f8, 0x11b0, { 24,  24,  14,  14,  14,  14,   7}},
32890   {m68000_base_device_ops::m68k_op_move_32_d_d, 0xf1f8, 0x2000, {  4,   4,   2,   2,   2,   2,   2}},
32891   {m68000_base_device_ops::m68k_op_move_32_d_a, 0xf1f8, 0x2008, {  4,   4,   2,   2,   2,   2,   2}},
32892   {m68000_base_device_ops::m68k_op_move_32_d_ai, 0xf1f8, 0x2010, { 12,  12,   6,   6,   6,   6,   2}},
32893   {m68000_base_device_ops::m68k_op_move_32_d_pi, 0xf1f8, 0x2018, { 12,  12,   6,   6,   6,   6,   2}},
32894   {m68000_base_device_ops::m68k_op_move_32_d_pd, 0xf1f8, 0x2020, { 14,  14,   7,   7,   7,   7,   2}},
32895   {m68000_base_device_ops::m68k_op_move_32_d_di, 0xf1f8, 0x2028, { 16,  16,   7,   7,   7,   7,   2}},
32896   {m68000_base_device_ops::m68k_op_move_32_d_ix, 0xf1f8, 0x2030, { 18,  18,   9,   9,   9,   9,   2}},
32897   {m68000_base_device_ops::m68k_op_movea_32_d, 0xf1f8, 0x2040, {  4,   4,   2,   2,   2,   2,   2}},
32898   {m68000_base_device_ops::m68k_op_movea_32_a, 0xf1f8, 0x2048, {  4,   4,   2,   2,   2,   2,   2}},
32899   {m68000_base_device_ops::m68k_op_movea_32_ai, 0xf1f8, 0x2050, { 12,  12,   6,   6,   6,   6,   2}},
32900   {m68000_base_device_ops::m68k_op_movea_32_pi, 0xf1f8, 0x2058, { 12,  12,   6,   6,   6,   6,   2}},
32901   {m68000_base_device_ops::m68k_op_movea_32_pd, 0xf1f8, 0x2060, { 14,  14,   7,   7,   7,   7,   2}},
32902   {m68000_base_device_ops::m68k_op_movea_32_di, 0xf1f8, 0x2068, { 16,  16,   7,   7,   7,   7,   2}},
32903   {m68000_base_device_ops::m68k_op_movea_32_ix, 0xf1f8, 0x2070, { 18,  18,   9,   9,   9,   9,   2}},
32904   {m68000_base_device_ops::m68k_op_move_32_ai_d, 0xf1f8, 0x2080, { 12,  12,   4,   4,   4,   4,   4}},
32905   {m68000_base_device_ops::m68k_op_move_32_ai_a, 0xf1f8, 0x2088, { 12,  12,   4,   4,   4,   4,   4}},
32906   {m68000_base_device_ops::m68k_op_move_32_ai_ai, 0xf1f8, 0x2090, { 20,  20,   8,   8,   8,   8,   4}},
32907   {m68000_base_device_ops::m68k_op_move_32_ai_pi, 0xf1f8, 0x2098, { 20,  20,   8,   8,   8,   8,   4}},
32908   {m68000_base_device_ops::m68k_op_move_32_ai_pd, 0xf1f8, 0x20a0, { 22,  22,   9,   9,   9,   9,   4}},
32909   {m68000_base_device_ops::m68k_op_move_32_ai_di, 0xf1f8, 0x20a8, { 24,  24,   9,   9,   9,   9,   4}},
32910   {m68000_base_device_ops::m68k_op_move_32_ai_ix, 0xf1f8, 0x20b0, { 26,  26,  11,  11,  11,  11,   4}},
32911   {m68000_base_device_ops::m68k_op_move_32_pi_d, 0xf1f8, 0x20c0, { 12,  12,   4,   4,   4,   4,   4}},
32912   {m68000_base_device_ops::m68k_op_move_32_pi_a, 0xf1f8, 0x20c8, { 12,  12,   4,   4,   4,   4,   4}},
32913   {m68000_base_device_ops::m68k_op_move_32_pi_ai, 0xf1f8, 0x20d0, { 20,  20,   8,   8,   8,   8,   4}},
32914   {m68000_base_device_ops::m68k_op_move_32_pi_pi, 0xf1f8, 0x20d8, { 20,  20,   8,   8,   8,   8,   4}},
32915   {m68000_base_device_ops::m68k_op_move_32_pi_pd, 0xf1f8, 0x20e0, { 22,  22,   9,   9,   9,   9,   4}},
32916   {m68000_base_device_ops::m68k_op_move_32_pi_di, 0xf1f8, 0x20e8, { 24,  24,   9,   9,   9,   9,   4}},
32917   {m68000_base_device_ops::m68k_op_move_32_pi_ix, 0xf1f8, 0x20f0, { 26,  26,  11,  11,  11,  11,   4}},
32918   {m68000_base_device_ops::m68k_op_move_32_pd_d, 0xf1f8, 0x2100, { 12,  14,   5,   5,   5,   5,   5}},
32919   {m68000_base_device_ops::m68k_op_move_32_pd_a, 0xf1f8, 0x2108, { 12,  14,   5,   5,   5,   5,   5}},
32920   {m68000_base_device_ops::m68k_op_move_32_pd_ai, 0xf1f8, 0x2110, { 20,  22,   9,   9,   9,   9,   5}},
32921   {m68000_base_device_ops::m68k_op_move_32_pd_pi, 0xf1f8, 0x2118, { 20,  22,   9,   9,   9,   9,   5}},
32922   {m68000_base_device_ops::m68k_op_move_32_pd_pd, 0xf1f8, 0x2120, { 22,  24,  10,  10,  10,  10,   5}},
32923   {m68000_base_device_ops::m68k_op_move_32_pd_di, 0xf1f8, 0x2128, { 24,  26,  10,  10,  10,  10,   5}},
32924   {m68000_base_device_ops::m68k_op_move_32_pd_ix, 0xf1f8, 0x2130, { 26,  28,  12,  12,  12,  12,   5}},
32925   {m68000_base_device_ops::m68k_op_move_32_di_d, 0xf1f8, 0x2140, { 16,  16,   5,   5,   5,   5,   5}},
32926   {m68000_base_device_ops::m68k_op_move_32_di_a, 0xf1f8, 0x2148, { 16,  16,   5,   5,   5,   5,   5}},
32927   {m68000_base_device_ops::m68k_op_move_32_di_ai, 0xf1f8, 0x2150, { 24,  24,   9,   9,   9,   9,   5}},
32928   {m68000_base_device_ops::m68k_op_move_32_di_pi, 0xf1f8, 0x2158, { 24,  24,   9,   9,   9,   9,   5}},
32929   {m68000_base_device_ops::m68k_op_move_32_di_pd, 0xf1f8, 0x2160, { 26,  26,  10,  10,  10,  10,   5}},
32930   {m68000_base_device_ops::m68k_op_move_32_di_di, 0xf1f8, 0x2168, { 28,  28,  10,  10,  10,  10,   5}},
32931   {m68000_base_device_ops::m68k_op_move_32_di_ix, 0xf1f8, 0x2170, { 30,  30,  12,  12,  12,  12,   5}},
32932   {m68000_base_device_ops::m68k_op_move_32_ix_d, 0xf1f8, 0x2180, { 18,  18,   7,   7,   7,   7,   7}},
32933   {m68000_base_device_ops::m68k_op_move_32_ix_a, 0xf1f8, 0x2188, { 18,  18,   7,   7,   7,   7,   7}},
32934   {m68000_base_device_ops::m68k_op_move_32_ix_ai, 0xf1f8, 0x2190, { 26,  26,  11,  11,  11,  11,   7}},
32935   {m68000_base_device_ops::m68k_op_move_32_ix_pi, 0xf1f8, 0x2198, { 26,  26,  11,  11,  11,  11,   7}},
32936   {m68000_base_device_ops::m68k_op_move_32_ix_pd, 0xf1f8, 0x21a0, { 28,  28,  12,  12,  12,  12,   7}},
32937   {m68000_base_device_ops::m68k_op_move_32_ix_di, 0xf1f8, 0x21a8, { 30,  30,  12,  12,  12,  12,   7}},
32938   {m68000_base_device_ops::m68k_op_move_32_ix_ix, 0xf1f8, 0x21b0, { 32,  32,  14,  14,  14,  14,   7}},
32939   {m68000_base_device_ops::m68k_op_move_16_d_d, 0xf1f8, 0x3000, {  4,   4,   2,   2,   2,   2,   2}},
32940   {m68000_base_device_ops::m68k_op_move_16_d_a, 0xf1f8, 0x3008, {  4,   4,   2,   2,   2,   2,   2}},
32941   {m68000_base_device_ops::m68k_op_move_16_d_ai, 0xf1f8, 0x3010, {  8,   8,   6,   6,   6,   6,   2}},
32942   {m68000_base_device_ops::m68k_op_move_16_d_pi, 0xf1f8, 0x3018, {  8,   8,   6,   6,   6,   6,   2}},
32943   {m68000_base_device_ops::m68k_op_move_16_d_pd, 0xf1f8, 0x3020, { 10,  10,   7,   7,   7,   7,   2}},
32944   {m68000_base_device_ops::m68k_op_move_16_d_di, 0xf1f8, 0x3028, { 12,  12,   7,   7,   7,   7,   2}},
32945   {m68000_base_device_ops::m68k_op_move_16_d_ix, 0xf1f8, 0x3030, { 14,  14,   9,   9,   9,   9,   2}},
32946   {m68000_base_device_ops::m68k_op_movea_16_d, 0xf1f8, 0x3040, {  4,   4,   2,   2,   2,   2,   2}},
32947   {m68000_base_device_ops::m68k_op_movea_16_a, 0xf1f8, 0x3048, {  4,   4,   2,   2,   2,   2,   2}},
32948   {m68000_base_device_ops::m68k_op_movea_16_ai, 0xf1f8, 0x3050, {  8,   8,   6,   6,   6,   6,   2}},
32949   {m68000_base_device_ops::m68k_op_movea_16_pi, 0xf1f8, 0x3058, {  8,   8,   6,   6,   6,   6,   2}},
32950   {m68000_base_device_ops::m68k_op_movea_16_pd, 0xf1f8, 0x3060, { 10,  10,   7,   7,   7,   7,   2}},
32951   {m68000_base_device_ops::m68k_op_movea_16_di, 0xf1f8, 0x3068, { 12,  12,   7,   7,   7,   7,   2}},
32952   {m68000_base_device_ops::m68k_op_movea_16_ix, 0xf1f8, 0x3070, { 14,  14,   9,   9,   9,   9,   2}},
32953   {m68000_base_device_ops::m68k_op_move_16_ai_d, 0xf1f8, 0x3080, {  8,   8,   4,   4,   4,   4,   4}},
32954   {m68000_base_device_ops::m68k_op_move_16_ai_a, 0xf1f8, 0x3088, {  8,   8,   4,   4,   4,   4,   4}},
32955   {m68000_base_device_ops::m68k_op_move_16_ai_ai, 0xf1f8, 0x3090, { 12,  12,   8,   8,   8,   8,   4}},
32956   {m68000_base_device_ops::m68k_op_move_16_ai_pi, 0xf1f8, 0x3098, { 12,  12,   8,   8,   8,   8,   4}},
32957   {m68000_base_device_ops::m68k_op_move_16_ai_pd, 0xf1f8, 0x30a0, { 14,  14,   9,   9,   9,   9,   4}},
32958   {m68000_base_device_ops::m68k_op_move_16_ai_di, 0xf1f8, 0x30a8, { 16,  16,   9,   9,   9,   9,   4}},
32959   {m68000_base_device_ops::m68k_op_move_16_ai_ix, 0xf1f8, 0x30b0, { 18,  18,  11,  11,  11,  11,   4}},
32960   {m68000_base_device_ops::m68k_op_move_16_pi_d, 0xf1f8, 0x30c0, {  8,   8,   4,   4,   4,   4,   4}},
32961   {m68000_base_device_ops::m68k_op_move_16_pi_a, 0xf1f8, 0x30c8, {  8,   8,   4,   4,   4,   4,   4}},
32962   {m68000_base_device_ops::m68k_op_move_16_pi_ai, 0xf1f8, 0x30d0, { 12,  12,   8,   8,   8,   8,   4}},
32963   {m68000_base_device_ops::m68k_op_move_16_pi_pi, 0xf1f8, 0x30d8, { 12,  12,   8,   8,   8,   8,   4}},
32964   {m68000_base_device_ops::m68k_op_move_16_pi_pd, 0xf1f8, 0x30e0, { 14,  14,   9,   9,   9,   9,   4}},
32965   {m68000_base_device_ops::m68k_op_move_16_pi_di, 0xf1f8, 0x30e8, { 16,  16,   9,   9,   9,   9,   4}},
32966   {m68000_base_device_ops::m68k_op_move_16_pi_ix, 0xf1f8, 0x30f0, { 18,  18,  11,  11,  11,  11,   4}},
32967   {m68000_base_device_ops::m68k_op_move_16_pd_d, 0xf1f8, 0x3100, {  8,   8,   5,   5,   5,   5,   5}},
32968   {m68000_base_device_ops::m68k_op_move_16_pd_a, 0xf1f8, 0x3108, {  8,   8,   5,   5,   5,   5,   5}},
32969   {m68000_base_device_ops::m68k_op_move_16_pd_ai, 0xf1f8, 0x3110, { 12,  12,   9,   9,   9,   9,   5}},
32970   {m68000_base_device_ops::m68k_op_move_16_pd_pi, 0xf1f8, 0x3118, { 12,  12,   9,   9,   9,   9,   5}},
32971   {m68000_base_device_ops::m68k_op_move_16_pd_pd, 0xf1f8, 0x3120, { 14,  14,  10,  10,  10,  10,   5}},
32972   {m68000_base_device_ops::m68k_op_move_16_pd_di, 0xf1f8, 0x3128, { 16,  16,  10,  10,  10,  10,   5}},
32973   {m68000_base_device_ops::m68k_op_move_16_pd_ix, 0xf1f8, 0x3130, { 18,  18,  12,  12,  12,  12,   5}},
32974   {m68000_base_device_ops::m68k_op_move_16_di_d, 0xf1f8, 0x3140, { 12,  12,   5,   5,   5,   5,   5}},
32975   {m68000_base_device_ops::m68k_op_move_16_di_a, 0xf1f8, 0x3148, { 12,  12,   5,   5,   5,   5,   5}},
32976   {m68000_base_device_ops::m68k_op_move_16_di_ai, 0xf1f8, 0x3150, { 16,  16,   9,   9,   9,   9,   5}},
32977   {m68000_base_device_ops::m68k_op_move_16_di_pi, 0xf1f8, 0x3158, { 16,  16,   9,   9,   9,   9,   5}},
32978   {m68000_base_device_ops::m68k_op_move_16_di_pd, 0xf1f8, 0x3160, { 18,  18,  10,  10,  10,  10,   5}},
32979   {m68000_base_device_ops::m68k_op_move_16_di_di, 0xf1f8, 0x3168, { 20,  20,  10,  10,  10,  10,   5}},
32980   {m68000_base_device_ops::m68k_op_move_16_di_ix, 0xf1f8, 0x3170, { 22,  22,  12,  12,  12,  12,   5}},
32981   {m68000_base_device_ops::m68k_op_move_16_ix_d, 0xf1f8, 0x3180, { 14,  14,   7,   7,   7,   7,   7}},
32982   {m68000_base_device_ops::m68k_op_move_16_ix_a, 0xf1f8, 0x3188, { 14,  14,   7,   7,   7,   7,   7}},
32983   {m68000_base_device_ops::m68k_op_move_16_ix_ai, 0xf1f8, 0x3190, { 18,  18,  11,  11,  11,  11,   7}},
32984   {m68000_base_device_ops::m68k_op_move_16_ix_pi, 0xf1f8, 0x3198, { 18,  18,  11,  11,  11,  11,   7}},
32985   {m68000_base_device_ops::m68k_op_move_16_ix_pd, 0xf1f8, 0x31a0, { 20,  20,  12,  12,  12,  12,   7}},
32986   {m68000_base_device_ops::m68k_op_move_16_ix_di, 0xf1f8, 0x31a8, { 22,  22,  12,  12,  12,  12,   7}},
32987   {m68000_base_device_ops::m68k_op_move_16_ix_ix, 0xf1f8, 0x31b0, { 24,  24,  14,  14,  14,  14,   7}},
32988   {m68000_base_device_ops::m68k_op_chk_32_d, 0xf1f8, 0x4100, {255, 255,   8,   8,   8,   8,   8}},
32989   {m68000_base_device_ops::m68k_op_chk_32_ai, 0xf1f8, 0x4110, {255, 255,  12,  12,  12,  12,   8}},
32990   {m68000_base_device_ops::m68k_op_chk_32_pi, 0xf1f8, 0x4118, {255, 255,  12,  12,  12,  12,   8}},
32991   {m68000_base_device_ops::m68k_op_chk_32_pd, 0xf1f8, 0x4120, {255, 255,  13,  13,  13,  13,   8}},
32992   {m68000_base_device_ops::m68k_op_chk_32_di, 0xf1f8, 0x4128, {255, 255,  13,  13,  13,  13,   8}},
32993   {m68000_base_device_ops::m68k_op_chk_32_ix, 0xf1f8, 0x4130, {255, 255,  15,  15,  15,  15,   8}},
32994   {m68000_base_device_ops::m68k_op_chk_16_d, 0xf1f8, 0x4180, { 10,   8,   8,   8,   8,   8,   8}},
32995   {m68000_base_device_ops::m68k_op_chk_16_ai, 0xf1f8, 0x4190, { 14,  12,  12,  12,  12,  12,   8}},
32996   {m68000_base_device_ops::m68k_op_chk_16_pi, 0xf1f8, 0x4198, { 14,  12,  12,  12,  12,  12,   8}},
32997   {m68000_base_device_ops::m68k_op_chk_16_pd, 0xf1f8, 0x41a0, { 16,  14,  13,  13,  13,  13,   8}},
32998   {m68000_base_device_ops::m68k_op_chk_16_di, 0xf1f8, 0x41a8, { 18,  16,  13,  13,  13,  13,   8}},
32999   {m68000_base_device_ops::m68k_op_chk_16_ix, 0xf1f8, 0x41b0, { 20,  18,  15,  15,  15,  15,   8}},
33000   {m68000_base_device_ops::m68k_op_lea_32_ai, 0xf1f8, 0x41d0, {  4,   4,   6,   6,   6,   6,   2}},
33001   {m68000_base_device_ops::m68k_op_lea_32_di, 0xf1f8, 0x41e8, {  8,   8,   7,   7,   7,   7,   2}},
33002   {m68000_base_device_ops::m68k_op_lea_32_ix, 0xf1f8, 0x41f0, { 12,  12,   9,   9,   9,   9,   2}},
33003   {m68000_base_device_ops::m68k_op_addq_8_d, 0xf1f8, 0x5000, {  4,   4,   2,   2,   2,   2,   2}},
33004   {m68000_base_device_ops::m68k_op_addq_8_ai, 0xf1f8, 0x5010, { 12,  12,   8,   8,   8,   8,   4}},
33005   {m68000_base_device_ops::m68k_op_addq_8_pi, 0xf1f8, 0x5018, { 12,  12,   8,   8,   8,   8,   4}},
33006   {m68000_base_device_ops::m68k_op_addq_8_pd, 0xf1f8, 0x5020, { 14,  14,   9,   9,   9,   9,   4}},
33007   {m68000_base_device_ops::m68k_op_addq_8_di, 0xf1f8, 0x5028, { 16,  16,   9,   9,   9,   9,   4}},
33008   {m68000_base_device_ops::m68k_op_addq_8_ix, 0xf1f8, 0x5030, { 18,  18,  11,  11,  11,  11,   4}},
33009   {m68000_base_device_ops::m68k_op_addq_16_d, 0xf1f8, 0x5040, {  4,   4,   2,   2,   2,   2,   2}},
33010   {m68000_base_device_ops::m68k_op_addq_16_a, 0xf1f8, 0x5048, {  4,   4,   2,   2,   2,   2,   2}},
33011   {m68000_base_device_ops::m68k_op_addq_16_ai, 0xf1f8, 0x5050, { 12,  12,   8,   8,   8,   8,   4}},
33012   {m68000_base_device_ops::m68k_op_addq_16_pi, 0xf1f8, 0x5058, { 12,  12,   8,   8,   8,   8,   4}},
33013   {m68000_base_device_ops::m68k_op_addq_16_pd, 0xf1f8, 0x5060, { 14,  14,   9,   9,   9,   9,   4}},
33014   {m68000_base_device_ops::m68k_op_addq_16_di, 0xf1f8, 0x5068, { 16,  16,   9,   9,   9,   9,   4}},
33015   {m68000_base_device_ops::m68k_op_addq_16_ix, 0xf1f8, 0x5070, { 18,  18,  11,  11,  11,  11,   4}},
33016   {m68000_base_device_ops::m68k_op_addq_32_d, 0xf1f8, 0x5080, {  8,   8,   2,   2,   2,   2,   2}},
33017   {m68000_base_device_ops::m68k_op_addq_32_a, 0xf1f8, 0x5088, {  8,   8,   2,   2,   2,   2,   2}},
33018   {m68000_base_device_ops::m68k_op_addq_32_ai, 0xf1f8, 0x5090, { 20,  20,   8,   8,   8,   8,   4}},
33019   {m68000_base_device_ops::m68k_op_addq_32_pi, 0xf1f8, 0x5098, { 20,  20,   8,   8,   8,   8,   4}},
33020   {m68000_base_device_ops::m68k_op_addq_32_pd, 0xf1f8, 0x50a0, { 22,  22,   9,   9,   9,   9,   4}},
33021   {m68000_base_device_ops::m68k_op_addq_32_di, 0xf1f8, 0x50a8, { 24,  24,   9,   9,   9,   9,   4}},
33022   {m68000_base_device_ops::m68k_op_addq_32_ix, 0xf1f8, 0x50b0, { 26,  26,  11,  11,  11,  11,   4}},
33023   {m68000_base_device_ops::m68k_op_subq_8_d, 0xf1f8, 0x5100, {  4,   4,   2,   2,   2,   2,   2}},
33024   {m68000_base_device_ops::m68k_op_subq_8_ai, 0xf1f8, 0x5110, { 12,  12,   8,   8,   8,   8,   4}},
33025   {m68000_base_device_ops::m68k_op_subq_8_pi, 0xf1f8, 0x5118, { 12,  12,   8,   8,   8,   8,   4}},
33026   {m68000_base_device_ops::m68k_op_subq_8_pd, 0xf1f8, 0x5120, { 14,  14,   9,   9,   9,   9,   4}},
33027   {m68000_base_device_ops::m68k_op_subq_8_di, 0xf1f8, 0x5128, { 16,  16,   9,   9,   9,   9,   4}},
33028   {m68000_base_device_ops::m68k_op_subq_8_ix, 0xf1f8, 0x5130, { 18,  18,  11,  11,  11,  11,   4}},
33029   {m68000_base_device_ops::m68k_op_subq_16_d, 0xf1f8, 0x5140, {  4,   4,   2,   2,   2,   2,   2}},
33030   {m68000_base_device_ops::m68k_op_subq_16_a, 0xf1f8, 0x5148, {  8,   4,   2,   2,   2,   2,   2}},
33031   {m68000_base_device_ops::m68k_op_subq_16_ai, 0xf1f8, 0x5150, { 12,  12,   8,   8,   8,   8,   4}},
33032   {m68000_base_device_ops::m68k_op_subq_16_pi, 0xf1f8, 0x5158, { 12,  12,   8,   8,   8,   8,   4}},
33033   {m68000_base_device_ops::m68k_op_subq_16_pd, 0xf1f8, 0x5160, { 14,  14,   9,   9,   9,   9,   4}},
33034   {m68000_base_device_ops::m68k_op_subq_16_di, 0xf1f8, 0x5168, { 16,  16,   9,   9,   9,   9,   4}},
33035   {m68000_base_device_ops::m68k_op_subq_16_ix, 0xf1f8, 0x5170, { 18,  18,  11,  11,  11,  11,   4}},
33036   {m68000_base_device_ops::m68k_op_subq_32_d, 0xf1f8, 0x5180, {  8,   8,   2,   2,   2,   2,   2}},
33037   {m68000_base_device_ops::m68k_op_subq_32_a, 0xf1f8, 0x5188, {  8,   8,   2,   2,   2,   2,   2}},
33038   {m68000_base_device_ops::m68k_op_subq_32_ai, 0xf1f8, 0x5190, { 20,  20,   8,   8,   8,   8,   4}},
33039   {m68000_base_device_ops::m68k_op_subq_32_pi, 0xf1f8, 0x5198, { 20,  20,   8,   8,   8,   8,   4}},
33040   {m68000_base_device_ops::m68k_op_subq_32_pd, 0xf1f8, 0x51a0, { 22,  22,   9,   9,   9,   9,   4}},
33041   {m68000_base_device_ops::m68k_op_subq_32_di, 0xf1f8, 0x51a8, { 24,  24,   9,   9,   9,   9,   4}},
33042   {m68000_base_device_ops::m68k_op_subq_32_ix, 0xf1f8, 0x51b0, { 26,  26,  11,  11,  11,  11,   4}},
33043   {m68000_base_device_ops::m68k_op_or_8_er_d, 0xf1f8, 0x8000, {  4,   4,   2,   2,   2,   2,   2}},
33044   {m68000_base_device_ops::m68k_op_or_8_er_ai, 0xf1f8, 0x8010, {  8,   8,   6,   6,   6,   6,   2}},
33045   {m68000_base_device_ops::m68k_op_or_8_er_pi, 0xf1f8, 0x8018, {  8,   8,   6,   6,   6,   6,   2}},
33046   {m68000_base_device_ops::m68k_op_or_8_er_pd, 0xf1f8, 0x8020, { 10,  10,   7,   7,   7,   7,   2}},
33047   {m68000_base_device_ops::m68k_op_or_8_er_di, 0xf1f8, 0x8028, { 12,  12,   7,   7,   7,   7,   2}},
33048   {m68000_base_device_ops::m68k_op_or_8_er_ix, 0xf1f8, 0x8030, { 14,  14,   9,   9,   9,   9,   2}},
33049   {m68000_base_device_ops::m68k_op_or_16_er_d, 0xf1f8, 0x8040, {  4,   4,   2,   2,   2,   2,   2}},
33050   {m68000_base_device_ops::m68k_op_or_16_er_ai, 0xf1f8, 0x8050, {  8,   8,   6,   6,   6,   6,   2}},
33051   {m68000_base_device_ops::m68k_op_or_16_er_pi, 0xf1f8, 0x8058, {  8,   8,   6,   6,   6,   6,   2}},
33052   {m68000_base_device_ops::m68k_op_or_16_er_pd, 0xf1f8, 0x8060, { 10,  10,   7,   7,   7,   7,   2}},
33053   {m68000_base_device_ops::m68k_op_or_16_er_di, 0xf1f8, 0x8068, { 12,  12,   7,   7,   7,   7,   2}},
33054   {m68000_base_device_ops::m68k_op_or_16_er_ix, 0xf1f8, 0x8070, { 14,  14,   9,   9,   9,   9,   2}},
33055   {m68000_base_device_ops::m68k_op_or_32_er_d, 0xf1f8, 0x8080, {  8,   6,   2,   2,   2,   2,   2}},
33056   {m68000_base_device_ops::m68k_op_or_32_er_ai, 0xf1f8, 0x8090, { 14,  14,   6,   6,   6,   6,   2}},
33057   {m68000_base_device_ops::m68k_op_or_32_er_pi, 0xf1f8, 0x8098, { 14,  14,   6,   6,   6,   6,   2}},
33058   {m68000_base_device_ops::m68k_op_or_32_er_pd, 0xf1f8, 0x80a0, { 16,  16,   7,   7,   7,   7,   2}},
33059   {m68000_base_device_ops::m68k_op_or_32_er_di, 0xf1f8, 0x80a8, { 18,  18,   7,   7,   7,   7,   2}},
33060   {m68000_base_device_ops::m68k_op_or_32_er_ix, 0xf1f8, 0x80b0, { 20,  20,   9,   9,   9,   9,   2}},
33061   {m68000_base_device_ops::m68k_op_divu_16_d, 0xf1f8, 0x80c0, {140, 108,  44,  44,  44,  44,  44}},
33062   {m68000_base_device_ops::m68k_op_divu_16_ai, 0xf1f8, 0x80d0, {144, 112,  48,  48,  48,  48,  44}},
33063   {m68000_base_device_ops::m68k_op_divu_16_pi, 0xf1f8, 0x80d8, {144, 112,  48,  48,  48,  48,  44}},
33064   {m68000_base_device_ops::m68k_op_divu_16_pd, 0xf1f8, 0x80e0, {146, 114,  49,  49,  49,  49,  44}},
33065   {m68000_base_device_ops::m68k_op_divu_16_di, 0xf1f8, 0x80e8, {148, 116,  49,  49,  49,  49,  44}},
33066   {m68000_base_device_ops::m68k_op_divu_16_ix, 0xf1f8, 0x80f0, {150, 118,  51,  51,  51,  51,  44}},
33067   {m68000_base_device_ops::m68k_op_sbcd_8_rr, 0xf1f8, 0x8100, {  6,   6,   4,   4,   4,   4,   4}},
33068   {m68000_base_device_ops::m68k_op_sbcd_8_mm, 0xf1f8, 0x8108, { 18,  18,  16,  16,  16,  16,  16}},
33069   {m68000_base_device_ops::m68k_op_or_8_re_ai, 0xf1f8, 0x8110, { 12,  12,   8,   8,   8,   8,   4}},
33070   {m68000_base_device_ops::m68k_op_or_8_re_pi, 0xf1f8, 0x8118, { 12,  12,   8,   8,   8,   8,   4}},
33071   {m68000_base_device_ops::m68k_op_or_8_re_pd, 0xf1f8, 0x8120, { 14,  14,   9,   9,   9,   9,   4}},
33072   {m68000_base_device_ops::m68k_op_or_8_re_di, 0xf1f8, 0x8128, { 16,  16,   9,   9,   9,   9,   4}},
33073   {m68000_base_device_ops::m68k_op_or_8_re_ix, 0xf1f8, 0x8130, { 18,  18,  11,  11,  11,  11,   4}},
33074   {m68000_base_device_ops::m68k_op_pack_16_rr, 0xf1f8, 0x8140, {255, 255,   6,   6,   6,   6,   6}},
33075   {m68000_base_device_ops::m68k_op_pack_16_mm, 0xf1f8, 0x8148, {255, 255,  13,  13,  13,  13,  13}},
33076   {m68000_base_device_ops::m68k_op_or_16_re_ai, 0xf1f8, 0x8150, { 12,  12,   8,   8,   8,   8,   4}},
33077   {m68000_base_device_ops::m68k_op_or_16_re_pi, 0xf1f8, 0x8158, { 12,  12,   8,   8,   8,   8,   4}},
33078   {m68000_base_device_ops::m68k_op_or_16_re_pd, 0xf1f8, 0x8160, { 14,  14,   9,   9,   9,   9,   4}},
33079   {m68000_base_device_ops::m68k_op_or_16_re_di, 0xf1f8, 0x8168, { 16,  16,   9,   9,   9,   9,   4}},
33080   {m68000_base_device_ops::m68k_op_or_16_re_ix, 0xf1f8, 0x8170, { 18,  18,  11,  11,  11,  11,   4}},
33081   {m68000_base_device_ops::m68k_op_unpk_16_rr, 0xf1f8, 0x8180, {255, 255,   8,   8,   8,   8,   8}},
33082   {m68000_base_device_ops::m68k_op_unpk_16_mm, 0xf1f8, 0x8188, {255, 255,  13,  13,  13,  13,  13}},
33083   {m68000_base_device_ops::m68k_op_or_32_re_ai, 0xf1f8, 0x8190, { 20,  20,   8,   8,   8,   8,   4}},
33084   {m68000_base_device_ops::m68k_op_or_32_re_pi, 0xf1f8, 0x8198, { 20,  20,   8,   8,   8,   8,   4}},
33085   {m68000_base_device_ops::m68k_op_or_32_re_pd, 0xf1f8, 0x81a0, { 22,  22,   9,   9,   9,   9,   4}},
33086   {m68000_base_device_ops::m68k_op_or_32_re_di, 0xf1f8, 0x81a8, { 24,  24,   9,   9,   9,   9,   4}},
33087   {m68000_base_device_ops::m68k_op_or_32_re_ix, 0xf1f8, 0x81b0, { 26,  26,  11,  11,  11,  11,   4}},
33088   {m68000_base_device_ops::m68k_op_divs_16_d, 0xf1f8, 0x81c0, {158, 122,  56,  56,  56,  56,  56}},
33089   {m68000_base_device_ops::m68k_op_divs_16_ai, 0xf1f8, 0x81d0, {162, 126,  60,  60,  60,  60,  56}},
33090   {m68000_base_device_ops::m68k_op_divs_16_pi, 0xf1f8, 0x81d8, {162, 126,  60,  60,  60,  60,  56}},
33091   {m68000_base_device_ops::m68k_op_divs_16_pd, 0xf1f8, 0x81e0, {164, 128,  61,  61,  61,  61,  56}},
33092   {m68000_base_device_ops::m68k_op_divs_16_di, 0xf1f8, 0x81e8, {166, 130,  61,  61,  61,  61,  56}},
33093   {m68000_base_device_ops::m68k_op_divs_16_ix, 0xf1f8, 0x81f0, {168, 132,  63,  63,  63,  63,  56}},
33094   {m68000_base_device_ops::m68k_op_sub_8_er_d, 0xf1f8, 0x9000, {  4,   4,   2,   2,   2,   2,   2}},
33095   {m68000_base_device_ops::m68k_op_sub_8_er_ai, 0xf1f8, 0x9010, {  8,   8,   6,   6,   6,   6,   2}},
33096   {m68000_base_device_ops::m68k_op_sub_8_er_pi, 0xf1f8, 0x9018, {  8,   8,   6,   6,   6,   6,   2}},
33097   {m68000_base_device_ops::m68k_op_sub_8_er_pd, 0xf1f8, 0x9020, { 10,  10,   7,   7,   7,   7,   2}},
33098   {m68000_base_device_ops::m68k_op_sub_8_er_di, 0xf1f8, 0x9028, { 12,  12,   7,   7,   7,   7,   2}},
33099   {m68000_base_device_ops::m68k_op_sub_8_er_ix, 0xf1f8, 0x9030, { 14,  14,   9,   9,   9,   9,   2}},
33100   {m68000_base_device_ops::m68k_op_sub_16_er_d, 0xf1f8, 0x9040, {  4,   4,   2,   2,   2,   2,   2}},
33101   {m68000_base_device_ops::m68k_op_sub_16_er_a, 0xf1f8, 0x9048, {  4,   4,   2,   2,   2,   2,   2}},
33102   {m68000_base_device_ops::m68k_op_sub_16_er_ai, 0xf1f8, 0x9050, {  8,   8,   6,   6,   6,   6,   2}},
33103   {m68000_base_device_ops::m68k_op_sub_16_er_pi, 0xf1f8, 0x9058, {  8,   8,   6,   6,   6,   6,   2}},
33104   {m68000_base_device_ops::m68k_op_sub_16_er_pd, 0xf1f8, 0x9060, { 10,  10,   7,   7,   7,   7,   2}},
33105   {m68000_base_device_ops::m68k_op_sub_16_er_di, 0xf1f8, 0x9068, { 12,  12,   7,   7,   7,   7,   2}},
33106   {m68000_base_device_ops::m68k_op_sub_16_er_ix, 0xf1f8, 0x9070, { 14,  14,   9,   9,   9,   9,   2}},
33107   {m68000_base_device_ops::m68k_op_sub_32_er_d, 0xf1f8, 0x9080, {  8,   6,   2,   2,   2,   2,   2}},
33108   {m68000_base_device_ops::m68k_op_sub_32_er_a, 0xf1f8, 0x9088, {  8,   6,   2,   2,   2,   2,   2}},
33109   {m68000_base_device_ops::m68k_op_sub_32_er_ai, 0xf1f8, 0x9090, { 14,  14,   6,   6,   6,   6,   2}},
33110   {m68000_base_device_ops::m68k_op_sub_32_er_pi, 0xf1f8, 0x9098, { 14,  14,   6,   6,   6,   6,   2}},
33111   {m68000_base_device_ops::m68k_op_sub_32_er_pd, 0xf1f8, 0x90a0, { 16,  16,   7,   7,   7,   7,   2}},
33112   {m68000_base_device_ops::m68k_op_sub_32_er_di, 0xf1f8, 0x90a8, { 18,  18,   7,   7,   7,   7,   2}},
33113   {m68000_base_device_ops::m68k_op_sub_32_er_ix, 0xf1f8, 0x90b0, { 20,  20,   9,   9,   9,   9,   2}},
33114   {m68000_base_device_ops::m68k_op_suba_16_d, 0xf1f8, 0x90c0, {  8,   8,   2,   2,   2,   2,   2}},
33115   {m68000_base_device_ops::m68k_op_suba_16_a, 0xf1f8, 0x90c8, {  8,   8,   2,   2,   2,   2,   2}},
33116   {m68000_base_device_ops::m68k_op_suba_16_ai, 0xf1f8, 0x90d0, { 12,  12,   6,   6,   6,   6,   2}},
33117   {m68000_base_device_ops::m68k_op_suba_16_pi, 0xf1f8, 0x90d8, { 12,  12,   6,   6,   6,   6,   2}},
33118   {m68000_base_device_ops::m68k_op_suba_16_pd, 0xf1f8, 0x90e0, { 14,  14,   7,   7,   7,   7,   2}},
33119   {m68000_base_device_ops::m68k_op_suba_16_di, 0xf1f8, 0x90e8, { 16,  16,   7,   7,   7,   7,   2}},
33120   {m68000_base_device_ops::m68k_op_suba_16_ix, 0xf1f8, 0x90f0, { 18,  18,   9,   9,   9,   9,   2}},
33121   {m68000_base_device_ops::m68k_op_subx_8_rr, 0xf1f8, 0x9100, {  4,   4,   2,   2,   2,   2,   2}},
33122   {m68000_base_device_ops::m68k_op_subx_8_mm, 0xf1f8, 0x9108, { 18,  18,  12,  12,  12,  12,  12}},
33123   {m68000_base_device_ops::m68k_op_sub_8_re_ai, 0xf1f8, 0x9110, { 12,  12,   8,   8,   8,   8,   4}},
33124   {m68000_base_device_ops::m68k_op_sub_8_re_pi, 0xf1f8, 0x9118, { 12,  12,   8,   8,   8,   8,   4}},
33125   {m68000_base_device_ops::m68k_op_sub_8_re_pd, 0xf1f8, 0x9120, { 14,  14,   9,   9,   9,   9,   4}},
33126   {m68000_base_device_ops::m68k_op_sub_8_re_di, 0xf1f8, 0x9128, { 16,  16,   9,   9,   9,   9,   4}},
33127   {m68000_base_device_ops::m68k_op_sub_8_re_ix, 0xf1f8, 0x9130, { 18,  18,  11,  11,  11,  11,   4}},
33128   {m68000_base_device_ops::m68k_op_subx_16_rr, 0xf1f8, 0x9140, {  4,   4,   2,   2,   2,   2,   2}},
33129   {m68000_base_device_ops::m68k_op_subx_16_mm, 0xf1f8, 0x9148, { 18,  18,  12,  12,  12,  12,  12}},
33130   {m68000_base_device_ops::m68k_op_sub_16_re_ai, 0xf1f8, 0x9150, { 12,  12,   8,   8,   8,   8,   4}},
33131   {m68000_base_device_ops::m68k_op_sub_16_re_pi, 0xf1f8, 0x9158, { 12,  12,   8,   8,   8,   8,   4}},
33132   {m68000_base_device_ops::m68k_op_sub_16_re_pd, 0xf1f8, 0x9160, { 14,  14,   9,   9,   9,   9,   4}},
33133   {m68000_base_device_ops::m68k_op_sub_16_re_di, 0xf1f8, 0x9168, { 16,  16,   9,   9,   9,   9,   4}},
33134   {m68000_base_device_ops::m68k_op_sub_16_re_ix, 0xf1f8, 0x9170, { 18,  18,  11,  11,  11,  11,   4}},
33135   {m68000_base_device_ops::m68k_op_subx_32_rr, 0xf1f8, 0x9180, {  8,   6,   2,   2,   2,   2,   2}},
33136   {m68000_base_device_ops::m68k_op_subx_32_mm, 0xf1f8, 0x9188, { 30,  30,  12,  12,  12,  12,  12}},
33137   {m68000_base_device_ops::m68k_op_sub_32_re_ai, 0xf1f8, 0x9190, { 20,  20,   8,   8,   8,   8,   4}},
33138   {m68000_base_device_ops::m68k_op_sub_32_re_pi, 0xf1f8, 0x9198, { 20,  20,   8,   8,   8,   8,   4}},
33139   {m68000_base_device_ops::m68k_op_sub_32_re_pd, 0xf1f8, 0x91a0, { 22,  22,   9,   9,   9,   9,   4}},
33140   {m68000_base_device_ops::m68k_op_sub_32_re_di, 0xf1f8, 0x91a8, { 24,  24,   9,   9,   9,   9,   4}},
33141   {m68000_base_device_ops::m68k_op_sub_32_re_ix, 0xf1f8, 0x91b0, { 26,  26,  11,  11,  11,  11,   4}},
33142   {m68000_base_device_ops::m68k_op_suba_32_d, 0xf1f8, 0x91c0, {  8,   6,   2,   2,   2,   2,   2}},
33143   {m68000_base_device_ops::m68k_op_suba_32_a, 0xf1f8, 0x91c8, {  8,   6,   2,   2,   2,   2,   2}},
33144   {m68000_base_device_ops::m68k_op_suba_32_ai, 0xf1f8, 0x91d0, { 14,  14,   6,   6,   6,   6,   2}},
33145   {m68000_base_device_ops::m68k_op_suba_32_pi, 0xf1f8, 0x91d8, { 14,  14,   6,   6,   6,   6,   2}},
33146   {m68000_base_device_ops::m68k_op_suba_32_pd, 0xf1f8, 0x91e0, { 16,  16,   7,   7,   7,   7,   2}},
33147   {m68000_base_device_ops::m68k_op_suba_32_di, 0xf1f8, 0x91e8, { 18,  18,   7,   7,   7,   7,   2}},
33148   {m68000_base_device_ops::m68k_op_suba_32_ix, 0xf1f8, 0x91f0, { 20,  20,   9,   9,   9,   9,   2}},
33149   {m68000_base_device_ops::m68k_op_cmp_8_d, 0xf1f8, 0xb000, {  4,   4,   2,   2,   2,   2,   2}},
33150   {m68000_base_device_ops::m68k_op_cmp_8_ai, 0xf1f8, 0xb010, {  8,   8,   6,   6,   6,   6,   2}},
33151   {m68000_base_device_ops::m68k_op_cmp_8_pi, 0xf1f8, 0xb018, {  8,   8,   6,   6,   6,   6,   2}},
33152   {m68000_base_device_ops::m68k_op_cmp_8_pd, 0xf1f8, 0xb020, { 10,  10,   7,   7,   7,   7,   2}},
33153   {m68000_base_device_ops::m68k_op_cmp_8_di, 0xf1f8, 0xb028, { 12,  12,   7,   7,   7,   7,   2}},
33154   {m68000_base_device_ops::m68k_op_cmp_8_ix, 0xf1f8, 0xb030, { 14,  14,   9,   9,   9,   9,   2}},
33155   {m68000_base_device_ops::m68k_op_cmp_16_d, 0xf1f8, 0xb040, {  4,   4,   2,   2,   2,   2,   2}},
33156   {m68000_base_device_ops::m68k_op_cmp_16_a, 0xf1f8, 0xb048, {  4,   4,   2,   2,   2,   2,   2}},
33157   {m68000_base_device_ops::m68k_op_cmp_16_ai, 0xf1f8, 0xb050, {  8,   8,   6,   6,   6,   6,   2}},
33158   {m68000_base_device_ops::m68k_op_cmp_16_pi, 0xf1f8, 0xb058, {  8,   8,   6,   6,   6,   6,   2}},
33159   {m68000_base_device_ops::m68k_op_cmp_16_pd, 0xf1f8, 0xb060, { 10,  10,   7,   7,   7,   7,   2}},
33160   {m68000_base_device_ops::m68k_op_cmp_16_di, 0xf1f8, 0xb068, { 12,  12,   7,   7,   7,   7,   2}},
33161   {m68000_base_device_ops::m68k_op_cmp_16_ix, 0xf1f8, 0xb070, { 14,  14,   9,   9,   9,   9,   2}},
33162   {m68000_base_device_ops::m68k_op_cmp_32_d, 0xf1f8, 0xb080, {  6,   6,   2,   2,   2,   2,   2}},
33163   {m68000_base_device_ops::m68k_op_cmp_32_a, 0xf1f8, 0xb088, {  6,   6,   2,   2,   2,   2,   2}},
33164   {m68000_base_device_ops::m68k_op_cmp_32_ai, 0xf1f8, 0xb090, { 14,  14,   6,   6,   6,   6,   2}},
33165   {m68000_base_device_ops::m68k_op_cmp_32_pi, 0xf1f8, 0xb098, { 14,  14,   6,   6,   6,   6,   2}},
33166   {m68000_base_device_ops::m68k_op_cmp_32_pd, 0xf1f8, 0xb0a0, { 16,  16,   7,   7,   7,   7,   2}},
33167   {m68000_base_device_ops::m68k_op_cmp_32_di, 0xf1f8, 0xb0a8, { 18,  18,   7,   7,   7,   7,   2}},
33168   {m68000_base_device_ops::m68k_op_cmp_32_ix, 0xf1f8, 0xb0b0, { 20,  20,   9,   9,   9,   9,   2}},
33169   {m68000_base_device_ops::m68k_op_cmpa_16_d, 0xf1f8, 0xb0c0, {  6,   6,   4,   4,   4,   4,   4}},
33170   {m68000_base_device_ops::m68k_op_cmpa_16_a, 0xf1f8, 0xb0c8, {  6,   6,   4,   4,   4,   4,   4}},
33171   {m68000_base_device_ops::m68k_op_cmpa_16_ai, 0xf1f8, 0xb0d0, { 10,  10,   8,   8,   8,   8,   4}},
33172   {m68000_base_device_ops::m68k_op_cmpa_16_pi, 0xf1f8, 0xb0d8, { 10,  10,   8,   8,   8,   8,   4}},
33173   {m68000_base_device_ops::m68k_op_cmpa_16_pd, 0xf1f8, 0xb0e0, { 12,  12,   9,   9,   9,   9,   4}},
33174   {m68000_base_device_ops::m68k_op_cmpa_16_di, 0xf1f8, 0xb0e8, { 14,  14,   9,   9,   9,   9,   4}},
33175   {m68000_base_device_ops::m68k_op_cmpa_16_ix, 0xf1f8, 0xb0f0, { 16,  16,  11,  11,  11,  11,   4}},
33176   {m68000_base_device_ops::m68k_op_eor_8_d, 0xf1f8, 0xb100, {  4,   4,   2,   2,   2,   2,   2}},
33177   {m68000_base_device_ops::m68k_op_cmpm_8, 0xf1f8, 0xb108, { 12,  12,   9,   9,   9,   9,   9}},
33178   {m68000_base_device_ops::m68k_op_eor_8_ai, 0xf1f8, 0xb110, { 12,  12,   8,   8,   8,   8,   4}},
33179   {m68000_base_device_ops::m68k_op_eor_8_pi, 0xf1f8, 0xb118, { 12,  12,   8,   8,   8,   8,   4}},
33180   {m68000_base_device_ops::m68k_op_eor_8_pd, 0xf1f8, 0xb120, { 14,  14,   9,   9,   9,   9,   4}},
33181   {m68000_base_device_ops::m68k_op_eor_8_di, 0xf1f8, 0xb128, { 16,  16,   9,   9,   9,   9,   4}},
33182   {m68000_base_device_ops::m68k_op_eor_8_ix, 0xf1f8, 0xb130, { 18,  18,  11,  11,  11,  11,   4}},
33183   {m68000_base_device_ops::m68k_op_eor_16_d, 0xf1f8, 0xb140, {  4,   4,   2,   2,   2,   2,   2}},
33184   {m68000_base_device_ops::m68k_op_cmpm_16, 0xf1f8, 0xb148, { 12,  12,   9,   9,   9,   9,   9}},
33185   {m68000_base_device_ops::m68k_op_eor_16_ai, 0xf1f8, 0xb150, { 12,  12,   8,   8,   8,   8,   4}},
33186   {m68000_base_device_ops::m68k_op_eor_16_pi, 0xf1f8, 0xb158, { 12,  12,   8,   8,   8,   8,   4}},
33187   {m68000_base_device_ops::m68k_op_eor_16_pd, 0xf1f8, 0xb160, { 14,  14,   9,   9,   9,   9,   4}},
33188   {m68000_base_device_ops::m68k_op_eor_16_di, 0xf1f8, 0xb168, { 16,  16,   9,   9,   9,   9,   4}},
33189   {m68000_base_device_ops::m68k_op_eor_16_ix, 0xf1f8, 0xb170, { 18,  18,  11,  11,  11,  11,   4}},
33190   {m68000_base_device_ops::m68k_op_eor_32_d, 0xf1f8, 0xb180, {  8,   6,   2,   2,   2,   2,   2}},
33191   {m68000_base_device_ops::m68k_op_cmpm_32, 0xf1f8, 0xb188, { 20,  20,   9,   9,   9,   9,   9}},
33192   {m68000_base_device_ops::m68k_op_eor_32_ai, 0xf1f8, 0xb190, { 20,  20,   8,   8,   8,   8,   4}},
33193   {m68000_base_device_ops::m68k_op_eor_32_pi, 0xf1f8, 0xb198, { 20,  20,   8,   8,   8,   8,   4}},
33194   {m68000_base_device_ops::m68k_op_eor_32_pd, 0xf1f8, 0xb1a0, { 22,  22,   9,   9,   9,   9,   4}},
33195   {m68000_base_device_ops::m68k_op_eor_32_di, 0xf1f8, 0xb1a8, { 24,  24,   9,   9,   9,   9,   4}},
33196   {m68000_base_device_ops::m68k_op_eor_32_ix, 0xf1f8, 0xb1b0, { 26,  26,  11,  11,  11,  11,   4}},
33197   {m68000_base_device_ops::m68k_op_cmpa_32_d, 0xf1f8, 0xb1c0, {  6,   6,   4,   4,   4,   4,   4}},
33198   {m68000_base_device_ops::m68k_op_cmpa_32_a, 0xf1f8, 0xb1c8, {  6,   6,   4,   4,   4,   4,   4}},
33199   {m68000_base_device_ops::m68k_op_cmpa_32_ai, 0xf1f8, 0xb1d0, { 14,  14,   8,   8,   8,   8,   4}},
33200   {m68000_base_device_ops::m68k_op_cmpa_32_pi, 0xf1f8, 0xb1d8, { 14,  14,   8,   8,   8,   8,   4}},
33201   {m68000_base_device_ops::m68k_op_cmpa_32_pd, 0xf1f8, 0xb1e0, { 16,  16,   9,   9,   9,   9,   4}},
33202   {m68000_base_device_ops::m68k_op_cmpa_32_di, 0xf1f8, 0xb1e8, { 18,  18,   9,   9,   9,   9,   4}},
33203   {m68000_base_device_ops::m68k_op_cmpa_32_ix, 0xf1f8, 0xb1f0, { 20,  20,  11,  11,  11,  11,   4}},
33204   {m68000_base_device_ops::m68k_op_and_8_er_d, 0xf1f8, 0xc000, {  4,   4,   2,   2,   2,   2,   2}},
33205   {m68000_base_device_ops::m68k_op_and_8_er_ai, 0xf1f8, 0xc010, {  8,   8,   6,   6,   6,   6,   2}},
33206   {m68000_base_device_ops::m68k_op_and_8_er_pi, 0xf1f8, 0xc018, {  8,   8,   6,   6,   6,   6,   2}},
33207   {m68000_base_device_ops::m68k_op_and_8_er_pd, 0xf1f8, 0xc020, { 10,  10,   7,   7,   7,   7,   2}},
33208   {m68000_base_device_ops::m68k_op_and_8_er_di, 0xf1f8, 0xc028, { 12,  12,   7,   7,   7,   7,   2}},
33209   {m68000_base_device_ops::m68k_op_and_8_er_ix, 0xf1f8, 0xc030, { 14,  14,   9,   9,   9,   9,   2}},
33210   {m68000_base_device_ops::m68k_op_and_16_er_d, 0xf1f8, 0xc040, {  4,   4,   2,   2,   2,   2,   2}},
33211   {m68000_base_device_ops::m68k_op_and_16_er_ai, 0xf1f8, 0xc050, {  8,   8,   6,   6,   6,   6,   2}},
33212   {m68000_base_device_ops::m68k_op_and_16_er_pi, 0xf1f8, 0xc058, {  8,   8,   6,   6,   6,   6,   2}},
33213   {m68000_base_device_ops::m68k_op_and_16_er_pd, 0xf1f8, 0xc060, { 10,  10,   7,   7,   7,   7,   2}},
33214   {m68000_base_device_ops::m68k_op_and_16_er_di, 0xf1f8, 0xc068, { 12,  12,   7,   7,   7,   7,   2}},
33215   {m68000_base_device_ops::m68k_op_and_16_er_ix, 0xf1f8, 0xc070, { 14,  14,   9,   9,   9,   9,   2}},
33216   {m68000_base_device_ops::m68k_op_and_32_er_d, 0xf1f8, 0xc080, {  8,   6,   2,   2,   2,   2,   2}},
33217   {m68000_base_device_ops::m68k_op_and_32_er_ai, 0xf1f8, 0xc090, { 14,  14,   6,   6,   6,   6,   2}},
33218   {m68000_base_device_ops::m68k_op_and_32_er_pi, 0xf1f8, 0xc098, { 14,  14,   6,   6,   6,   6,   2}},
33219   {m68000_base_device_ops::m68k_op_and_32_er_pd, 0xf1f8, 0xc0a0, { 16,  16,   7,   7,   7,   7,   2}},
33220   {m68000_base_device_ops::m68k_op_and_32_er_di, 0xf1f8, 0xc0a8, { 18,  18,   7,   7,   7,   7,   2}},
33221   {m68000_base_device_ops::m68k_op_and_32_er_ix, 0xf1f8, 0xc0b0, { 20,  20,   9,   9,   9,   9,   2}},
33222   {m68000_base_device_ops::m68k_op_mulu_16_d, 0xf1f8, 0xc0c0, { 54,  30,  27,  27,  27,  27,  27}},
33223   {m68000_base_device_ops::m68k_op_mulu_16_ai, 0xf1f8, 0xc0d0, { 58,  34,  31,  31,  31,  31,  27}},
33224   {m68000_base_device_ops::m68k_op_mulu_16_pi, 0xf1f8, 0xc0d8, { 58,  34,  31,  31,  31,  31,  27}},
33225   {m68000_base_device_ops::m68k_op_mulu_16_pd, 0xf1f8, 0xc0e0, { 60,  36,  32,  32,  32,  32,  27}},
33226   {m68000_base_device_ops::m68k_op_mulu_16_di, 0xf1f8, 0xc0e8, { 62,  38,  32,  32,  32,  32,  27}},
33227   {m68000_base_device_ops::m68k_op_mulu_16_ix, 0xf1f8, 0xc0f0, { 64,  40,  34,  34,  34,  34,  27}},
33228   {m68000_base_device_ops::m68k_op_abcd_8_rr, 0xf1f8, 0xc100, {  6,   6,   4,   4,   4,   4,   4}},
33229   {m68000_base_device_ops::m68k_op_abcd_8_mm, 0xf1f8, 0xc108, { 18,  18,  16,  16,  16,  16,  16}},
33230   {m68000_base_device_ops::m68k_op_and_8_re_ai, 0xf1f8, 0xc110, { 12,  12,   8,   8,   8,   8,   4}},
33231   {m68000_base_device_ops::m68k_op_and_8_re_pi, 0xf1f8, 0xc118, { 12,  12,   8,   8,   8,   8,   4}},
33232   {m68000_base_device_ops::m68k_op_and_8_re_pd, 0xf1f8, 0xc120, { 14,  14,   9,   9,   9,   9,   4}},
33233   {m68000_base_device_ops::m68k_op_and_8_re_di, 0xf1f8, 0xc128, { 16,  16,   9,   9,   9,   9,   4}},
33234   {m68000_base_device_ops::m68k_op_and_8_re_ix, 0xf1f8, 0xc130, { 18,  18,  11,  11,  11,  11,   4}},
33235   {m68000_base_device_ops::m68k_op_exg_32_dd, 0xf1f8, 0xc140, {  6,   6,   2,   2,   2,   2,   2}},
33236   {m68000_base_device_ops::m68k_op_exg_32_aa, 0xf1f8, 0xc148, {  6,   6,   2,   2,   2,   2,   2}},
33237   {m68000_base_device_ops::m68k_op_and_16_re_ai, 0xf1f8, 0xc150, { 12,  12,   8,   8,   8,   8,   4}},
33238   {m68000_base_device_ops::m68k_op_and_16_re_pi, 0xf1f8, 0xc158, { 12,  12,   8,   8,   8,   8,   4}},
33239   {m68000_base_device_ops::m68k_op_and_16_re_pd, 0xf1f8, 0xc160, { 14,  14,   9,   9,   9,   9,   4}},
33240   {m68000_base_device_ops::m68k_op_and_16_re_di, 0xf1f8, 0xc168, { 16,  16,   9,   9,   9,   9,   4}},
33241   {m68000_base_device_ops::m68k_op_and_16_re_ix, 0xf1f8, 0xc170, { 18,  18,  11,  11,  11,  11,   4}},
33242   {m68000_base_device_ops::m68k_op_exg_32_da, 0xf1f8, 0xc188, {  6,   6,   2,   2,   2,   2,   2}},
33243   {m68000_base_device_ops::m68k_op_and_32_re_ai, 0xf1f8, 0xc190, { 20,  20,   8,   8,   8,   8,   4}},
33244   {m68000_base_device_ops::m68k_op_and_32_re_pi, 0xf1f8, 0xc198, { 20,  20,   8,   8,   8,   8,   4}},
33245   {m68000_base_device_ops::m68k_op_and_32_re_pd, 0xf1f8, 0xc1a0, { 22,  22,   9,   9,   9,   9,   4}},
33246   {m68000_base_device_ops::m68k_op_and_32_re_di, 0xf1f8, 0xc1a8, { 24,  24,   9,   9,   9,   9,   4}},
33247   {m68000_base_device_ops::m68k_op_and_32_re_ix, 0xf1f8, 0xc1b0, { 26,  26,  11,  11,  11,  11,   4}},
33248   {m68000_base_device_ops::m68k_op_muls_16_d, 0xf1f8, 0xc1c0, { 54,  32,  27,  27,  27,  27,  27}},
33249   {m68000_base_device_ops::m68k_op_muls_16_ai, 0xf1f8, 0xc1d0, { 58,  36,  31,  31,  31,  31,  27}},
33250   {m68000_base_device_ops::m68k_op_muls_16_pi, 0xf1f8, 0xc1d8, { 58,  36,  31,  31,  31,  31,  27}},
33251   {m68000_base_device_ops::m68k_op_muls_16_pd, 0xf1f8, 0xc1e0, { 60,  38,  32,  32,  32,  32,  27}},
33252   {m68000_base_device_ops::m68k_op_muls_16_di, 0xf1f8, 0xc1e8, { 62,  40,  32,  32,  32,  32,  27}},
33253   {m68000_base_device_ops::m68k_op_muls_16_ix, 0xf1f8, 0xc1f0, { 64,  42,  34,  34,  34,  34,  27}},
33254   {m68000_base_device_ops::m68k_op_add_8_er_d, 0xf1f8, 0xd000, {  4,   4,   2,   2,   2,   2,   2}},
33255   {m68000_base_device_ops::m68k_op_add_8_er_ai, 0xf1f8, 0xd010, {  8,   8,   6,   6,   6,   6,   2}},
33256   {m68000_base_device_ops::m68k_op_add_8_er_pi, 0xf1f8, 0xd018, {  8,   8,   6,   6,   6,   6,   2}},
33257   {m68000_base_device_ops::m68k_op_add_8_er_pd, 0xf1f8, 0xd020, { 10,  10,   7,   7,   7,   7,   2}},
33258   {m68000_base_device_ops::m68k_op_add_8_er_di, 0xf1f8, 0xd028, { 12,  12,   7,   7,   7,   7,   2}},
33259   {m68000_base_device_ops::m68k_op_add_8_er_ix, 0xf1f8, 0xd030, { 14,  14,   9,   9,   9,   9,   2}},
33260   {m68000_base_device_ops::m68k_op_add_16_er_d, 0xf1f8, 0xd040, {  4,   4,   2,   2,   2,   2,   2}},
33261   {m68000_base_device_ops::m68k_op_add_16_er_a, 0xf1f8, 0xd048, {  4,   4,   2,   2,   2,   2,   2}},
33262   {m68000_base_device_ops::m68k_op_add_16_er_ai, 0xf1f8, 0xd050, {  8,   8,   6,   6,   6,   6,   2}},
33263   {m68000_base_device_ops::m68k_op_add_16_er_pi, 0xf1f8, 0xd058, {  8,   8,   6,   6,   6,   6,   2}},
33264   {m68000_base_device_ops::m68k_op_add_16_er_pd, 0xf1f8, 0xd060, { 10,  10,   7,   7,   7,   7,   2}},
33265   {m68000_base_device_ops::m68k_op_add_16_er_di, 0xf1f8, 0xd068, { 12,  12,   7,   7,   7,   7,   2}},
33266   {m68000_base_device_ops::m68k_op_add_16_er_ix, 0xf1f8, 0xd070, { 14,  14,   9,   9,   9,   9,   2}},
33267   {m68000_base_device_ops::m68k_op_add_32_er_d, 0xf1f8, 0xd080, {  8,   6,   2,   2,   2,   2,   2}},
33268   {m68000_base_device_ops::m68k_op_add_32_er_a, 0xf1f8, 0xd088, {  8,   6,   2,   2,   2,   2,   2}},
33269   {m68000_base_device_ops::m68k_op_add_32_er_ai, 0xf1f8, 0xd090, { 14,  14,   6,   6,   6,   6,   2}},
33270   {m68000_base_device_ops::m68k_op_add_32_er_pi, 0xf1f8, 0xd098, { 14,  14,   6,   6,   6,   6,   2}},
33271   {m68000_base_device_ops::m68k_op_add_32_er_pd, 0xf1f8, 0xd0a0, { 16,  16,   7,   7,   7,   7,   2}},
33272   {m68000_base_device_ops::m68k_op_add_32_er_di, 0xf1f8, 0xd0a8, { 18,  18,   7,   7,   7,   7,   2}},
33273   {m68000_base_device_ops::m68k_op_add_32_er_ix, 0xf1f8, 0xd0b0, { 20,  20,   9,   9,   9,   9,   2}},
33274   {m68000_base_device_ops::m68k_op_adda_16_d, 0xf1f8, 0xd0c0, {  8,   8,   2,   2,   2,   2,   2}},
33275   {m68000_base_device_ops::m68k_op_adda_16_a, 0xf1f8, 0xd0c8, {  8,   8,   2,   2,   2,   2,   2}},
33276   {m68000_base_device_ops::m68k_op_adda_16_ai, 0xf1f8, 0xd0d0, { 12,  12,   6,   6,   6,   6,   2}},
33277   {m68000_base_device_ops::m68k_op_adda_16_pi, 0xf1f8, 0xd0d8, { 12,  12,   6,   6,   6,   6,   2}},
33278   {m68000_base_device_ops::m68k_op_adda_16_pd, 0xf1f8, 0xd0e0, { 14,  14,   7,   7,   7,   7,   2}},
33279   {m68000_base_device_ops::m68k_op_adda_16_di, 0xf1f8, 0xd0e8, { 16,  16,   7,   7,   7,   7,   2}},
33280   {m68000_base_device_ops::m68k_op_adda_16_ix, 0xf1f8, 0xd0f0, { 18,  18,   9,   9,   9,   9,   2}},
33281   {m68000_base_device_ops::m68k_op_addx_8_rr, 0xf1f8, 0xd100, {  4,   4,   2,   2,   2,   2,   2}},
33282   {m68000_base_device_ops::m68k_op_addx_8_mm, 0xf1f8, 0xd108, { 18,  18,  12,  12,  12,  12,  12}},
33283   {m68000_base_device_ops::m68k_op_add_8_re_ai, 0xf1f8, 0xd110, { 12,  12,   8,   8,   8,   8,   4}},
33284   {m68000_base_device_ops::m68k_op_add_8_re_pi, 0xf1f8, 0xd118, { 12,  12,   8,   8,   8,   8,   4}},
33285   {m68000_base_device_ops::m68k_op_add_8_re_pd, 0xf1f8, 0xd120, { 14,  14,   9,   9,   9,   9,   4}},
33286   {m68000_base_device_ops::m68k_op_add_8_re_di, 0xf1f8, 0xd128, { 16,  16,   9,   9,   9,   9,   4}},
33287   {m68000_base_device_ops::m68k_op_add_8_re_ix, 0xf1f8, 0xd130, { 18,  18,  11,  11,  11,  11,   4}},
33288   {m68000_base_device_ops::m68k_op_addx_16_rr, 0xf1f8, 0xd140, {  4,   4,   2,   2,   2,   2,   2}},
33289   {m68000_base_device_ops::m68k_op_addx_16_mm, 0xf1f8, 0xd148, { 18,  18,  12,  12,  12,  12,  12}},
33290   {m68000_base_device_ops::m68k_op_add_16_re_ai, 0xf1f8, 0xd150, { 12,  12,   8,   8,   8,   8,   4}},
33291   {m68000_base_device_ops::m68k_op_add_16_re_pi, 0xf1f8, 0xd158, { 12,  12,   8,   8,   8,   8,   4}},
33292   {m68000_base_device_ops::m68k_op_add_16_re_pd, 0xf1f8, 0xd160, { 14,  14,   9,   9,   9,   9,   4}},
33293   {m68000_base_device_ops::m68k_op_add_16_re_di, 0xf1f8, 0xd168, { 16,  16,   9,   9,   9,   9,   4}},
33294   {m68000_base_device_ops::m68k_op_add_16_re_ix, 0xf1f8, 0xd170, { 18,  18,  11,  11,  11,  11,   4}},
33295   {m68000_base_device_ops::m68k_op_addx_32_rr, 0xf1f8, 0xd180, {  8,   6,   2,   2,   2,   2,   2}},
33296   {m68000_base_device_ops::m68k_op_addx_32_mm, 0xf1f8, 0xd188, { 30,  30,  12,  12,  12,  12,  12}},
33297   {m68000_base_device_ops::m68k_op_add_32_re_ai, 0xf1f8, 0xd190, { 20,  20,   8,   8,   8,   8,   4}},
33298   {m68000_base_device_ops::m68k_op_add_32_re_pi, 0xf1f8, 0xd198, { 20,  20,   8,   8,   8,   8,   4}},
33299   {m68000_base_device_ops::m68k_op_add_32_re_pd, 0xf1f8, 0xd1a0, { 22,  22,   9,   9,   9,   9,   4}},
33300   {m68000_base_device_ops::m68k_op_add_32_re_di, 0xf1f8, 0xd1a8, { 24,  24,   9,   9,   9,   9,   4}},
33301   {m68000_base_device_ops::m68k_op_add_32_re_ix, 0xf1f8, 0xd1b0, { 26,  26,  11,  11,  11,  11,   4}},
33302   {m68000_base_device_ops::m68k_op_adda_32_d, 0xf1f8, 0xd1c0, {  8,   6,   2,   2,   2,   2,   2}},
33303   {m68000_base_device_ops::m68k_op_adda_32_a, 0xf1f8, 0xd1c8, {  8,   6,   2,   2,   2,   2,   2}},
33304   {m68000_base_device_ops::m68k_op_adda_32_ai, 0xf1f8, 0xd1d0, { 14,  14,   6,   6,   6,   6,   2}},
33305   {m68000_base_device_ops::m68k_op_adda_32_pi, 0xf1f8, 0xd1d8, { 14,  14,   6,   6,   6,   6,   2}},
33306   {m68000_base_device_ops::m68k_op_adda_32_pd, 0xf1f8, 0xd1e0, { 16,  16,   7,   7,   7,   7,   2}},
33307   {m68000_base_device_ops::m68k_op_adda_32_di, 0xf1f8, 0xd1e8, { 18,  18,   7,   7,   7,   7,   2}},
33308   {m68000_base_device_ops::m68k_op_adda_32_ix, 0xf1f8, 0xd1f0, { 20,  20,   9,   9,   9,   9,   2}},
33309   {m68000_base_device_ops::m68k_op_asr_8_s, 0xf1f8, 0xe000, {  6,   6,   6,   6,   6,   6,   6}},
33310   {m68000_base_device_ops::m68k_op_lsr_8_s, 0xf1f8, 0xe008, {  6,   6,   4,   4,   4,   4,   4}},
33311   {m68000_base_device_ops::m68k_op_roxr_8_s, 0xf1f8, 0xe010, {  6,   6,  12,  12,  12,  12,  12}},
33312   {m68000_base_device_ops::m68k_op_ror_8_s, 0xf1f8, 0xe018, {  6,   6,   8,   8,   8,   8,   8}},
33313   {m68000_base_device_ops::m68k_op_asr_8_r, 0xf1f8, 0xe020, {  6,   6,   6,   6,   6,   6,   6}},
33314   {m68000_base_device_ops::m68k_op_lsr_8_r, 0xf1f8, 0xe028, {  6,   6,   6,   6,   6,   6,   6}},
33315   {m68000_base_device_ops::m68k_op_roxr_8_r, 0xf1f8, 0xe030, {  6,   6,  12,  12,  12,  12,  12}},
33316   {m68000_base_device_ops::m68k_op_ror_8_r, 0xf1f8, 0xe038, {  6,   6,   8,   8,   8,   8,   8}},
33317   {m68000_base_device_ops::m68k_op_asr_16_s, 0xf1f8, 0xe040, {  6,   6,   6,   6,   6,   6,   6}},
33318   {m68000_base_device_ops::m68k_op_lsr_16_s, 0xf1f8, 0xe048, {  6,   6,   4,   4,   4,   4,   4}},
33319   {m68000_base_device_ops::m68k_op_roxr_16_s, 0xf1f8, 0xe050, {  6,   6,  12,  12,  12,  12,  12}},
33320   {m68000_base_device_ops::m68k_op_ror_16_s, 0xf1f8, 0xe058, {  6,   6,   8,   8,   8,   8,   8}},
33321   {m68000_base_device_ops::m68k_op_asr_16_r, 0xf1f8, 0xe060, {  6,   6,   6,   6,   6,   6,   6}},
33322   {m68000_base_device_ops::m68k_op_lsr_16_r, 0xf1f8, 0xe068, {  6,   6,   6,   6,   6,   6,   6}},
33323   {m68000_base_device_ops::m68k_op_roxr_16_r, 0xf1f8, 0xe070, {  6,   6,  12,  12,  12,  12,  12}},
33324   {m68000_base_device_ops::m68k_op_ror_16_r, 0xf1f8, 0xe078, {  6,   6,   8,   8,   8,   8,   8}},
33325   {m68000_base_device_ops::m68k_op_asr_32_s, 0xf1f8, 0xe080, {  8,   8,   6,   6,   6,   6,   6}},
33326   {m68000_base_device_ops::m68k_op_lsr_32_s, 0xf1f8, 0xe088, {  8,   8,   4,   4,   4,   4,   4}},
33327   {m68000_base_device_ops::m68k_op_roxr_32_s, 0xf1f8, 0xe090, {  8,   8,  12,  12,  12,  12,  12}},
33328   {m68000_base_device_ops::m68k_op_ror_32_s, 0xf1f8, 0xe098, {  8,   8,   8,   8,   8,   8,   8}},
33329   {m68000_base_device_ops::m68k_op_asr_32_r, 0xf1f8, 0xe0a0, {  8,   8,   6,   6,   6,   6,   6}},
33330   {m68000_base_device_ops::m68k_op_lsr_32_r, 0xf1f8, 0xe0a8, {  8,   8,   6,   6,   6,   6,   6}},
33331   {m68000_base_device_ops::m68k_op_roxr_32_r, 0xf1f8, 0xe0b0, {  8,   8,  12,  12,  12,  12,  12}},
33332   {m68000_base_device_ops::m68k_op_ror_32_r, 0xf1f8, 0xe0b8, {  8,   8,   8,   8,   8,   8,   8}},
33333   {m68000_base_device_ops::m68k_op_asl_8_s, 0xf1f8, 0xe100, {  6,   6,   8,   8,   8,   8,   8}},
33334   {m68000_base_device_ops::m68k_op_lsl_8_s, 0xf1f8, 0xe108, {  6,   6,   4,   4,   4,   4,   4}},
33335   {m68000_base_device_ops::m68k_op_roxl_8_s, 0xf1f8, 0xe110, {  6,   6,  12,  12,  12,  12,  12}},
33336   {m68000_base_device_ops::m68k_op_rol_8_s, 0xf1f8, 0xe118, {  6,   6,   8,   8,   8,   8,   8}},
33337   {m68000_base_device_ops::m68k_op_asl_8_r, 0xf1f8, 0xe120, {  6,   6,   8,   8,   8,   8,   8}},
33338   {m68000_base_device_ops::m68k_op_lsl_8_r, 0xf1f8, 0xe128, {  6,   6,   6,   6,   6,   6,   6}},
33339   {m68000_base_device_ops::m68k_op_roxl_8_r, 0xf1f8, 0xe130, {  6,   6,  12,  12,  12,  12,  12}},
33340   {m68000_base_device_ops::m68k_op_rol_8_r, 0xf1f8, 0xe138, {  6,   6,   8,   8,   8,   8,   8}},
33341   {m68000_base_device_ops::m68k_op_asl_16_s, 0xf1f8, 0xe140, {  6,   6,   8,   8,   8,   8,   8}},
33342   {m68000_base_device_ops::m68k_op_lsl_16_s, 0xf1f8, 0xe148, {  6,   6,   4,   4,   4,   4,   4}},
33343   {m68000_base_device_ops::m68k_op_roxl_16_s, 0xf1f8, 0xe150, {  6,   6,  12,  12,  12,  12,  12}},
33344   {m68000_base_device_ops::m68k_op_rol_16_s, 0xf1f8, 0xe158, {  6,   6,   8,   8,   8,   8,   8}},
33345   {m68000_base_device_ops::m68k_op_asl_16_r, 0xf1f8, 0xe160, {  6,   6,   8,   8,   8,   8,   8}},
33346   {m68000_base_device_ops::m68k_op_lsl_16_r, 0xf1f8, 0xe168, {  6,   6,   6,   6,   6,   6,   6}},
33347   {m68000_base_device_ops::m68k_op_roxl_16_r, 0xf1f8, 0xe170, {  6,   6,  12,  12,  12,  12,  12}},
33348   {m68000_base_device_ops::m68k_op_rol_16_r, 0xf1f8, 0xe178, {  6,   6,   8,   8,   8,   8,   8}},
33349   {m68000_base_device_ops::m68k_op_asl_32_s, 0xf1f8, 0xe180, {  8,   8,   8,   8,   8,   8,   8}},
33350   {m68000_base_device_ops::m68k_op_lsl_32_s, 0xf1f8, 0xe188, {  8,   8,   4,   4,   4,   4,   4}},
33351   {m68000_base_device_ops::m68k_op_roxl_32_s, 0xf1f8, 0xe190, {  8,   8,  12,  12,  12,  12,  12}},
33352   {m68000_base_device_ops::m68k_op_rol_32_s, 0xf1f8, 0xe198, {  8,   8,   8,   8,   8,   8,   8}},
33353   {m68000_base_device_ops::m68k_op_asl_32_r, 0xf1f8, 0xe1a0, {  8,   8,   8,   8,   8,   8,   8}},
33354   {m68000_base_device_ops::m68k_op_lsl_32_r, 0xf1f8, 0xe1a8, {  8,   8,   6,   6,   6,   6,   6}},
33355   {m68000_base_device_ops::m68k_op_roxl_32_r, 0xf1f8, 0xe1b0, {  8,   8,  12,  12,  12,  12,  12}},
33356   {m68000_base_device_ops::m68k_op_rol_32_r, 0xf1f8, 0xe1b8, {  8,   8,   8,   8,   8,   8,   8}},
33357   {m68000_base_device_ops::m68k_op_cpdbcc_32, 0xf1f8, 0xf048, {255, 255,   4,   4, 255, 255, 255}},
33358   {m68000_base_device_ops::m68k_op_cptrapcc_32, 0xf1f8, 0xf078, {255, 255,   4,   4, 255, 255, 255}},
33359   {m68000_base_device_ops::m68k_op_ptest_32, 0xffd8, 0xf548, {255, 255, 255, 255,   8, 255, 255}},
33360   {m68000_base_device_ops::m68k_op_rtm_32, 0xfff0, 0x06c0, {255, 255,  19,  19,  19,  19,  19}},
33361   {m68000_base_device_ops::m68k_op_trap, 0xfff0, 0x4e40, {  4,   4,   4,   4,   4,   4,   4}},
33362   {m68000_base_device_ops::m68k_op_btst_8_r_pi7, 0xf1ff, 0x011f, {  8,   8,   8,   8,   8,   8,   4}},
33363   {m68000_base_device_ops::m68k_op_btst_8_r_pd7, 0xf1ff, 0x0127, { 10,  10,   9,   9,   9,   9,   4}},
33364   {m68000_base_device_ops::m68k_op_btst_8_r_aw, 0xf1ff, 0x0138, { 12,  12,   8,   8,   8,   8,   4}},
33365   {m68000_base_device_ops::m68k_op_btst_8_r_al, 0xf1ff, 0x0139, { 16,  16,   8,   8,   8,   8,   4}},
33366   {m68000_base_device_ops::m68k_op_btst_8_r_pcdi, 0xf1ff, 0x013a, { 12,  12,   9,   9,   9,   9,   4}},
33367   {m68000_base_device_ops::m68k_op_btst_8_r_pcix, 0xf1ff, 0x013b, { 14,  14,  11,  11,  11,  11,   4}},
33368   {m68000_base_device_ops::m68k_op_btst_8_r_i, 0xf1ff, 0x013c, {  8,   8,   6,   6,   6,   6,   4}},
33369   {m68000_base_device_ops::m68k_op_bchg_8_r_pi7, 0xf1ff, 0x015f, { 12,  12,   8,   8,   8,   8,   4}},
33370   {m68000_base_device_ops::m68k_op_bchg_8_r_pd7, 0xf1ff, 0x0167, { 14,  14,   9,   9,   9,   9,   4}},
33371   {m68000_base_device_ops::m68k_op_bchg_8_r_aw, 0xf1ff, 0x0178, { 16,  16,   8,   8,   8,   8,   4}},
33372   {m68000_base_device_ops::m68k_op_bchg_8_r_al, 0xf1ff, 0x0179, { 20,  20,   8,   8,   8,   8,   4}},
33373   {m68000_base_device_ops::m68k_op_bclr_8_r_pi7, 0xf1ff, 0x019f, { 12,  14,   8,   8,   8,   8,   4}},
33374   {m68000_base_device_ops::m68k_op_bclr_8_r_pd7, 0xf1ff, 0x01a7, { 14,  16,   9,   9,   9,   9,   4}},
33375   {m68000_base_device_ops::m68k_op_bclr_8_r_aw, 0xf1ff, 0x01b8, { 16,  18,   8,   8,   8,   8,   4}},
33376   {m68000_base_device_ops::m68k_op_bclr_8_r_al, 0xf1ff, 0x01b9, { 20,  22,   8,   8,   8,   8,   4}},
33377   {m68000_base_device_ops::m68k_op_bset_8_r_pi7, 0xf1ff, 0x01df, { 12,  12,   8,   8,   8,   8,   4}},
33378   {m68000_base_device_ops::m68k_op_bset_8_r_pd7, 0xf1ff, 0x01e7, { 14,  14,   9,   9,   9,   9,   4}},
33379   {m68000_base_device_ops::m68k_op_bset_8_r_aw, 0xf1ff, 0x01f8, { 16,  16,   8,   8,   8,   8,   4}},
33380   {m68000_base_device_ops::m68k_op_bset_8_r_al, 0xf1ff, 0x01f9, { 20,  20,   8,   8,   8,   8,   4}},
33381   {m68000_base_device_ops::m68k_op_move_8_d_pi7, 0xf1ff, 0x101f, {  8,   8,   6,   6,   6,   6,   2}},
33382   {m68000_base_device_ops::m68k_op_move_8_d_pd7, 0xf1ff, 0x1027, { 10,  10,   7,   7,   7,   7,   2}},
33383   {m68000_base_device_ops::m68k_op_move_8_d_aw, 0xf1ff, 0x1038, { 12,  12,   6,   6,   6,   6,   2}},
33384   {m68000_base_device_ops::m68k_op_move_8_d_al, 0xf1ff, 0x1039, { 16,  16,   6,   6,   6,   6,   2}},
33385   {m68000_base_device_ops::m68k_op_move_8_d_pcdi, 0xf1ff, 0x103a, { 12,  12,   7,   7,   7,   7,   2}},
33386   {m68000_base_device_ops::m68k_op_move_8_d_pcix, 0xf1ff, 0x103b, { 14,  14,   9,   9,   9,   9,   2}},
33387   {m68000_base_device_ops::m68k_op_move_8_d_i, 0xf1ff, 0x103c, {  8,   8,   4,   4,   4,   4,   2}},
33388   {m68000_base_device_ops::m68k_op_move_8_ai_pi7, 0xf1ff, 0x109f, { 12,  12,   8,   8,   8,   8,   4}},
33389   {m68000_base_device_ops::m68k_op_move_8_ai_pd7, 0xf1ff, 0x10a7, { 14,  14,   9,   9,   9,   9,   4}},
33390   {m68000_base_device_ops::m68k_op_move_8_ai_aw, 0xf1ff, 0x10b8, { 16,  16,   8,   8,   8,   8,   4}},
33391   {m68000_base_device_ops::m68k_op_move_8_ai_al, 0xf1ff, 0x10b9, { 20,  20,   8,   8,   8,   8,   4}},
33392   {m68000_base_device_ops::m68k_op_move_8_ai_pcdi, 0xf1ff, 0x10ba, { 16,  16,   9,   9,   9,   9,   4}},
33393   {m68000_base_device_ops::m68k_op_move_8_ai_pcix, 0xf1ff, 0x10bb, { 18,  18,  11,  11,  11,  11,   4}},
33394   {m68000_base_device_ops::m68k_op_move_8_ai_i, 0xf1ff, 0x10bc, { 12,  12,   6,   6,   6,   6,   4}},
33395   {m68000_base_device_ops::m68k_op_move_8_pi_pi7, 0xf1ff, 0x10df, { 12,  12,   8,   8,   8,   8,   4}},
33396   {m68000_base_device_ops::m68k_op_move_8_pi_pd7, 0xf1ff, 0x10e7, { 14,  14,   9,   9,   9,   9,   4}},
33397   {m68000_base_device_ops::m68k_op_move_8_pi_aw, 0xf1ff, 0x10f8, { 16,  16,   8,   8,   8,   8,   4}},
33398   {m68000_base_device_ops::m68k_op_move_8_pi_al, 0xf1ff, 0x10f9, { 20,  20,   8,   8,   8,   8,   4}},
33399   {m68000_base_device_ops::m68k_op_move_8_pi_pcdi, 0xf1ff, 0x10fa, { 16,  16,   9,   9,   9,   9,   4}},
33400   {m68000_base_device_ops::m68k_op_move_8_pi_pcix, 0xf1ff, 0x10fb, { 18,  18,  11,  11,  11,  11,   4}},
33401   {m68000_base_device_ops::m68k_op_move_8_pi_i, 0xf1ff, 0x10fc, { 12,  12,   6,   6,   6,   6,   4}},
33402   {m68000_base_device_ops::m68k_op_move_8_pd_pi7, 0xf1ff, 0x111f, { 12,  12,   9,   9,   9,   9,   5}},
33403   {m68000_base_device_ops::m68k_op_move_8_pd_pd7, 0xf1ff, 0x1127, { 14,  14,  10,  10,  10,  10,   5}},
33404   {m68000_base_device_ops::m68k_op_move_8_pd_aw, 0xf1ff, 0x1138, { 16,  16,   9,   9,   9,   9,   5}},
33405   {m68000_base_device_ops::m68k_op_move_8_pd_al, 0xf1ff, 0x1139, { 20,  20,   9,   9,   9,   9,   5}},
33406   {m68000_base_device_ops::m68k_op_move_8_pd_pcdi, 0xf1ff, 0x113a, { 16,  16,  10,  10,  10,  10,   5}},
33407   {m68000_base_device_ops::m68k_op_move_8_pd_pcix, 0xf1ff, 0x113b, { 18,  18,  12,  12,  12,  12,   5}},
33408   {m68000_base_device_ops::m68k_op_move_8_pd_i, 0xf1ff, 0x113c, { 12,  12,   7,   7,   7,   7,   5}},
33409   {m68000_base_device_ops::m68k_op_move_8_di_pi7, 0xf1ff, 0x115f, { 16,  16,   9,   9,   9,   9,   5}},
33410   {m68000_base_device_ops::m68k_op_move_8_di_pd7, 0xf1ff, 0x1167, { 18,  18,  10,  10,  10,  10,   5}},
33411   {m68000_base_device_ops::m68k_op_move_8_di_aw, 0xf1ff, 0x1178, { 20,  20,   9,   9,   9,   9,   5}},
33412   {m68000_base_device_ops::m68k_op_move_8_di_al, 0xf1ff, 0x1179, { 24,  24,   9,   9,   9,   9,   5}},
33413   {m68000_base_device_ops::m68k_op_move_8_di_pcdi, 0xf1ff, 0x117a, { 20,  20,  10,  10,  10,  10,   5}},
33414   {m68000_base_device_ops::m68k_op_move_8_di_pcix, 0xf1ff, 0x117b, { 22,  22,  12,  12,  12,  12,   5}},
33415   {m68000_base_device_ops::m68k_op_move_8_di_i, 0xf1ff, 0x117c, { 16,  16,   7,   7,   7,   7,   5}},
33416   {m68000_base_device_ops::m68k_op_move_8_ix_pi7, 0xf1ff, 0x119f, { 18,  18,  11,  11,  11,  11,   7}},
33417   {m68000_base_device_ops::m68k_op_move_8_ix_pd7, 0xf1ff, 0x11a7, { 20,  20,  12,  12,  12,  12,   7}},
33418   {m68000_base_device_ops::m68k_op_move_8_ix_aw, 0xf1ff, 0x11b8, { 22,  22,  11,  11,  11,  11,   7}},
33419   {m68000_base_device_ops::m68k_op_move_8_ix_al, 0xf1ff, 0x11b9, { 26,  26,  11,  11,  11,  11,   7}},
33420   {m68000_base_device_ops::m68k_op_move_8_ix_pcdi, 0xf1ff, 0x11ba, { 22,  22,  12,  12,  12,  12,   7}},
33421   {m68000_base_device_ops::m68k_op_move_8_ix_pcix, 0xf1ff, 0x11bb, { 24,  24,  14,  14,  14,  14,   7}},
33422   {m68000_base_device_ops::m68k_op_move_8_ix_i, 0xf1ff, 0x11bc, { 18,  18,   9,   9,   9,   9,   7}},
33423   {m68000_base_device_ops::m68k_op_move_32_d_aw, 0xf1ff, 0x2038, { 16,  16,   6,   6,   6,   6,   2}},
33424   {m68000_base_device_ops::m68k_op_move_32_d_al, 0xf1ff, 0x2039, { 20,  20,   6,   6,   6,   6,   2}},
33425   {m68000_base_device_ops::m68k_op_move_32_d_pcdi, 0xf1ff, 0x203a, { 16,  16,   7,   7,   7,   7,   2}},
33426   {m68000_base_device_ops::m68k_op_move_32_d_pcix, 0xf1ff, 0x203b, { 18,  18,   9,   9,   9,   9,   2}},
33427   {m68000_base_device_ops::m68k_op_move_32_d_i, 0xf1ff, 0x203c, { 12,  12,   6,   6,   6,   6,   2}},
33428   {m68000_base_device_ops::m68k_op_movea_32_aw, 0xf1ff, 0x2078, { 16,  16,   6,   6,   6,   6,   2}},
33429   {m68000_base_device_ops::m68k_op_movea_32_al, 0xf1ff, 0x2079, { 20,  20,   6,   6,   6,   6,   2}},
33430   {m68000_base_device_ops::m68k_op_movea_32_pcdi, 0xf1ff, 0x207a, { 16,  16,   7,   7,   7,   7,   2}},
33431   {m68000_base_device_ops::m68k_op_movea_32_pcix, 0xf1ff, 0x207b, { 18,  18,   9,   9,   9,   9,   2}},
33432   {m68000_base_device_ops::m68k_op_movea_32_i, 0xf1ff, 0x207c, { 12,  12,   6,   6,   6,   6,   2}},
33433   {m68000_base_device_ops::m68k_op_move_32_ai_aw, 0xf1ff, 0x20b8, { 24,  24,   8,   8,   8,   8,   4}},
33434   {m68000_base_device_ops::m68k_op_move_32_ai_al, 0xf1ff, 0x20b9, { 28,  28,   8,   8,   8,   8,   4}},
33435   {m68000_base_device_ops::m68k_op_move_32_ai_pcdi, 0xf1ff, 0x20ba, { 24,  24,   9,   9,   9,   9,   4}},
33436   {m68000_base_device_ops::m68k_op_move_32_ai_pcix, 0xf1ff, 0x20bb, { 26,  26,  11,  11,  11,  11,   4}},
33437   {m68000_base_device_ops::m68k_op_move_32_ai_i, 0xf1ff, 0x20bc, { 20,  20,   8,   8,   8,   8,   4}},
33438   {m68000_base_device_ops::m68k_op_move_32_pi_aw, 0xf1ff, 0x20f8, { 24,  24,   8,   8,   8,   8,   4}},
33439   {m68000_base_device_ops::m68k_op_move_32_pi_al, 0xf1ff, 0x20f9, { 28,  28,   8,   8,   8,   8,   4}},
33440   {m68000_base_device_ops::m68k_op_move_32_pi_pcdi, 0xf1ff, 0x20fa, { 24,  24,   9,   9,   9,   9,   4}},
33441   {m68000_base_device_ops::m68k_op_move_32_pi_pcix, 0xf1ff, 0x20fb, { 26,  26,  11,  11,  11,  11,   4}},
33442   {m68000_base_device_ops::m68k_op_move_32_pi_i, 0xf1ff, 0x20fc, { 20,  20,   8,   8,   8,   8,   4}},
33443   {m68000_base_device_ops::m68k_op_move_32_pd_aw, 0xf1ff, 0x2138, { 24,  26,   9,   9,   9,   9,   5}},
33444   {m68000_base_device_ops::m68k_op_move_32_pd_al, 0xf1ff, 0x2139, { 28,  30,   9,   9,   9,   9,   5}},
33445   {m68000_base_device_ops::m68k_op_move_32_pd_pcdi, 0xf1ff, 0x213a, { 24,  26,  10,  10,  10,  10,   5}},
33446   {m68000_base_device_ops::m68k_op_move_32_pd_pcix, 0xf1ff, 0x213b, { 26,  28,  12,  12,  12,  12,   5}},
33447   {m68000_base_device_ops::m68k_op_move_32_pd_i, 0xf1ff, 0x213c, { 20,  22,   9,   9,   9,   9,   5}},
33448   {m68000_base_device_ops::m68k_op_move_32_di_aw, 0xf1ff, 0x2178, { 28,  28,   9,   9,   9,   9,   5}},
33449   {m68000_base_device_ops::m68k_op_move_32_di_al, 0xf1ff, 0x2179, { 32,  32,   9,   9,   9,   9,   5}},
33450   {m68000_base_device_ops::m68k_op_move_32_di_pcdi, 0xf1ff, 0x217a, { 28,  28,  10,  10,  10,  10,   5}},
33451   {m68000_base_device_ops::m68k_op_move_32_di_pcix, 0xf1ff, 0x217b, { 30,  30,  12,  12,  12,  12,   5}},
33452   {m68000_base_device_ops::m68k_op_move_32_di_i, 0xf1ff, 0x217c, { 24,  24,   9,   9,   9,   9,   5}},
33453   {m68000_base_device_ops::m68k_op_move_32_ix_aw, 0xf1ff, 0x21b8, { 30,  30,  11,  11,  11,  11,   7}},
33454   {m68000_base_device_ops::m68k_op_move_32_ix_al, 0xf1ff, 0x21b9, { 34,  34,  11,  11,  11,  11,   7}},
33455   {m68000_base_device_ops::m68k_op_move_32_ix_pcdi, 0xf1ff, 0x21ba, { 30,  30,  12,  12,  12,  12,   7}},
33456   {m68000_base_device_ops::m68k_op_move_32_ix_pcix, 0xf1ff, 0x21bb, { 32,  32,  14,  14,  14,  14,   7}},
33457   {m68000_base_device_ops::m68k_op_move_32_ix_i, 0xf1ff, 0x21bc, { 26,  26,  11,  11,  11,  11,   7}},
33458   {m68000_base_device_ops::m68k_op_move_16_d_aw, 0xf1ff, 0x3038, { 12,  12,   6,   6,   6,   6,   2}},
33459   {m68000_base_device_ops::m68k_op_move_16_d_al, 0xf1ff, 0x3039, { 16,  16,   6,   6,   6,   6,   2}},
33460   {m68000_base_device_ops::m68k_op_move_16_d_pcdi, 0xf1ff, 0x303a, { 12,  12,   7,   7,   7,   7,   2}},
33461   {m68000_base_device_ops::m68k_op_move_16_d_pcix, 0xf1ff, 0x303b, { 14,  14,   9,   9,   9,   9,   2}},
33462   {m68000_base_device_ops::m68k_op_move_16_d_i, 0xf1ff, 0x303c, {  8,   8,   4,   4,   4,   4,   2}},
33463   {m68000_base_device_ops::m68k_op_movea_16_aw, 0xf1ff, 0x3078, { 12,  12,   6,   6,   6,   6,   2}},
33464   {m68000_base_device_ops::m68k_op_movea_16_al, 0xf1ff, 0x3079, { 16,  16,   6,   6,   6,   6,   2}},
33465   {m68000_base_device_ops::m68k_op_movea_16_pcdi, 0xf1ff, 0x307a, { 12,  12,   7,   7,   7,   7,   2}},
33466   {m68000_base_device_ops::m68k_op_movea_16_pcix, 0xf1ff, 0x307b, { 14,  14,   9,   9,   9,   9,   2}},
33467   {m68000_base_device_ops::m68k_op_movea_16_i, 0xf1ff, 0x307c, {  8,   8,   4,   4,   4,   4,   2}},
33468   {m68000_base_device_ops::m68k_op_move_16_ai_aw, 0xf1ff, 0x30b8, { 16,  16,   8,   8,   8,   8,   4}},
33469   {m68000_base_device_ops::m68k_op_move_16_ai_al, 0xf1ff, 0x30b9, { 20,  20,   8,   8,   8,   8,   4}},
33470   {m68000_base_device_ops::m68k_op_move_16_ai_pcdi, 0xf1ff, 0x30ba, { 16,  16,   9,   9,   9,   9,   4}},
33471   {m68000_base_device_ops::m68k_op_move_16_ai_pcix, 0xf1ff, 0x30bb, { 18,  18,  11,  11,  11,  11,   4}},
33472   {m68000_base_device_ops::m68k_op_move_16_ai_i, 0xf1ff, 0x30bc, { 12,  12,   6,   6,   6,   6,   4}},
33473   {m68000_base_device_ops::m68k_op_move_16_pi_aw, 0xf1ff, 0x30f8, { 16,  16,   8,   8,   8,   8,   4}},
33474   {m68000_base_device_ops::m68k_op_move_16_pi_al, 0xf1ff, 0x30f9, { 20,  20,   8,   8,   8,   8,   4}},
33475   {m68000_base_device_ops::m68k_op_move_16_pi_pcdi, 0xf1ff, 0x30fa, { 16,  16,   9,   9,   9,   9,   4}},
33476   {m68000_base_device_ops::m68k_op_move_16_pi_pcix, 0xf1ff, 0x30fb, { 18,  18,  11,  11,  11,  11,   4}},
33477   {m68000_base_device_ops::m68k_op_move_16_pi_i, 0xf1ff, 0x30fc, { 12,  12,   6,   6,   6,   6,   4}},
33478   {m68000_base_device_ops::m68k_op_move_16_pd_aw, 0xf1ff, 0x3138, { 16,  16,   9,   9,   9,   9,   5}},
33479   {m68000_base_device_ops::m68k_op_move_16_pd_al, 0xf1ff, 0x3139, { 20,  20,   9,   9,   9,   9,   5}},
33480   {m68000_base_device_ops::m68k_op_move_16_pd_pcdi, 0xf1ff, 0x313a, { 16,  16,  10,  10,  10,  10,   5}},
33481   {m68000_base_device_ops::m68k_op_move_16_pd_pcix, 0xf1ff, 0x313b, { 18,  18,  12,  12,  12,  12,   5}},
33482   {m68000_base_device_ops::m68k_op_move_16_pd_i, 0xf1ff, 0x313c, { 12,  12,   7,   7,   7,   7,   5}},
33483   {m68000_base_device_ops::m68k_op_move_16_di_aw, 0xf1ff, 0x3178, { 20,  20,   9,   9,   9,   9,   5}},
33484   {m68000_base_device_ops::m68k_op_move_16_di_al, 0xf1ff, 0x3179, { 24,  24,   9,   9,   9,   9,   5}},
33485   {m68000_base_device_ops::m68k_op_move_16_di_pcdi, 0xf1ff, 0x317a, { 20,  20,  10,  10,  10,  10,   5}},
33486   {m68000_base_device_ops::m68k_op_move_16_di_pcix, 0xf1ff, 0x317b, { 22,  22,  12,  12,  12,  12,   5}},
33487   {m68000_base_device_ops::m68k_op_move_16_di_i, 0xf1ff, 0x317c, { 16,  16,   7,   7,   7,   7,   5}},
33488   {m68000_base_device_ops::m68k_op_move_16_ix_aw, 0xf1ff, 0x31b8, { 22,  22,  11,  11,  11,  11,   7}},
33489   {m68000_base_device_ops::m68k_op_move_16_ix_al, 0xf1ff, 0x31b9, { 26,  26,  11,  11,  11,  11,   7}},
33490   {m68000_base_device_ops::m68k_op_move_16_ix_pcdi, 0xf1ff, 0x31ba, { 22,  22,  12,  12,  12,  12,   7}},
33491   {m68000_base_device_ops::m68k_op_move_16_ix_pcix, 0xf1ff, 0x31bb, { 24,  24,  14,  14,  14,  14,   7}},
33492   {m68000_base_device_ops::m68k_op_move_16_ix_i, 0xf1ff, 0x31bc, { 18,  18,   9,   9,   9,   9,   7}},
33493   {m68000_base_device_ops::m68k_op_chk_32_aw, 0xf1ff, 0x4138, {255, 255,  12,  12,  12,  12,   8}},
33494   {m68000_base_device_ops::m68k_op_chk_32_al, 0xf1ff, 0x4139, {255, 255,  12,  12,  12,  12,   8}},
33495   {m68000_base_device_ops::m68k_op_chk_32_pcdi, 0xf1ff, 0x413a, {255, 255,  13,  13,  13,  13,   8}},
33496   {m68000_base_device_ops::m68k_op_chk_32_pcix, 0xf1ff, 0x413b, {255, 255,  15,  15,  15,  15,   8}},
33497   {m68000_base_device_ops::m68k_op_chk_32_i, 0xf1ff, 0x413c, {255, 255,  12,  12,  12,  12,   8}},
33498   {m68000_base_device_ops::m68k_op_chk_16_aw, 0xf1ff, 0x41b8, { 18,  16,  12,  12,  12,  12,   8}},
33499   {m68000_base_device_ops::m68k_op_chk_16_al, 0xf1ff, 0x41b9, { 22,  20,  12,  12,  12,  12,   8}},
33500   {m68000_base_device_ops::m68k_op_chk_16_pcdi, 0xf1ff, 0x41ba, { 18,  16,  13,  13,  13,  13,   8}},
33501   {m68000_base_device_ops::m68k_op_chk_16_pcix, 0xf1ff, 0x41bb, { 20,  18,  15,  15,  15,  15,   8}},
33502   {m68000_base_device_ops::m68k_op_chk_16_i, 0xf1ff, 0x41bc, { 14,  12,  10,  10,  10,  10,   8}},
33503   {m68000_base_device_ops::m68k_op_lea_32_aw, 0xf1ff, 0x41f8, {  8,   8,   6,   6,   6,   6,   2}},
33504   {m68000_base_device_ops::m68k_op_lea_32_al, 0xf1ff, 0x41f9, { 12,  12,   6,   6,   6,   6,   2}},
33505   {m68000_base_device_ops::m68k_op_lea_32_pcdi, 0xf1ff, 0x41fa, {  8,   8,   7,   7,   7,   7,   2}},
33506   {m68000_base_device_ops::m68k_op_lea_32_pcix, 0xf1ff, 0x41fb, { 12,  12,   9,   9,   9,   9,   2}},
33507   {m68000_base_device_ops::m68k_op_addq_8_pi7, 0xf1ff, 0x501f, { 12,  12,   8,   8,   8,   8,   4}},
33508   {m68000_base_device_ops::m68k_op_addq_8_pd7, 0xf1ff, 0x5027, { 14,  14,   9,   9,   9,   9,   4}},
33509   {m68000_base_device_ops::m68k_op_addq_8_aw, 0xf1ff, 0x5038, { 16,  16,   8,   8,   8,   8,   4}},
33510   {m68000_base_device_ops::m68k_op_addq_8_al, 0xf1ff, 0x5039, { 20,  20,   8,   8,   8,   8,   4}},
33511   {m68000_base_device_ops::m68k_op_addq_16_aw, 0xf1ff, 0x5078, { 16,  16,   8,   8,   8,   8,   4}},
33512   {m68000_base_device_ops::m68k_op_addq_16_al, 0xf1ff, 0x5079, { 20,  20,   8,   8,   8,   8,   4}},
33513   {m68000_base_device_ops::m68k_op_addq_32_aw, 0xf1ff, 0x50b8, { 24,  24,   8,   8,   8,   8,   4}},
33514   {m68000_base_device_ops::m68k_op_addq_32_al, 0xf1ff, 0x50b9, { 28,  28,   8,   8,   8,   8,   4}},
33515   {m68000_base_device_ops::m68k_op_subq_8_pi7, 0xf1ff, 0x511f, { 12,  12,   8,   8,   8,   8,   4}},
33516   {m68000_base_device_ops::m68k_op_subq_8_pd7, 0xf1ff, 0x5127, { 14,  14,   9,   9,   9,   9,   4}},
33517   {m68000_base_device_ops::m68k_op_subq_8_aw, 0xf1ff, 0x5138, { 16,  16,   8,   8,   8,   8,   4}},
33518   {m68000_base_device_ops::m68k_op_subq_8_al, 0xf1ff, 0x5139, { 20,  20,   8,   8,   8,   8,   4}},
33519   {m68000_base_device_ops::m68k_op_subq_16_aw, 0xf1ff, 0x5178, { 16,  16,   8,   8,   8,   8,   4}},
33520   {m68000_base_device_ops::m68k_op_subq_16_al, 0xf1ff, 0x5179, { 20,  20,   8,   8,   8,   8,   4}},
33521   {m68000_base_device_ops::m68k_op_subq_32_aw, 0xf1ff, 0x51b8, { 24,  24,   8,   8,   8,   8,   4}},
33522   {m68000_base_device_ops::m68k_op_subq_32_al, 0xf1ff, 0x51b9, { 28,  28,   8,   8,   8,   8,   4}},
33523   {m68000_base_device_ops::m68k_op_or_8_er_pi7, 0xf1ff, 0x801f, {  8,   8,   6,   6,   6,   6,   2}},
33524   {m68000_base_device_ops::m68k_op_or_8_er_pd7, 0xf1ff, 0x8027, { 10,  10,   7,   7,   7,   7,   2}},
33525   {m68000_base_device_ops::m68k_op_or_8_er_aw, 0xf1ff, 0x8038, { 12,  12,   6,   6,   6,   6,   2}},
33526   {m68000_base_device_ops::m68k_op_or_8_er_al, 0xf1ff, 0x8039, { 16,  16,   6,   6,   6,   6,   2}},
33527   {m68000_base_device_ops::m68k_op_or_8_er_pcdi, 0xf1ff, 0x803a, { 12,  12,   7,   7,   7,   7,   2}},
33528   {m68000_base_device_ops::m68k_op_or_8_er_pcix, 0xf1ff, 0x803b, { 14,  14,   9,   9,   9,   9,   2}},
33529   {m68000_base_device_ops::m68k_op_or_8_er_i, 0xf1ff, 0x803c, {  8,   8,   4,   4,   4,   4,   2}},
33530   {m68000_base_device_ops::m68k_op_or_16_er_aw, 0xf1ff, 0x8078, { 12,  12,   6,   6,   6,   6,   2}},
33531   {m68000_base_device_ops::m68k_op_or_16_er_al, 0xf1ff, 0x8079, { 16,  16,   6,   6,   6,   6,   2}},
33532   {m68000_base_device_ops::m68k_op_or_16_er_pcdi, 0xf1ff, 0x807a, { 12,  12,   7,   7,   7,   7,   2}},
33533   {m68000_base_device_ops::m68k_op_or_16_er_pcix, 0xf1ff, 0x807b, { 14,  14,   9,   9,   9,   9,   2}},
33534   {m68000_base_device_ops::m68k_op_or_16_er_i, 0xf1ff, 0x807c, {  8,   8,   4,   4,   4,   4,   2}},
33535   {m68000_base_device_ops::m68k_op_or_32_er_aw, 0xf1ff, 0x80b8, { 18,  18,   6,   6,   6,   6,   2}},
33536   {m68000_base_device_ops::m68k_op_or_32_er_al, 0xf1ff, 0x80b9, { 22,  22,   6,   6,   6,   6,   2}},
33537   {m68000_base_device_ops::m68k_op_or_32_er_pcdi, 0xf1ff, 0x80ba, { 18,  18,   7,   7,   7,   7,   2}},
33538   {m68000_base_device_ops::m68k_op_or_32_er_pcix, 0xf1ff, 0x80bb, { 20,  20,   9,   9,   9,   9,   2}},
33539   {m68000_base_device_ops::m68k_op_or_32_er_i, 0xf1ff, 0x80bc, { 16,  14,   6,   6,   6,   6,   2}},
33540   {m68000_base_device_ops::m68k_op_divu_16_aw, 0xf1ff, 0x80f8, {148, 116,  48,  48,  48,  48,  44}},
33541   {m68000_base_device_ops::m68k_op_divu_16_al, 0xf1ff, 0x80f9, {152, 120,  48,  48,  48,  48,  44}},
33542   {m68000_base_device_ops::m68k_op_divu_16_pcdi, 0xf1ff, 0x80fa, {148, 116,  49,  49,  49,  49,  44}},
33543   {m68000_base_device_ops::m68k_op_divu_16_pcix, 0xf1ff, 0x80fb, {150, 118,  51,  51,  51,  51,  44}},
33544   {m68000_base_device_ops::m68k_op_divu_16_i, 0xf1ff, 0x80fc, {144, 112,  46,  46,  46,  46,  44}},
33545   {m68000_base_device_ops::m68k_op_sbcd_8_mm_ay7, 0xf1ff, 0x810f, { 18,  18,  16,  16,  16,  16,  16}},
33546   {m68000_base_device_ops::m68k_op_or_8_re_pi7, 0xf1ff, 0x811f, { 12,  12,   8,   8,   8,   8,   4}},
33547   {m68000_base_device_ops::m68k_op_or_8_re_pd7, 0xf1ff, 0x8127, { 14,  14,   9,   9,   9,   9,   4}},
33548   {m68000_base_device_ops::m68k_op_or_8_re_aw, 0xf1ff, 0x8138, { 16,  16,   8,   8,   8,   8,   4}},
33549   {m68000_base_device_ops::m68k_op_or_8_re_al, 0xf1ff, 0x8139, { 20,  20,   8,   8,   8,   8,   4}},
33550   {m68000_base_device_ops::m68k_op_pack_16_mm_ay7, 0xf1ff, 0x814f, {255, 255,  13,  13,  13,  13,  13}},
33551   {m68000_base_device_ops::m68k_op_or_16_re_aw, 0xf1ff, 0x8178, { 16,  16,   8,   8,   8,   8,   4}},
33552   {m68000_base_device_ops::m68k_op_or_16_re_al, 0xf1ff, 0x8179, { 20,  20,   8,   8,   8,   8,   4}},
33553   {m68000_base_device_ops::m68k_op_unpk_16_mm_ay7, 0xf1ff, 0x818f, {255, 255,  13,  13,  13,  13,  13}},
33554   {m68000_base_device_ops::m68k_op_or_32_re_aw, 0xf1ff, 0x81b8, { 24,  24,   8,   8,   8,   8,   4}},
33555   {m68000_base_device_ops::m68k_op_or_32_re_al, 0xf1ff, 0x81b9, { 28,  28,   8,   8,   8,   8,   4}},
33556   {m68000_base_device_ops::m68k_op_divs_16_aw, 0xf1ff, 0x81f8, {166, 130,  60,  60,  60,  60,  56}},
33557   {m68000_base_device_ops::m68k_op_divs_16_al, 0xf1ff, 0x81f9, {170, 134,  60,  60,  60,  60,  56}},
33558   {m68000_base_device_ops::m68k_op_divs_16_pcdi, 0xf1ff, 0x81fa, {166, 130,  61,  61,  61,  61,  56}},
33559   {m68000_base_device_ops::m68k_op_divs_16_pcix, 0xf1ff, 0x81fb, {168, 132,  63,  63,  63,  63,  56}},
33560   {m68000_base_device_ops::m68k_op_divs_16_i, 0xf1ff, 0x81fc, {162, 126,  58,  58,  58,  58,  56}},
33561   {m68000_base_device_ops::m68k_op_sub_8_er_pi7, 0xf1ff, 0x901f, {  8,   8,   6,   6,   6,   6,   2}},
33562   {m68000_base_device_ops::m68k_op_sub_8_er_pd7, 0xf1ff, 0x9027, { 10,  10,   7,   7,   7,   7,   2}},
33563   {m68000_base_device_ops::m68k_op_sub_8_er_aw, 0xf1ff, 0x9038, { 12,  12,   6,   6,   6,   6,   2}},
33564   {m68000_base_device_ops::m68k_op_sub_8_er_al, 0xf1ff, 0x9039, { 16,  16,   6,   6,   6,   6,   2}},
33565   {m68000_base_device_ops::m68k_op_sub_8_er_pcdi, 0xf1ff, 0x903a, { 12,  12,   7,   7,   7,   7,   2}},
33566   {m68000_base_device_ops::m68k_op_sub_8_er_pcix, 0xf1ff, 0x903b, { 14,  14,   9,   9,   9,   9,   2}},
33567   {m68000_base_device_ops::m68k_op_sub_8_er_i, 0xf1ff, 0x903c, {  8,   8,   4,   4,   4,   4,   2}},
33568   {m68000_base_device_ops::m68k_op_sub_16_er_aw, 0xf1ff, 0x9078, { 12,  12,   6,   6,   6,   6,   2}},
33569   {m68000_base_device_ops::m68k_op_sub_16_er_al, 0xf1ff, 0x9079, { 16,  16,   6,   6,   6,   6,   2}},
33570   {m68000_base_device_ops::m68k_op_sub_16_er_pcdi, 0xf1ff, 0x907a, { 12,  12,   7,   7,   7,   7,   2}},
33571   {m68000_base_device_ops::m68k_op_sub_16_er_pcix, 0xf1ff, 0x907b, { 14,  14,   9,   9,   9,   9,   2}},
33572   {m68000_base_device_ops::m68k_op_sub_16_er_i, 0xf1ff, 0x907c, {  8,   8,   4,   4,   4,   4,   2}},
33573   {m68000_base_device_ops::m68k_op_sub_32_er_aw, 0xf1ff, 0x90b8, { 18,  18,   6,   6,   6,   6,   2}},
33574   {m68000_base_device_ops::m68k_op_sub_32_er_al, 0xf1ff, 0x90b9, { 22,  22,   6,   6,   6,   6,   2}},
33575   {m68000_base_device_ops::m68k_op_sub_32_er_pcdi, 0xf1ff, 0x90ba, { 18,  18,   7,   7,   7,   7,   2}},
33576   {m68000_base_device_ops::m68k_op_sub_32_er_pcix, 0xf1ff, 0x90bb, { 20,  20,   9,   9,   9,   9,   2}},
33577   {m68000_base_device_ops::m68k_op_sub_32_er_i, 0xf1ff, 0x90bc, { 16,  14,   6,   6,   6,   6,   2}},
33578   {m68000_base_device_ops::m68k_op_suba_16_aw, 0xf1ff, 0x90f8, { 16,  16,   6,   6,   6,   6,   2}},
33579   {m68000_base_device_ops::m68k_op_suba_16_al, 0xf1ff, 0x90f9, { 20,  20,   6,   6,   6,   6,   2}},
33580   {m68000_base_device_ops::m68k_op_suba_16_pcdi, 0xf1ff, 0x90fa, { 16,  16,   7,   7,   7,   7,   2}},
33581   {m68000_base_device_ops::m68k_op_suba_16_pcix, 0xf1ff, 0x90fb, { 18,  18,   9,   9,   9,   9,   2}},
33582   {m68000_base_device_ops::m68k_op_suba_16_i, 0xf1ff, 0x90fc, { 12,  12,   4,   4,   4,   4,   2}},
33583   {m68000_base_device_ops::m68k_op_subx_8_mm_ay7, 0xf1ff, 0x910f, { 18,  18,  12,  12,  12,  12,  12}},
33584   {m68000_base_device_ops::m68k_op_sub_8_re_pi7, 0xf1ff, 0x911f, { 12,  12,   8,   8,   8,   8,   4}},
33585   {m68000_base_device_ops::m68k_op_sub_8_re_pd7, 0xf1ff, 0x9127, { 14,  14,   9,   9,   9,   9,   4}},
33586   {m68000_base_device_ops::m68k_op_sub_8_re_aw, 0xf1ff, 0x9138, { 16,  16,   8,   8,   8,   8,   4}},
33587   {m68000_base_device_ops::m68k_op_sub_8_re_al, 0xf1ff, 0x9139, { 20,  20,   8,   8,   8,   8,   4}},
33588   {m68000_base_device_ops::m68k_op_sub_16_re_aw, 0xf1ff, 0x9178, { 16,  16,   8,   8,   8,   8,   4}},
33589   {m68000_base_device_ops::m68k_op_sub_16_re_al, 0xf1ff, 0x9179, { 20,  20,   8,   8,   8,   8,   4}},
33590   {m68000_base_device_ops::m68k_op_sub_32_re_aw, 0xf1ff, 0x91b8, { 24,  24,   8,   8,   8,   8,   4}},
33591   {m68000_base_device_ops::m68k_op_sub_32_re_al, 0xf1ff, 0x91b9, { 28,  28,   8,   8,   8,   8,   4}},
33592   {m68000_base_device_ops::m68k_op_suba_32_aw, 0xf1ff, 0x91f8, { 18,  18,   6,   6,   6,   6,   2}},
33593   {m68000_base_device_ops::m68k_op_suba_32_al, 0xf1ff, 0x91f9, { 22,  22,   6,   6,   6,   6,   2}},
33594   {m68000_base_device_ops::m68k_op_suba_32_pcdi, 0xf1ff, 0x91fa, { 18,  18,   7,   7,   7,   7,   2}},
33595   {m68000_base_device_ops::m68k_op_suba_32_pcix, 0xf1ff, 0x91fb, { 20,  20,   9,   9,   9,   9,   2}},
33596   {m68000_base_device_ops::m68k_op_suba_32_i, 0xf1ff, 0x91fc, { 16,  14,   6,   6,   6,   6,   2}},
33597   {m68000_base_device_ops::m68k_op_cmp_8_pi7, 0xf1ff, 0xb01f, {  8,   8,   6,   6,   6,   6,   2}},
33598   {m68000_base_device_ops::m68k_op_cmp_8_pd7, 0xf1ff, 0xb027, { 10,  10,   7,   7,   7,   7,   2}},
33599   {m68000_base_device_ops::m68k_op_cmp_8_aw, 0xf1ff, 0xb038, { 12,  12,   6,   6,   6,   6,   2}},
33600   {m68000_base_device_ops::m68k_op_cmp_8_al, 0xf1ff, 0xb039, { 16,  16,   6,   6,   6,   6,   2}},
33601   {m68000_base_device_ops::m68k_op_cmp_8_pcdi, 0xf1ff, 0xb03a, { 12,  12,   7,   7,   7,   7,   2}},
33602   {m68000_base_device_ops::m68k_op_cmp_8_pcix, 0xf1ff, 0xb03b, { 14,  14,   9,   9,   9,   9,   2}},
33603   {m68000_base_device_ops::m68k_op_cmp_8_i, 0xf1ff, 0xb03c, {  8,   8,   4,   4,   4,   4,   2}},
33604   {m68000_base_device_ops::m68k_op_cmp_16_aw, 0xf1ff, 0xb078, { 12,  12,   6,   6,   6,   6,   2}},
33605   {m68000_base_device_ops::m68k_op_cmp_16_al, 0xf1ff, 0xb079, { 16,  16,   6,   6,   6,   6,   2}},
33606   {m68000_base_device_ops::m68k_op_cmp_16_pcdi, 0xf1ff, 0xb07a, { 12,  12,   7,   7,   7,   7,   2}},
33607   {m68000_base_device_ops::m68k_op_cmp_16_pcix, 0xf1ff, 0xb07b, { 14,  14,   9,   9,   9,   9,   2}},
33608   {m68000_base_device_ops::m68k_op_cmp_16_i, 0xf1ff, 0xb07c, {  8,   8,   4,   4,   4,   4,   2}},
33609   {m68000_base_device_ops::m68k_op_cmp_32_aw, 0xf1ff, 0xb0b8, { 18,  18,   6,   6,   6,   6,   2}},
33610   {m68000_base_device_ops::m68k_op_cmp_32_al, 0xf1ff, 0xb0b9, { 22,  22,   6,   6,   6,   6,   2}},
33611   {m68000_base_device_ops::m68k_op_cmp_32_pcdi, 0xf1ff, 0xb0ba, { 18,  18,   7,   7,   7,   7,   2}},
33612   {m68000_base_device_ops::m68k_op_cmp_32_pcix, 0xf1ff, 0xb0bb, { 20,  20,   9,   9,   9,   9,   2}},
33613   {m68000_base_device_ops::m68k_op_cmp_32_i, 0xf1ff, 0xb0bc, { 14,  14,   6,   6,   6,   6,   2}},
33614   {m68000_base_device_ops::m68k_op_cmpa_16_aw, 0xf1ff, 0xb0f8, { 14,  14,   8,   8,   8,   8,   4}},
33615   {m68000_base_device_ops::m68k_op_cmpa_16_al, 0xf1ff, 0xb0f9, { 18,  18,   8,   8,   8,   8,   4}},
33616   {m68000_base_device_ops::m68k_op_cmpa_16_pcdi, 0xf1ff, 0xb0fa, { 14,  14,   9,   9,   9,   9,   4}},
33617   {m68000_base_device_ops::m68k_op_cmpa_16_pcix, 0xf1ff, 0xb0fb, { 16,  16,  11,  11,  11,  11,   4}},
33618   {m68000_base_device_ops::m68k_op_cmpa_16_i, 0xf1ff, 0xb0fc, { 10,  10,   6,   6,   6,   6,   4}},
33619   {m68000_base_device_ops::m68k_op_cmpm_8_ay7, 0xf1ff, 0xb10f, { 12,  12,   9,   9,   9,   9,   9}},
33620   {m68000_base_device_ops::m68k_op_eor_8_pi7, 0xf1ff, 0xb11f, { 12,  12,   8,   8,   8,   8,   4}},
33621   {m68000_base_device_ops::m68k_op_eor_8_pd7, 0xf1ff, 0xb127, { 14,  14,   9,   9,   9,   9,   4}},
33622   {m68000_base_device_ops::m68k_op_eor_8_aw, 0xf1ff, 0xb138, { 16,  16,   8,   8,   8,   8,   4}},
33623   {m68000_base_device_ops::m68k_op_eor_8_al, 0xf1ff, 0xb139, { 20,  20,   8,   8,   8,   8,   4}},
33624   {m68000_base_device_ops::m68k_op_eor_16_aw, 0xf1ff, 0xb178, { 16,  16,   8,   8,   8,   8,   4}},
33625   {m68000_base_device_ops::m68k_op_eor_16_al, 0xf1ff, 0xb179, { 20,  20,   8,   8,   8,   8,   4}},
33626   {m68000_base_device_ops::m68k_op_eor_32_aw, 0xf1ff, 0xb1b8, { 24,  24,   8,   8,   8,   8,   4}},
33627   {m68000_base_device_ops::m68k_op_eor_32_al, 0xf1ff, 0xb1b9, { 28,  28,   8,   8,   8,   8,   4}},
33628   {m68000_base_device_ops::m68k_op_cmpa_32_aw, 0xf1ff, 0xb1f8, { 18,  18,   8,   8,   8,   8,   4}},
33629   {m68000_base_device_ops::m68k_op_cmpa_32_al, 0xf1ff, 0xb1f9, { 22,  22,   8,   8,   8,   8,   4}},
33630   {m68000_base_device_ops::m68k_op_cmpa_32_pcdi, 0xf1ff, 0xb1fa, { 18,  18,   9,   9,   9,   9,   4}},
33631   {m68000_base_device_ops::m68k_op_cmpa_32_pcix, 0xf1ff, 0xb1fb, { 20,  20,  11,  11,  11,  11,   4}},
33632   {m68000_base_device_ops::m68k_op_cmpa_32_i, 0xf1ff, 0xb1fc, { 14,  14,   8,   8,   8,   8,   4}},
33633   {m68000_base_device_ops::m68k_op_and_8_er_pi7, 0xf1ff, 0xc01f, {  8,   8,   6,   6,   6,   6,   2}},
33634   {m68000_base_device_ops::m68k_op_and_8_er_pd7, 0xf1ff, 0xc027, { 10,  10,   7,   7,   7,   7,   2}},
33635   {m68000_base_device_ops::m68k_op_and_8_er_aw, 0xf1ff, 0xc038, { 12,  12,   6,   6,   6,   6,   2}},
33636   {m68000_base_device_ops::m68k_op_and_8_er_al, 0xf1ff, 0xc039, { 16,  16,   6,   6,   6,   6,   2}},
33637   {m68000_base_device_ops::m68k_op_and_8_er_pcdi, 0xf1ff, 0xc03a, { 12,  12,   7,   7,   7,   7,   2}},
33638   {m68000_base_device_ops::m68k_op_and_8_er_pcix, 0xf1ff, 0xc03b, { 14,  14,   9,   9,   9,   9,   2}},
33639   {m68000_base_device_ops::m68k_op_and_8_er_i, 0xf1ff, 0xc03c, {  8,   8,   4,   4,   4,   4,   2}},
33640   {m68000_base_device_ops::m68k_op_and_16_er_aw, 0xf1ff, 0xc078, { 12,  12,   6,   6,   6,   6,   2}},
33641   {m68000_base_device_ops::m68k_op_and_16_er_al, 0xf1ff, 0xc079, { 16,  16,   6,   6,   6,   6,   2}},
33642   {m68000_base_device_ops::m68k_op_and_16_er_pcdi, 0xf1ff, 0xc07a, { 12,  12,   7,   7,   7,   7,   2}},
33643   {m68000_base_device_ops::m68k_op_and_16_er_pcix, 0xf1ff, 0xc07b, { 14,  14,   9,   9,   9,   9,   2}},
33644   {m68000_base_device_ops::m68k_op_and_16_er_i, 0xf1ff, 0xc07c, {  8,   8,   4,   4,   4,   4,   2}},
33645   {m68000_base_device_ops::m68k_op_and_32_er_aw, 0xf1ff, 0xc0b8, { 18,  18,   6,   6,   6,   6,   2}},
33646   {m68000_base_device_ops::m68k_op_and_32_er_al, 0xf1ff, 0xc0b9, { 22,  22,   6,   6,   6,   6,   2}},
33647   {m68000_base_device_ops::m68k_op_and_32_er_pcdi, 0xf1ff, 0xc0ba, { 18,  18,   7,   7,   7,   7,   2}},
33648   {m68000_base_device_ops::m68k_op_and_32_er_pcix, 0xf1ff, 0xc0bb, { 20,  20,   9,   9,   9,   9,   2}},
33649   {m68000_base_device_ops::m68k_op_and_32_er_i, 0xf1ff, 0xc0bc, { 16,  14,   6,   6,   6,   6,   2}},
33650   {m68000_base_device_ops::m68k_op_mulu_16_aw, 0xf1ff, 0xc0f8, { 62,  38,  31,  31,  31,  31,  27}},
33651   {m68000_base_device_ops::m68k_op_mulu_16_al, 0xf1ff, 0xc0f9, { 66,  42,  31,  31,  31,  31,  27}},
33652   {m68000_base_device_ops::m68k_op_mulu_16_pcdi, 0xf1ff, 0xc0fa, { 62,  38,  32,  32,  32,  32,  27}},
33653   {m68000_base_device_ops::m68k_op_mulu_16_pcix, 0xf1ff, 0xc0fb, { 64,  40,  34,  34,  34,  34,  27}},
33654   {m68000_base_device_ops::m68k_op_mulu_16_i, 0xf1ff, 0xc0fc, { 58,  34,  29,  29,  29,  29,  27}},
33655   {m68000_base_device_ops::m68k_op_abcd_8_mm_ay7, 0xf1ff, 0xc10f, { 18,  18,  16,  16,  16,  16,  16}},
33656   {m68000_base_device_ops::m68k_op_and_8_re_pi7, 0xf1ff, 0xc11f, { 12,  12,   8,   8,   8,   8,   4}},
33657   {m68000_base_device_ops::m68k_op_and_8_re_pd7, 0xf1ff, 0xc127, { 14,  14,   9,   9,   9,   9,   4}},
33658   {m68000_base_device_ops::m68k_op_and_8_re_aw, 0xf1ff, 0xc138, { 16,  16,   8,   8,   8,   8,   4}},
33659   {m68000_base_device_ops::m68k_op_and_8_re_al, 0xf1ff, 0xc139, { 20,  20,   8,   8,   8,   8,   4}},
33660   {m68000_base_device_ops::m68k_op_and_16_re_aw, 0xf1ff, 0xc178, { 16,  16,   8,   8,   8,   8,   4}},
33661   {m68000_base_device_ops::m68k_op_and_16_re_al, 0xf1ff, 0xc179, { 20,  20,   8,   8,   8,   8,   4}},
33662   {m68000_base_device_ops::m68k_op_and_32_re_aw, 0xf1ff, 0xc1b8, { 24,  24,   8,   8,   8,   8,   4}},
33663   {m68000_base_device_ops::m68k_op_and_32_re_al, 0xf1ff, 0xc1b9, { 28,  28,   8,   8,   8,   8,   4}},
33664   {m68000_base_device_ops::m68k_op_muls_16_aw, 0xf1ff, 0xc1f8, { 62,  40,  31,  31,  31,  31,  27}},
33665   {m68000_base_device_ops::m68k_op_muls_16_al, 0xf1ff, 0xc1f9, { 66,  44,  31,  31,  31,  31,  27}},
33666   {m68000_base_device_ops::m68k_op_muls_16_pcdi, 0xf1ff, 0xc1fa, { 62,  40,  32,  32,  32,  32,  27}},
33667   {m68000_base_device_ops::m68k_op_muls_16_pcix, 0xf1ff, 0xc1fb, { 64,  42,  34,  34,  34,  34,  27}},
33668   {m68000_base_device_ops::m68k_op_muls_16_i, 0xf1ff, 0xc1fc, { 58,  36,  29,  29,  29,  29,  27}},
33669   {m68000_base_device_ops::m68k_op_add_8_er_pi7, 0xf1ff, 0xd01f, {  8,   8,   6,   6,   6,   6,   2}},
33670   {m68000_base_device_ops::m68k_op_add_8_er_pd7, 0xf1ff, 0xd027, { 10,  10,   7,   7,   7,   7,   2}},
33671   {m68000_base_device_ops::m68k_op_add_8_er_aw, 0xf1ff, 0xd038, { 12,  12,   6,   6,   6,   6,   2}},
33672   {m68000_base_device_ops::m68k_op_add_8_er_al, 0xf1ff, 0xd039, { 16,  16,   6,   6,   6,   6,   2}},
33673   {m68000_base_device_ops::m68k_op_add_8_er_pcdi, 0xf1ff, 0xd03a, { 12,  12,   7,   7,   7,   7,   2}},
33674   {m68000_base_device_ops::m68k_op_add_8_er_pcix, 0xf1ff, 0xd03b, { 14,  14,   9,   9,   9,   9,   2}},
33675   {m68000_base_device_ops::m68k_op_add_8_er_i, 0xf1ff, 0xd03c, {  8,   8,   4,   4,   4,   4,   2}},
33676   {m68000_base_device_ops::m68k_op_add_16_er_aw, 0xf1ff, 0xd078, { 12,  12,   6,   6,   6,   6,   2}},
33677   {m68000_base_device_ops::m68k_op_add_16_er_al, 0xf1ff, 0xd079, { 16,  16,   6,   6,   6,   6,   2}},
33678   {m68000_base_device_ops::m68k_op_add_16_er_pcdi, 0xf1ff, 0xd07a, { 12,  12,   7,   7,   7,   7,   2}},
33679   {m68000_base_device_ops::m68k_op_add_16_er_pcix, 0xf1ff, 0xd07b, { 14,  14,   9,   9,   9,   9,   2}},
33680   {m68000_base_device_ops::m68k_op_add_16_er_i, 0xf1ff, 0xd07c, {  8,   8,   4,   4,   4,   4,   2}},
33681   {m68000_base_device_ops::m68k_op_add_32_er_aw, 0xf1ff, 0xd0b8, { 18,  18,   6,   6,   6,   6,   2}},
33682   {m68000_base_device_ops::m68k_op_add_32_er_al, 0xf1ff, 0xd0b9, { 22,  22,   6,   6,   6,   6,   2}},
33683   {m68000_base_device_ops::m68k_op_add_32_er_pcdi, 0xf1ff, 0xd0ba, { 18,  18,   7,   7,   7,   7,   2}},
33684   {m68000_base_device_ops::m68k_op_add_32_er_pcix, 0xf1ff, 0xd0bb, { 20,  20,   9,   9,   9,   9,   2}},
33685   {m68000_base_device_ops::m68k_op_add_32_er_i, 0xf1ff, 0xd0bc, { 16,  14,   6,   6,   6,   6,   2}},
33686   {m68000_base_device_ops::m68k_op_adda_16_aw, 0xf1ff, 0xd0f8, { 16,  16,   6,   6,   6,   6,   2}},
33687   {m68000_base_device_ops::m68k_op_adda_16_al, 0xf1ff, 0xd0f9, { 20,  20,   6,   6,   6,   6,   2}},
33688   {m68000_base_device_ops::m68k_op_adda_16_pcdi, 0xf1ff, 0xd0fa, { 16,  16,   7,   7,   7,   7,   2}},
33689   {m68000_base_device_ops::m68k_op_adda_16_pcix, 0xf1ff, 0xd0fb, { 18,  18,   9,   9,   9,   9,   2}},
33690   {m68000_base_device_ops::m68k_op_adda_16_i, 0xf1ff, 0xd0fc, { 12,  12,   4,   4,   4,   4,   2}},
33691   {m68000_base_device_ops::m68k_op_addx_8_mm_ay7, 0xf1ff, 0xd10f, { 18,  18,  12,  12,  12,  12,  12}},
33692   {m68000_base_device_ops::m68k_op_add_8_re_pi7, 0xf1ff, 0xd11f, { 12,  12,   8,   8,   8,   8,   4}},
33693   {m68000_base_device_ops::m68k_op_add_8_re_pd7, 0xf1ff, 0xd127, { 14,  14,   9,   9,   9,   9,   4}},
33694   {m68000_base_device_ops::m68k_op_add_8_re_aw, 0xf1ff, 0xd138, { 16,  16,   8,   8,   8,   8,   4}},
33695   {m68000_base_device_ops::m68k_op_add_8_re_al, 0xf1ff, 0xd139, { 20,  20,   8,   8,   8,   8,   4}},
33696   {m68000_base_device_ops::m68k_op_add_16_re_aw, 0xf1ff, 0xd178, { 16,  16,   8,   8,   8,   8,   4}},
33697   {m68000_base_device_ops::m68k_op_add_16_re_al, 0xf1ff, 0xd179, { 20,  20,   8,   8,   8,   8,   4}},
33698   {m68000_base_device_ops::m68k_op_add_32_re_aw, 0xf1ff, 0xd1b8, { 24,  24,   8,   8,   8,   8,   4}},
33699   {m68000_base_device_ops::m68k_op_add_32_re_al, 0xf1ff, 0xd1b9, { 28,  28,   8,   8,   8,   8,   4}},
33700   {m68000_base_device_ops::m68k_op_adda_32_aw, 0xf1ff, 0xd1f8, { 18,  18,   6,   6,   6,   6,   2}},
33701   {m68000_base_device_ops::m68k_op_adda_32_al, 0xf1ff, 0xd1f9, { 22,  22,   6,   6,   6,   6,   2}},
33702   {m68000_base_device_ops::m68k_op_adda_32_pcdi, 0xf1ff, 0xd1fa, { 18,  18,   7,   7,   7,   7,   2}},
33703   {m68000_base_device_ops::m68k_op_adda_32_pcix, 0xf1ff, 0xd1fb, { 20,  20,   9,   9,   9,   9,   2}},
33704   {m68000_base_device_ops::m68k_op_adda_32_i, 0xf1ff, 0xd1fc, { 16,  14,   6,   6,   6,   6,   2}},
33705   {m68000_base_device_ops::m68k_op_ori_8_d, 0xfff8, 0x0000, {  8,   8,   2,   2,   2,   2,   2}},
33706   {m68000_base_device_ops::m68k_op_ori_8_ai, 0xfff8, 0x0010, { 16,  16,   8,   8,   8,   8,   4}},
33707   {m68000_base_device_ops::m68k_op_ori_8_pi, 0xfff8, 0x0018, { 16,  16,   8,   8,   8,   8,   4}},
33708   {m68000_base_device_ops::m68k_op_ori_8_pd, 0xfff8, 0x0020, { 18,  18,   9,   9,   9,   9,   4}},
33709   {m68000_base_device_ops::m68k_op_ori_8_di, 0xfff8, 0x0028, { 20,  20,   9,   9,   9,   9,   4}},
33710   {m68000_base_device_ops::m68k_op_ori_8_ix, 0xfff8, 0x0030, { 22,  22,  11,  11,  11,  11,   4}},
33711   {m68000_base_device_ops::m68k_op_ori_16_d, 0xfff8, 0x0040, {  8,   8,   2,   2,   2,   2,   2}},
33712   {m68000_base_device_ops::m68k_op_ori_16_ai, 0xfff8, 0x0050, { 16,  16,   8,   8,   8,   8,   4}},
33713   {m68000_base_device_ops::m68k_op_ori_16_pi, 0xfff8, 0x0058, { 16,  16,   8,   8,   8,   8,   4}},
33714   {m68000_base_device_ops::m68k_op_ori_16_pd, 0xfff8, 0x0060, { 18,  18,   9,   9,   9,   9,   4}},
33715   {m68000_base_device_ops::m68k_op_ori_16_di, 0xfff8, 0x0068, { 20,  20,   9,   9,   9,   9,   4}},
33716   {m68000_base_device_ops::m68k_op_ori_16_ix, 0xfff8, 0x0070, { 22,  22,  11,  11,  11,  11,   4}},
33717   {m68000_base_device_ops::m68k_op_ori_32_d, 0xfff8, 0x0080, { 16,  14,   2,   2,   2,   2,   2}},
33718   {m68000_base_device_ops::m68k_op_ori_32_ai, 0xfff8, 0x0090, { 28,  28,   8,   8,   8,   8,   4}},
33719   {m68000_base_device_ops::m68k_op_ori_32_pi, 0xfff8, 0x0098, { 28,  28,   8,   8,   8,   8,   4}},
33720   {m68000_base_device_ops::m68k_op_ori_32_pd, 0xfff8, 0x00a0, { 30,  30,   9,   9,   9,   9,   4}},
33721   {m68000_base_device_ops::m68k_op_ori_32_di, 0xfff8, 0x00a8, { 32,  32,   9,   9,   9,   9,   4}},
33722   {m68000_base_device_ops::m68k_op_ori_32_ix, 0xfff8, 0x00b0, { 34,  34,  11,  11,  11,  11,   4}},
33723   {m68000_base_device_ops::m68k_op_chk2cmp2_8_ai, 0xfff8, 0x00d0, {255, 255,  22,  22,  22,  22,  18}},
33724   {m68000_base_device_ops::m68k_op_chk2cmp2_8_di, 0xfff8, 0x00e8, {255, 255,  23,  23,  23,  23,  18}},
33725   {m68000_base_device_ops::m68k_op_chk2cmp2_8_ix, 0xfff8, 0x00f0, {255, 255,  25,  25,  25,  25,  18}},
33726   {m68000_base_device_ops::m68k_op_andi_8_d, 0xfff8, 0x0200, {  8,   8,   2,   2,   2,   2,   2}},
33727   {m68000_base_device_ops::m68k_op_andi_8_ai, 0xfff8, 0x0210, { 16,  16,   8,   8,   8,   8,   4}},
33728   {m68000_base_device_ops::m68k_op_andi_8_pi, 0xfff8, 0x0218, { 16,  16,   8,   8,   8,   8,   4}},
33729   {m68000_base_device_ops::m68k_op_andi_8_pd, 0xfff8, 0x0220, { 18,  18,   9,   9,   9,   9,   4}},
33730   {m68000_base_device_ops::m68k_op_andi_8_di, 0xfff8, 0x0228, { 20,  20,   9,   9,   9,   9,   4}},
33731   {m68000_base_device_ops::m68k_op_andi_8_ix, 0xfff8, 0x0230, { 22,  22,  11,  11,  11,  11,   4}},
33732   {m68000_base_device_ops::m68k_op_andi_16_d, 0xfff8, 0x0240, {  8,   8,   2,   2,   2,   2,   2}},
33733   {m68000_base_device_ops::m68k_op_andi_16_ai, 0xfff8, 0x0250, { 16,  16,   8,   8,   8,   8,   4}},
33734   {m68000_base_device_ops::m68k_op_andi_16_pi, 0xfff8, 0x0258, { 16,  16,   8,   8,   8,   8,   4}},
33735   {m68000_base_device_ops::m68k_op_andi_16_pd, 0xfff8, 0x0260, { 18,  18,   9,   9,   9,   9,   4}},
33736   {m68000_base_device_ops::m68k_op_andi_16_di, 0xfff8, 0x0268, { 20,  20,   9,   9,   9,   9,   4}},
33737   {m68000_base_device_ops::m68k_op_andi_16_ix, 0xfff8, 0x0270, { 22,  22,  11,  11,  11,  11,   4}},
33738   {m68000_base_device_ops::m68k_op_andi_32_d, 0xfff8, 0x0280, { 14,  14,   2,   2,   2,   2,   2}},
33739   {m68000_base_device_ops::m68k_op_andi_32_ai, 0xfff8, 0x0290, { 28,  28,   8,   8,   8,   8,   4}},
33740   {m68000_base_device_ops::m68k_op_andi_32_pi, 0xfff8, 0x0298, { 28,  28,   8,   8,   8,   8,   4}},
33741   {m68000_base_device_ops::m68k_op_andi_32_pd, 0xfff8, 0x02a0, { 30,  30,   9,   9,   9,   9,   4}},
33742   {m68000_base_device_ops::m68k_op_andi_32_di, 0xfff8, 0x02a8, { 32,  32,   9,   9,   9,   9,   4}},
33743   {m68000_base_device_ops::m68k_op_andi_32_ix, 0xfff8, 0x02b0, { 34,  34,  11,  11,  11,  11,   4}},
33744   {m68000_base_device_ops::m68k_op_chk2cmp2_16_ai, 0xfff8, 0x02d0, {255, 255,  22,  22,  22,  22,  18}},
33745   {m68000_base_device_ops::m68k_op_chk2cmp2_16_di, 0xfff8, 0x02e8, {255, 255,  23,  23,  23,  23,  18}},
33746   {m68000_base_device_ops::m68k_op_chk2cmp2_16_ix, 0xfff8, 0x02f0, {255, 255,  25,  25,  25,  25,  18}},
33747   {m68000_base_device_ops::m68k_op_subi_8_d, 0xfff8, 0x0400, {  8,   8,   2,   2,   2,   2,   2}},
33748   {m68000_base_device_ops::m68k_op_subi_8_ai, 0xfff8, 0x0410, { 16,  16,   8,   8,   8,   8,   4}},
33749   {m68000_base_device_ops::m68k_op_subi_8_pi, 0xfff8, 0x0418, { 16,  16,   8,   8,   8,   8,   4}},
33750   {m68000_base_device_ops::m68k_op_subi_8_pd, 0xfff8, 0x0420, { 18,  18,   9,   9,   9,   9,   4}},
33751   {m68000_base_device_ops::m68k_op_subi_8_di, 0xfff8, 0x0428, { 20,  20,   9,   9,   9,   9,   4}},
33752   {m68000_base_device_ops::m68k_op_subi_8_ix, 0xfff8, 0x0430, { 22,  22,  11,  11,  11,  11,   4}},
33753   {m68000_base_device_ops::m68k_op_subi_16_d, 0xfff8, 0x0440, {  8,   8,   2,   2,   2,   2,   2}},
33754   {m68000_base_device_ops::m68k_op_subi_16_ai, 0xfff8, 0x0450, { 16,  16,   8,   8,   8,   8,   4}},
33755   {m68000_base_device_ops::m68k_op_subi_16_pi, 0xfff8, 0x0458, { 16,  16,   8,   8,   8,   8,   4}},
33756   {m68000_base_device_ops::m68k_op_subi_16_pd, 0xfff8, 0x0460, { 18,  18,   9,   9,   9,   9,   4}},
33757   {m68000_base_device_ops::m68k_op_subi_16_di, 0xfff8, 0x0468, { 20,  20,   9,   9,   9,   9,   4}},
33758   {m68000_base_device_ops::m68k_op_subi_16_ix, 0xfff8, 0x0470, { 22,  22,  11,  11,  11,  11,   4}},
33759   {m68000_base_device_ops::m68k_op_subi_32_d, 0xfff8, 0x0480, { 16,  14,   2,   2,   2,   2,   2}},
33760   {m68000_base_device_ops::m68k_op_subi_32_ai, 0xfff8, 0x0490, { 28,  28,   8,   8,   8,   8,   4}},
33761   {m68000_base_device_ops::m68k_op_subi_32_pi, 0xfff8, 0x0498, { 28,  28,   8,   8,   8,   8,   4}},
33762   {m68000_base_device_ops::m68k_op_subi_32_pd, 0xfff8, 0x04a0, { 30,  30,   9,   9,   9,   9,   4}},
33763   {m68000_base_device_ops::m68k_op_subi_32_di, 0xfff8, 0x04a8, { 32,  32,   9,   9,   9,   9,   4}},
33764   {m68000_base_device_ops::m68k_op_subi_32_ix, 0xfff8, 0x04b0, { 34,  34,  11,  11,  11,  11,   4}},
33765   {m68000_base_device_ops::m68k_op_chk2cmp2_32_ai, 0xfff8, 0x04d0, {255, 255,  22,  22,  22,  22,  18}},
33766   {m68000_base_device_ops::m68k_op_chk2cmp2_32_di, 0xfff8, 0x04e8, {255, 255,  23,  23,  23,  23,  18}},
33767   {m68000_base_device_ops::m68k_op_chk2cmp2_32_ix, 0xfff8, 0x04f0, {255, 255,  25,  25,  25,  25,  18}},
33768   {m68000_base_device_ops::m68k_op_addi_8_d, 0xfff8, 0x0600, {  8,   8,   2,   2,   2,   2,   2}},
33769   {m68000_base_device_ops::m68k_op_addi_8_ai, 0xfff8, 0x0610, { 16,  16,   8,   8,   8,   8,   4}},
33770   {m68000_base_device_ops::m68k_op_addi_8_pi, 0xfff8, 0x0618, { 16,  16,   8,   8,   8,   8,   4}},
33771   {m68000_base_device_ops::m68k_op_addi_8_pd, 0xfff8, 0x0620, { 18,  18,   9,   9,   9,   9,   4}},
33772   {m68000_base_device_ops::m68k_op_addi_8_di, 0xfff8, 0x0628, { 20,  20,   9,   9,   9,   9,   4}},
33773   {m68000_base_device_ops::m68k_op_addi_8_ix, 0xfff8, 0x0630, { 22,  22,  11,  11,  11,  11,   4}},
33774   {m68000_base_device_ops::m68k_op_addi_16_d, 0xfff8, 0x0640, {  8,   8,   2,   2,   2,   2,   2}},
33775   {m68000_base_device_ops::m68k_op_addi_16_ai, 0xfff8, 0x0650, { 16,  16,   8,   8,   8,   8,   4}},
33776   {m68000_base_device_ops::m68k_op_addi_16_pi, 0xfff8, 0x0658, { 16,  16,   8,   8,   8,   8,   4}},
33777   {m68000_base_device_ops::m68k_op_addi_16_pd, 0xfff8, 0x0660, { 18,  18,   9,   9,   9,   9,   4}},
33778   {m68000_base_device_ops::m68k_op_addi_16_di, 0xfff8, 0x0668, { 20,  20,   9,   9,   9,   9,   4}},
33779   {m68000_base_device_ops::m68k_op_addi_16_ix, 0xfff8, 0x0670, { 22,  22,  11,  11,  11,  11,   4}},
33780   {m68000_base_device_ops::m68k_op_addi_32_d, 0xfff8, 0x0680, { 16,  14,   2,   2,   2,   2,   2}},
33781   {m68000_base_device_ops::m68k_op_addi_32_ai, 0xfff8, 0x0690, { 28,  28,   8,   8,   8,   8,   4}},
33782   {m68000_base_device_ops::m68k_op_addi_32_pi, 0xfff8, 0x0698, { 28,  28,   8,   8,   8,   8,   4}},
33783   {m68000_base_device_ops::m68k_op_addi_32_pd, 0xfff8, 0x06a0, { 30,  30,   9,   9,   9,   9,   4}},
33784   {m68000_base_device_ops::m68k_op_addi_32_di, 0xfff8, 0x06a8, { 32,  32,   9,   9,   9,   9,   4}},
33785   {m68000_base_device_ops::m68k_op_addi_32_ix, 0xfff8, 0x06b0, { 34,  34,  11,  11,  11,  11,   4}},
33786   {m68000_base_device_ops::m68k_op_callm_32_ai, 0xfff8, 0x06d0, {255, 255,  64,  64,  64,  64,  60}},
33787   {m68000_base_device_ops::m68k_op_callm_32_di, 0xfff8, 0x06e8, {255, 255,  65,  65,  65,  65,  60}},
33788   {m68000_base_device_ops::m68k_op_callm_32_ix, 0xfff8, 0x06f0, {255, 255,  67,  67,  67,  67,  60}},
33789   {m68000_base_device_ops::m68k_op_btst_32_s_d, 0xfff8, 0x0800, { 10,  10,   4,   4,   4,   4,   4}},
33790   {m68000_base_device_ops::m68k_op_btst_8_s_ai, 0xfff8, 0x0810, { 12,  12,   8,   8,   8,   8,   4}},
33791   {m68000_base_device_ops::m68k_op_btst_8_s_pi, 0xfff8, 0x0818, { 12,  12,   8,   8,   8,   8,   4}},
33792   {m68000_base_device_ops::m68k_op_btst_8_s_pd, 0xfff8, 0x0820, { 14,  14,   9,   9,   9,   9,   4}},
33793   {m68000_base_device_ops::m68k_op_btst_8_s_di, 0xfff8, 0x0828, { 16,  16,   9,   9,   9,   9,   4}},
33794   {m68000_base_device_ops::m68k_op_btst_8_s_ix, 0xfff8, 0x0830, { 18,  18,  11,  11,  11,  11,   4}},
33795   {m68000_base_device_ops::m68k_op_bchg_32_s_d, 0xfff8, 0x0840, { 12,  12,   4,   4,   4,   4,   4}},
33796   {m68000_base_device_ops::m68k_op_bchg_8_s_ai, 0xfff8, 0x0850, { 16,  16,   8,   8,   8,   8,   4}},
33797   {m68000_base_device_ops::m68k_op_bchg_8_s_pi, 0xfff8, 0x0858, { 16,  16,   8,   8,   8,   8,   4}},
33798   {m68000_base_device_ops::m68k_op_bchg_8_s_pd, 0xfff8, 0x0860, { 18,  18,   9,   9,   9,   9,   4}},
33799   {m68000_base_device_ops::m68k_op_bchg_8_s_di, 0xfff8, 0x0868, { 20,  20,   9,   9,   9,   9,   4}},
33800   {m68000_base_device_ops::m68k_op_bchg_8_s_ix, 0xfff8, 0x0870, { 22,  22,  11,  11,  11,  11,   4}},
33801   {m68000_base_device_ops::m68k_op_bclr_32_s_d, 0xfff8, 0x0880, { 14,  14,   4,   4,   4,   4,   4}},
33802   {m68000_base_device_ops::m68k_op_bclr_8_s_ai, 0xfff8, 0x0890, { 16,  16,   8,   8,   8,   8,   4}},
33803   {m68000_base_device_ops::m68k_op_bclr_8_s_pi, 0xfff8, 0x0898, { 16,  16,   8,   8,   8,   8,   4}},
33804   {m68000_base_device_ops::m68k_op_bclr_8_s_pd, 0xfff8, 0x08a0, { 18,  18,   9,   9,   9,   9,   4}},
33805   {m68000_base_device_ops::m68k_op_bclr_8_s_di, 0xfff8, 0x08a8, { 20,  20,   9,   9,   9,   9,   4}},
33806   {m68000_base_device_ops::m68k_op_bclr_8_s_ix, 0xfff8, 0x08b0, { 22,  22,  11,  11,  11,  11,   4}},
33807   {m68000_base_device_ops::m68k_op_bset_32_s_d, 0xfff8, 0x08c0, { 12,  12,   4,   4,   4,   4,   4}},
33808   {m68000_base_device_ops::m68k_op_bset_8_s_ai, 0xfff8, 0x08d0, { 16,  16,   8,   8,   8,   8,   4}},
33809   {m68000_base_device_ops::m68k_op_bset_8_s_pi, 0xfff8, 0x08d8, { 16,  16,   8,   8,   8,   8,   4}},
33810   {m68000_base_device_ops::m68k_op_bset_8_s_pd, 0xfff8, 0x08e0, { 18,  18,   9,   9,   9,   9,   4}},
33811   {m68000_base_device_ops::m68k_op_bset_8_s_di, 0xfff8, 0x08e8, { 20,  20,   9,   9,   9,   9,   4}},
33812   {m68000_base_device_ops::m68k_op_bset_8_s_ix, 0xfff8, 0x08f0, { 22,  22,  11,  11,  11,  11,   4}},
33813   {m68000_base_device_ops::m68k_op_eori_8_d, 0xfff8, 0x0a00, {  8,   8,   2,   2,   2,   2,   2}},
33814   {m68000_base_device_ops::m68k_op_eori_8_ai, 0xfff8, 0x0a10, { 16,  16,   8,   8,   8,   8,   4}},
33815   {m68000_base_device_ops::m68k_op_eori_8_pi, 0xfff8, 0x0a18, { 16,  16,   8,   8,   8,   8,   4}},
33816   {m68000_base_device_ops::m68k_op_eori_8_pd, 0xfff8, 0x0a20, { 18,  18,   9,   9,   9,   9,   4}},
33817   {m68000_base_device_ops::m68k_op_eori_8_di, 0xfff8, 0x0a28, { 20,  20,   9,   9,   9,   9,   4}},
33818   {m68000_base_device_ops::m68k_op_eori_8_ix, 0xfff8, 0x0a30, { 22,  22,  11,  11,  11,  11,   4}},
33819   {m68000_base_device_ops::m68k_op_eori_16_d, 0xfff8, 0x0a40, {  8,   8,   2,   2,   2,   2,   2}},
33820   {m68000_base_device_ops::m68k_op_eori_16_ai, 0xfff8, 0x0a50, { 16,  16,   8,   8,   8,   8,   4}},
33821   {m68000_base_device_ops::m68k_op_eori_16_pi, 0xfff8, 0x0a58, { 16,  16,   8,   8,   8,   8,   4}},
33822   {m68000_base_device_ops::m68k_op_eori_16_pd, 0xfff8, 0x0a60, { 18,  18,   9,   9,   9,   9,   4}},
33823   {m68000_base_device_ops::m68k_op_eori_16_di, 0xfff8, 0x0a68, { 20,  20,   9,   9,   9,   9,   4}},
33824   {m68000_base_device_ops::m68k_op_eori_16_ix, 0xfff8, 0x0a70, { 22,  22,  11,  11,  11,  11,   4}},
33825   {m68000_base_device_ops::m68k_op_eori_32_d, 0xfff8, 0x0a80, { 16,  14,   2,   2,   2,   2,   2}},
33826   {m68000_base_device_ops::m68k_op_eori_32_ai, 0xfff8, 0x0a90, { 28,  28,   8,   8,   8,   8,   4}},
33827   {m68000_base_device_ops::m68k_op_eori_32_pi, 0xfff8, 0x0a98, { 28,  28,   8,   8,   8,   8,   4}},
33828   {m68000_base_device_ops::m68k_op_eori_32_pd, 0xfff8, 0x0aa0, { 30,  30,   9,   9,   9,   9,   4}},
33829   {m68000_base_device_ops::m68k_op_eori_32_di, 0xfff8, 0x0aa8, { 32,  32,   9,   9,   9,   9,   4}},
33830   {m68000_base_device_ops::m68k_op_eori_32_ix, 0xfff8, 0x0ab0, { 34,  34,  11,  11,  11,  11,   4}},
33831   {m68000_base_device_ops::m68k_op_cas_8_ai, 0xfff8, 0x0ad0, {255, 255,  16,  16,  16,  16,  12}},
33832   {m68000_base_device_ops::m68k_op_cas_8_pi, 0xfff8, 0x0ad8, {255, 255,  16,  16,  16,  16,  12}},
33833   {m68000_base_device_ops::m68k_op_cas_8_pd, 0xfff8, 0x0ae0, {255, 255,  17,  17,  17,  17,  12}},
33834   {m68000_base_device_ops::m68k_op_cas_8_di, 0xfff8, 0x0ae8, {255, 255,  17,  17,  17,  17,  12}},
33835   {m68000_base_device_ops::m68k_op_cas_8_ix, 0xfff8, 0x0af0, {255, 255,  19,  19,  19,  19,  12}},
33836   {m68000_base_device_ops::m68k_op_cmpi_8_d, 0xfff8, 0x0c00, {  8,   8,   2,   2,   2,   2,   2}},
33837   {m68000_base_device_ops::m68k_op_cmpi_8_ai, 0xfff8, 0x0c10, { 12,  12,   6,   6,   6,   6,   2}},
33838   {m68000_base_device_ops::m68k_op_cmpi_8_pi, 0xfff8, 0x0c18, { 12,  12,   6,   6,   6,   6,   2}},
33839   {m68000_base_device_ops::m68k_op_cmpi_8_pd, 0xfff8, 0x0c20, { 14,  14,   7,   7,   7,   7,   2}},
33840   {m68000_base_device_ops::m68k_op_cmpi_8_di, 0xfff8, 0x0c28, { 16,  16,   7,   7,   7,   7,   2}},
33841   {m68000_base_device_ops::m68k_op_cmpi_8_ix, 0xfff8, 0x0c30, { 18,  18,   9,   9,   9,   9,   2}},
33842   {m68000_base_device_ops::m68k_op_cmpi_16_d, 0xfff8, 0x0c40, {  8,   8,   2,   2,   2,   2,   2}},
33843   {m68000_base_device_ops::m68k_op_cmpi_16_ai, 0xfff8, 0x0c50, { 12,  12,   6,   6,   6,   6,   2}},
33844   {m68000_base_device_ops::m68k_op_cmpi_16_pi, 0xfff8, 0x0c58, { 12,  12,   6,   6,   6,   6,   2}},
33845   {m68000_base_device_ops::m68k_op_cmpi_16_pd, 0xfff8, 0x0c60, { 14,  14,   7,   7,   7,   7,   2}},
33846   {m68000_base_device_ops::m68k_op_cmpi_16_di, 0xfff8, 0x0c68, { 16,  16,   7,   7,   7,   7,   2}},
33847   {m68000_base_device_ops::m68k_op_cmpi_16_ix, 0xfff8, 0x0c70, { 18,  18,   9,   9,   9,   9,   2}},
33848   {m68000_base_device_ops::m68k_op_cmpi_32_d, 0xfff8, 0x0c80, { 14,  12,   2,   2,   2,   2,   2}},
33849   {m68000_base_device_ops::m68k_op_cmpi_32_ai, 0xfff8, 0x0c90, { 20,  20,   6,   6,   6,   6,   2}},
33850   {m68000_base_device_ops::m68k_op_cmpi_32_pi, 0xfff8, 0x0c98, { 20,  20,   6,   6,   6,   6,   2}},
33851   {m68000_base_device_ops::m68k_op_cmpi_32_pd, 0xfff8, 0x0ca0, { 22,  22,   7,   7,   7,   7,   2}},
33852   {m68000_base_device_ops::m68k_op_cmpi_32_di, 0xfff8, 0x0ca8, { 24,  24,   7,   7,   7,   7,   2}},
33853   {m68000_base_device_ops::m68k_op_cmpi_32_ix, 0xfff8, 0x0cb0, { 26,  26,   9,   9,   9,   9,   2}},
33854   {m68000_base_device_ops::m68k_op_cas_16_ai, 0xfff8, 0x0cd0, {255, 255,  16,  16,  16,  16,  12}},
33855   {m68000_base_device_ops::m68k_op_cas_16_pi, 0xfff8, 0x0cd8, {255, 255,  16,  16,  16,  16,  12}},
33856   {m68000_base_device_ops::m68k_op_cas_16_pd, 0xfff8, 0x0ce0, {255, 255,  17,  17,  17,  17,  12}},
33857   {m68000_base_device_ops::m68k_op_cas_16_di, 0xfff8, 0x0ce8, {255, 255,  17,  17,  17,  17,  12}},
33858   {m68000_base_device_ops::m68k_op_cas_16_ix, 0xfff8, 0x0cf0, {255, 255,  19,  19,  19,  19,  12}},
33859   {m68000_base_device_ops::m68k_op_moves_8_ai, 0xfff8, 0x0e10, {255,  18,   9,   9,   9,   9,   5}},
33860   {m68000_base_device_ops::m68k_op_moves_8_pi, 0xfff8, 0x0e18, {255,  18,   9,   9,   9,   9,   5}},
33861   {m68000_base_device_ops::m68k_op_moves_8_pd, 0xfff8, 0x0e20, {255,  20,  10,  10,  10,  10,   5}},
33862   {m68000_base_device_ops::m68k_op_moves_8_di, 0xfff8, 0x0e28, {255,  26,  10,  10,  10,  10,   5}},
33863   {m68000_base_device_ops::m68k_op_moves_8_ix, 0xfff8, 0x0e30, {255,  30,  12,  12,  12,  12,   5}},
33864   {m68000_base_device_ops::m68k_op_moves_16_ai, 0xfff8, 0x0e50, {255,  18,   9,   9,   9,   9,   5}},
33865   {m68000_base_device_ops::m68k_op_moves_16_pi, 0xfff8, 0x0e58, {255,  18,   9,   9,   9,   9,   5}},
33866   {m68000_base_device_ops::m68k_op_moves_16_pd, 0xfff8, 0x0e60, {255,  20,  10,  10,  10,  10,   5}},
33867   {m68000_base_device_ops::m68k_op_moves_16_di, 0xfff8, 0x0e68, {255,  26,  10,  10,  10,  10,   5}},
33868   {m68000_base_device_ops::m68k_op_moves_16_ix, 0xfff8, 0x0e70, {255,  30,  12,  12,  12,  12,   5}},
33869   {m68000_base_device_ops::m68k_op_moves_32_ai, 0xfff8, 0x0e90, {255,  22,   9,   9,   9,   9,   5}},
33870   {m68000_base_device_ops::m68k_op_moves_32_pi, 0xfff8, 0x0e98, {255,  22,   9,   9,   9,   9,   5}},
33871   {m68000_base_device_ops::m68k_op_moves_32_pd, 0xfff8, 0x0ea0, {255,  28,  10,  10,  10,  10,   5}},
33872   {m68000_base_device_ops::m68k_op_moves_32_di, 0xfff8, 0x0ea8, {255,  32,  10,  10,  10,  10,   5}},
33873   {m68000_base_device_ops::m68k_op_moves_32_ix, 0xfff8, 0x0eb0, {255,  36,  12,  12,  12,  12,   5}},
33874   {m68000_base_device_ops::m68k_op_cas_32_ai, 0xfff8, 0x0ed0, {255, 255,  16,  16,  16,  16,  12}},
33875   {m68000_base_device_ops::m68k_op_cas_32_pi, 0xfff8, 0x0ed8, {255, 255,  16,  16,  16,  16,  12}},
33876   {m68000_base_device_ops::m68k_op_cas_32_pd, 0xfff8, 0x0ee0, {255, 255,  17,  17,  17,  17,  12}},
33877   {m68000_base_device_ops::m68k_op_cas_32_di, 0xfff8, 0x0ee8, {255, 255,  17,  17,  17,  17,  12}},
33878   {m68000_base_device_ops::m68k_op_cas_32_ix, 0xfff8, 0x0ef0, {255, 255,  19,  19,  19,  19,  12}},
33879   {m68000_base_device_ops::m68k_op_move_8_aw_d, 0xfff8, 0x11c0, { 12,  12,   4,   4,   4,   4,   4}},
33880   {m68000_base_device_ops::m68k_op_move_8_aw_ai, 0xfff8, 0x11d0, { 16,  16,   8,   8,   8,   8,   4}},
33881   {m68000_base_device_ops::m68k_op_move_8_aw_pi, 0xfff8, 0x11d8, { 16,  16,   8,   8,   8,   8,   4}},
33882   {m68000_base_device_ops::m68k_op_move_8_aw_pd, 0xfff8, 0x11e0, { 18,  18,   9,   9,   9,   9,   4}},
33883   {m68000_base_device_ops::m68k_op_move_8_aw_di, 0xfff8, 0x11e8, { 20,  20,   9,   9,   9,   9,   4}},
33884   {m68000_base_device_ops::m68k_op_move_8_aw_ix, 0xfff8, 0x11f0, { 22,  22,  11,  11,  11,  11,   4}},
33885   {m68000_base_device_ops::m68k_op_move_8_al_d, 0xfff8, 0x13c0, { 16,  16,   6,   6,   6,   6,   6}},
33886   {m68000_base_device_ops::m68k_op_move_8_al_ai, 0xfff8, 0x13d0, { 20,  20,  10,  10,  10,  10,   6}},
33887   {m68000_base_device_ops::m68k_op_move_8_al_pi, 0xfff8, 0x13d8, { 20,  20,  10,  10,  10,  10,   6}},
33888   {m68000_base_device_ops::m68k_op_move_8_al_pd, 0xfff8, 0x13e0, { 22,  22,  11,  11,  11,  11,   6}},
33889   {m68000_base_device_ops::m68k_op_move_8_al_di, 0xfff8, 0x13e8, { 24,  24,  11,  11,  11,  11,   6}},
33890   {m68000_base_device_ops::m68k_op_move_8_al_ix, 0xfff8, 0x13f0, { 26,  26,  13,  13,  13,  13,   6}},
33891   {m68000_base_device_ops::m68k_op_move_8_pi7_d, 0xfff8, 0x1ec0, {  8,   8,   4,   4,   4,   4,   4}},
33892   {m68000_base_device_ops::m68k_op_move_8_pi7_ai, 0xfff8, 0x1ed0, { 12,  12,   8,   8,   8,   8,   4}},
33893   {m68000_base_device_ops::m68k_op_move_8_pi7_pi, 0xfff8, 0x1ed8, { 12,  12,   8,   8,   8,   8,   4}},
33894   {m68000_base_device_ops::m68k_op_move_8_pi7_pd, 0xfff8, 0x1ee0, { 14,  14,   9,   9,   9,   9,   4}},
33895   {m68000_base_device_ops::m68k_op_move_8_pi7_di, 0xfff8, 0x1ee8, { 16,  16,   9,   9,   9,   9,   4}},
33896   {m68000_base_device_ops::m68k_op_move_8_pi7_ix, 0xfff8, 0x1ef0, { 18,  18,  11,  11,  11,  11,   4}},
33897   {m68000_base_device_ops::m68k_op_move_8_pd7_d, 0xfff8, 0x1f00, {  8,   8,   5,   5,   5,   5,   5}},
33898   {m68000_base_device_ops::m68k_op_move_8_pd7_ai, 0xfff8, 0x1f10, { 12,  12,   9,   9,   9,   9,   5}},
33899   {m68000_base_device_ops::m68k_op_move_8_pd7_pi, 0xfff8, 0x1f18, { 12,  12,   9,   9,   9,   9,   5}},
33900   {m68000_base_device_ops::m68k_op_move_8_pd7_pd, 0xfff8, 0x1f20, { 14,  14,  10,  10,  10,  10,   5}},
33901   {m68000_base_device_ops::m68k_op_move_8_pd7_di, 0xfff8, 0x1f28, { 16,  16,  10,  10,  10,  10,   5}},
33902   {m68000_base_device_ops::m68k_op_move_8_pd7_ix, 0xfff8, 0x1f30, { 18,  18,  12,  12,  12,  12,   5}},
33903   {m68000_base_device_ops::m68k_op_move_32_aw_d, 0xfff8, 0x21c0, { 16,  16,   4,   4,   4,   4,   4}},
33904   {m68000_base_device_ops::m68k_op_move_32_aw_a, 0xfff8, 0x21c8, { 16,  16,   4,   4,   4,   4,   4}},
33905   {m68000_base_device_ops::m68k_op_move_32_aw_ai, 0xfff8, 0x21d0, { 24,  24,   8,   8,   8,   8,   4}},
33906   {m68000_base_device_ops::m68k_op_move_32_aw_pi, 0xfff8, 0x21d8, { 24,  24,   8,   8,   8,   8,   4}},
33907   {m68000_base_device_ops::m68k_op_move_32_aw_pd, 0xfff8, 0x21e0, { 26,  26,   9,   9,   9,   9,   4}},
33908   {m68000_base_device_ops::m68k_op_move_32_aw_di, 0xfff8, 0x21e8, { 28,  28,   9,   9,   9,   9,   4}},
33909   {m68000_base_device_ops::m68k_op_move_32_aw_ix, 0xfff8, 0x21f0, { 30,  30,  11,  11,  11,  11,   4}},
33910   {m68000_base_device_ops::m68k_op_move_32_al_d, 0xfff8, 0x23c0, { 20,  20,   6,   6,   6,   6,   6}},
33911   {m68000_base_device_ops::m68k_op_move_32_al_a, 0xfff8, 0x23c8, { 20,  20,   6,   6,   6,   6,   6}},
33912   {m68000_base_device_ops::m68k_op_move_32_al_ai, 0xfff8, 0x23d0, { 28,  28,  10,  10,  10,  10,   6}},
33913   {m68000_base_device_ops::m68k_op_move_32_al_pi, 0xfff8, 0x23d8, { 28,  28,  10,  10,  10,  10,   6}},
33914   {m68000_base_device_ops::m68k_op_move_32_al_pd, 0xfff8, 0x23e0, { 30,  30,  11,  11,  11,  11,   6}},
33915   {m68000_base_device_ops::m68k_op_move_32_al_di, 0xfff8, 0x23e8, { 32,  32,  11,  11,  11,  11,   6}},
33916   {m68000_base_device_ops::m68k_op_move_32_al_ix, 0xfff8, 0x23f0, { 34,  34,  13,  13,  13,  13,   6}},
33917   {m68000_base_device_ops::m68k_op_move_16_aw_d, 0xfff8, 0x31c0, { 12,  12,   4,   4,   4,   4,   4}},
33918   {m68000_base_device_ops::m68k_op_move_16_aw_a, 0xfff8, 0x31c8, { 12,  12,   4,   4,   4,   4,   4}},
33919   {m68000_base_device_ops::m68k_op_move_16_aw_ai, 0xfff8, 0x31d0, { 16,  16,   8,   8,   8,   8,   4}},
33920   {m68000_base_device_ops::m68k_op_move_16_aw_pi, 0xfff8, 0x31d8, { 16,  16,   8,   8,   8,   8,   4}},
33921   {m68000_base_device_ops::m68k_op_move_16_aw_pd, 0xfff8, 0x31e0, { 18,  18,   9,   9,   9,   9,   4}},
33922   {m68000_base_device_ops::m68k_op_move_16_aw_di, 0xfff8, 0x31e8, { 20,  20,   9,   9,   9,   9,   4}},
33923   {m68000_base_device_ops::m68k_op_move_16_aw_ix, 0xfff8, 0x31f0, { 22,  22,  11,  11,  11,  11,   4}},
33924   {m68000_base_device_ops::m68k_op_move_16_al_d, 0xfff8, 0x33c0, { 16,  16,   6,   6,   6,   6,   6}},
33925   {m68000_base_device_ops::m68k_op_move_16_al_a, 0xfff8, 0x33c8, { 16,  16,   6,   6,   6,   6,   6}},
33926   {m68000_base_device_ops::m68k_op_move_16_al_ai, 0xfff8, 0x33d0, { 20,  20,  10,  10,  10,  10,   6}},
33927   {m68000_base_device_ops::m68k_op_move_16_al_pi, 0xfff8, 0x33d8, { 20,  20,  10,  10,  10,  10,   6}},
33928   {m68000_base_device_ops::m68k_op_move_16_al_pd, 0xfff8, 0x33e0, { 22,  22,  11,  11,  11,  11,   6}},
33929   {m68000_base_device_ops::m68k_op_move_16_al_di, 0xfff8, 0x33e8, { 24,  24,  11,  11,  11,  11,   6}},
33930   {m68000_base_device_ops::m68k_op_move_16_al_ix, 0xfff8, 0x33f0, { 26,  26,  13,  13,  13,  13,   6}},
33931   {m68000_base_device_ops::m68k_op_negx_8_d, 0xfff8, 0x4000, {  4,   4,   2,   2,   2,   2,   2}},
33932   {m68000_base_device_ops::m68k_op_negx_8_ai, 0xfff8, 0x4010, { 12,  12,   8,   8,   8,   8,   4}},
33933   {m68000_base_device_ops::m68k_op_negx_8_pi, 0xfff8, 0x4018, { 12,  12,   8,   8,   8,   8,   4}},
33934   {m68000_base_device_ops::m68k_op_negx_8_pd, 0xfff8, 0x4020, { 14,  14,   9,   9,   9,   9,   4}},
33935   {m68000_base_device_ops::m68k_op_negx_8_di, 0xfff8, 0x4028, { 16,  16,   9,   9,   9,   9,   4}},
33936   {m68000_base_device_ops::m68k_op_negx_8_ix, 0xfff8, 0x4030, { 18,  18,  11,  11,  11,  11,   4}},
33937   {m68000_base_device_ops::m68k_op_negx_16_d, 0xfff8, 0x4040, {  4,   4,   2,   2,   2,   2,   2}},
33938   {m68000_base_device_ops::m68k_op_negx_16_ai, 0xfff8, 0x4050, { 12,  12,   8,   8,   8,   8,   4}},
33939   {m68000_base_device_ops::m68k_op_negx_16_pi, 0xfff8, 0x4058, { 12,  12,   8,   8,   8,   8,   4}},
33940   {m68000_base_device_ops::m68k_op_negx_16_pd, 0xfff8, 0x4060, { 14,  14,   9,   9,   9,   9,   4}},
33941   {m68000_base_device_ops::m68k_op_negx_16_di, 0xfff8, 0x4068, { 16,  16,   9,   9,   9,   9,   4}},
33942   {m68000_base_device_ops::m68k_op_negx_16_ix, 0xfff8, 0x4070, { 18,  18,  11,  11,  11,  11,   4}},
33943   {m68000_base_device_ops::m68k_op_negx_32_d, 0xfff8, 0x4080, {  6,   6,   2,   2,   2,   2,   2}},
33944   {m68000_base_device_ops::m68k_op_negx_32_ai, 0xfff8, 0x4090, { 20,  20,   8,   8,   8,   8,   4}},
33945   {m68000_base_device_ops::m68k_op_negx_32_pi, 0xfff8, 0x4098, { 20,  20,   8,   8,   8,   8,   4}},
33946   {m68000_base_device_ops::m68k_op_negx_32_pd, 0xfff8, 0x40a0, { 22,  22,   9,   9,   9,   9,   4}},
33947   {m68000_base_device_ops::m68k_op_negx_32_di, 0xfff8, 0x40a8, { 24,  24,   9,   9,   9,   9,   4}},
33948   {m68000_base_device_ops::m68k_op_negx_32_ix, 0xfff8, 0x40b0, { 26,  26,  11,  11,  11,  11,   4}},
33949   {m68000_base_device_ops::m68k_op_move_16_frs_d, 0xfff8, 0x40c0, {  6,   4,   8,   8,   8,   8,   8}},
33950   {m68000_base_device_ops::m68k_op_move_16_frs_ai, 0xfff8, 0x40d0, { 12,  12,  12,  12,  12,  12,   8}},
33951   {m68000_base_device_ops::m68k_op_move_16_frs_pi, 0xfff8, 0x40d8, { 12,  12,  12,  12,  12,  12,   8}},
33952   {m68000_base_device_ops::m68k_op_move_16_frs_pd, 0xfff8, 0x40e0, { 14,  14,  13,  13,  13,  13,   8}},
33953   {m68000_base_device_ops::m68k_op_move_16_frs_di, 0xfff8, 0x40e8, { 16,  16,  13,  13,  13,  13,   8}},
33954   {m68000_base_device_ops::m68k_op_move_16_frs_ix, 0xfff8, 0x40f0, { 18,  18,  15,  15,  15,  15,   8}},
33955   {m68000_base_device_ops::m68k_op_clr_8_d, 0xfff8, 0x4200, {  4,   4,   2,   2,   2,   2,   2}},
33956   {m68000_base_device_ops::m68k_op_clr_8_ai, 0xfff8, 0x4210, { 12,   8,   8,   8,   8,   8,   4}},
33957   {m68000_base_device_ops::m68k_op_clr_8_pi, 0xfff8, 0x4218, { 12,   8,   8,   8,   8,   8,   4}},
33958   {m68000_base_device_ops::m68k_op_clr_8_pd, 0xfff8, 0x4220, { 14,  10,   9,   9,   9,   9,   4}},
33959   {m68000_base_device_ops::m68k_op_clr_8_di, 0xfff8, 0x4228, { 16,  12,   9,   9,   9,   9,   4}},
33960   {m68000_base_device_ops::m68k_op_clr_8_ix, 0xfff8, 0x4230, { 18,  14,  11,  11,  11,  11,   4}},
33961   {m68000_base_device_ops::m68k_op_clr_16_d, 0xfff8, 0x4240, {  4,   4,   2,   2,   2,   2,   2}},
33962   {m68000_base_device_ops::m68k_op_clr_16_ai, 0xfff8, 0x4250, { 12,   8,   8,   8,   8,   8,   4}},
33963   {m68000_base_device_ops::m68k_op_clr_16_pi, 0xfff8, 0x4258, { 12,   8,   8,   8,   8,   8,   4}},
33964   {m68000_base_device_ops::m68k_op_clr_16_pd, 0xfff8, 0x4260, { 14,  10,   9,   9,   9,   9,   4}},
33965   {m68000_base_device_ops::m68k_op_clr_16_di, 0xfff8, 0x4268, { 16,  12,   9,   9,   9,   9,   4}},
33966   {m68000_base_device_ops::m68k_op_clr_16_ix, 0xfff8, 0x4270, { 18,  14,  11,  11,  11,  11,   4}},
33967   {m68000_base_device_ops::m68k_op_clr_32_d, 0xfff8, 0x4280, {  6,   6,   2,   2,   2,   2,   2}},
33968   {m68000_base_device_ops::m68k_op_clr_32_ai, 0xfff8, 0x4290, { 20,  12,   8,   8,   8,   8,   4}},
33969   {m68000_base_device_ops::m68k_op_clr_32_pi, 0xfff8, 0x4298, { 20,  12,   8,   8,   8,   8,   4}},
33970   {m68000_base_device_ops::m68k_op_clr_32_pd, 0xfff8, 0x42a0, { 22,  14,   9,   9,   9,   9,   4}},
33971   {m68000_base_device_ops::m68k_op_clr_32_di, 0xfff8, 0x42a8, { 24,  16,   9,   9,   9,   9,   4}},
33972   {m68000_base_device_ops::m68k_op_clr_32_ix, 0xfff8, 0x42b0, { 26,  20,  11,  11,  11,  11,   4}},
33973   {m68000_base_device_ops::m68k_op_move_16_frc_d, 0xfff8, 0x42c0, {255,   4,   4,   4,   4,   4,   4}},
33974   {m68000_base_device_ops::m68k_op_move_16_frc_ai, 0xfff8, 0x42d0, {255,  12,   8,   8,   8,   8,   4}},
33975   {m68000_base_device_ops::m68k_op_move_16_frc_pi, 0xfff8, 0x42d8, {255,  12,   8,   8,   8,   8,   4}},
33976   {m68000_base_device_ops::m68k_op_move_16_frc_pd, 0xfff8, 0x42e0, {255,  14,   9,   9,   9,   9,   4}},
33977   {m68000_base_device_ops::m68k_op_move_16_frc_di, 0xfff8, 0x42e8, {255,  16,   9,   9,   9,   9,   4}},
33978   {m68000_base_device_ops::m68k_op_move_16_frc_ix, 0xfff8, 0x42f0, {255,  18,  11,  11,  11,  11,   4}},
33979   {m68000_base_device_ops::m68k_op_neg_8_d, 0xfff8, 0x4400, {  4,   4,   2,   2,   2,   2,   2}},
33980   {m68000_base_device_ops::m68k_op_neg_8_ai, 0xfff8, 0x4410, { 12,  12,   8,   8,   8,   8,   4}},
33981   {m68000_base_device_ops::m68k_op_neg_8_pi, 0xfff8, 0x4418, { 12,  12,   8,   8,   8,   8,   4}},
33982   {m68000_base_device_ops::m68k_op_neg_8_pd, 0xfff8, 0x4420, { 14,  14,   9,   9,   9,   9,   4}},
33983   {m68000_base_device_ops::m68k_op_neg_8_di, 0xfff8, 0x4428, { 16,  16,   9,   9,   9,   9,   4}},
33984   {m68000_base_device_ops::m68k_op_neg_8_ix, 0xfff8, 0x4430, { 18,  18,  11,  11,  11,  11,   4}},
33985   {m68000_base_device_ops::m68k_op_neg_16_d, 0xfff8, 0x4440, {  4,   4,   2,   2,   2,   2,   2}},
33986   {m68000_base_device_ops::m68k_op_neg_16_ai, 0xfff8, 0x4450, { 12,  12,   8,   8,   8,   8,   4}},
33987   {m68000_base_device_ops::m68k_op_neg_16_pi, 0xfff8, 0x4458, { 12,  12,   8,   8,   8,   8,   4}},
33988   {m68000_base_device_ops::m68k_op_neg_16_pd, 0xfff8, 0x4460, { 14,  14,   9,   9,   9,   9,   4}},
33989   {m68000_base_device_ops::m68k_op_neg_16_di, 0xfff8, 0x4468, { 16,  16,   9,   9,   9,   9,   4}},
33990   {m68000_base_device_ops::m68k_op_neg_16_ix, 0xfff8, 0x4470, { 18,  18,  11,  11,  11,  11,   4}},
33991   {m68000_base_device_ops::m68k_op_neg_32_d, 0xfff8, 0x4480, {  6,   6,   2,   2,   2,   2,   2}},
33992   {m68000_base_device_ops::m68k_op_neg_32_ai, 0xfff8, 0x4490, { 20,  20,   8,   8,   8,   8,   4}},
33993   {m68000_base_device_ops::m68k_op_neg_32_pi, 0xfff8, 0x4498, { 20,  20,   8,   8,   8,   8,   4}},
33994   {m68000_base_device_ops::m68k_op_neg_32_pd, 0xfff8, 0x44a0, { 22,  22,   9,   9,   9,   9,   4}},
33995   {m68000_base_device_ops::m68k_op_neg_32_di, 0xfff8, 0x44a8, { 24,  24,   9,   9,   9,   9,   4}},
33996   {m68000_base_device_ops::m68k_op_neg_32_ix, 0xfff8, 0x44b0, { 26,  26,  11,  11,  11,  11,   4}},
33997   {m68000_base_device_ops::m68k_op_move_16_toc_d, 0xfff8, 0x44c0, { 12,  12,   4,   4,   4,   4,   4}},
33998   {m68000_base_device_ops::m68k_op_move_16_toc_ai, 0xfff8, 0x44d0, { 16,  16,   8,   8,   8,   8,   4}},
33999   {m68000_base_device_ops::m68k_op_move_16_toc_pi, 0xfff8, 0x44d8, { 16,  16,   8,   8,   8,   8,   4}},
34000   {m68000_base_device_ops::m68k_op_move_16_toc_pd, 0xfff8, 0x44e0, { 18,  18,   9,   9,   9,   9,   4}},
34001   {m68000_base_device_ops::m68k_op_move_16_toc_di, 0xfff8, 0x44e8, { 20,  20,   9,   9,   9,   9,   4}},
34002   {m68000_base_device_ops::m68k_op_move_16_toc_ix, 0xfff8, 0x44f0, { 22,  22,  11,  11,  11,  11,   4}},
34003   {m68000_base_device_ops::m68k_op_not_8_d, 0xfff8, 0x4600, {  4,   4,   2,   2,   2,   2,   2}},
34004   {m68000_base_device_ops::m68k_op_not_8_ai, 0xfff8, 0x4610, { 12,  12,   8,   8,   8,   8,   4}},
34005   {m68000_base_device_ops::m68k_op_not_8_pi, 0xfff8, 0x4618, { 12,  12,   8,   8,   8,   8,   4}},
34006   {m68000_base_device_ops::m68k_op_not_8_pd, 0xfff8, 0x4620, { 14,  14,   9,   9,   9,   9,   4}},
34007   {m68000_base_device_ops::m68k_op_not_8_di, 0xfff8, 0x4628, { 16,  16,   9,   9,   9,   9,   4}},
34008   {m68000_base_device_ops::m68k_op_not_8_ix, 0xfff8, 0x4630, { 18,  18,  11,  11,  11,  11,   4}},
34009   {m68000_base_device_ops::m68k_op_not_16_d, 0xfff8, 0x4640, {  4,   4,   2,   2,   2,   2,   2}},
34010   {m68000_base_device_ops::m68k_op_not_16_ai, 0xfff8, 0x4650, { 12,  12,   8,   8,   8,   8,   4}},
34011   {m68000_base_device_ops::m68k_op_not_16_pi, 0xfff8, 0x4658, { 12,  12,   8,   8,   8,   8,   4}},
34012   {m68000_base_device_ops::m68k_op_not_16_pd, 0xfff8, 0x4660, { 14,  14,   9,   9,   9,   9,   4}},
34013   {m68000_base_device_ops::m68k_op_not_16_di, 0xfff8, 0x4668, { 16,  16,   9,   9,   9,   9,   4}},
34014   {m68000_base_device_ops::m68k_op_not_16_ix, 0xfff8, 0x4670, { 18,  18,  11,  11,  11,  11,   4}},
34015   {m68000_base_device_ops::m68k_op_not_32_d, 0xfff8, 0x4680, {  6,   6,   2,   2,   2,   2,   2}},
34016   {m68000_base_device_ops::m68k_op_not_32_ai, 0xfff8, 0x4690, { 20,  20,   8,   8,   8,   8,   4}},
34017   {m68000_base_device_ops::m68k_op_not_32_pi, 0xfff8, 0x4698, { 20,  20,   8,   8,   8,   8,   4}},
34018   {m68000_base_device_ops::m68k_op_not_32_pd, 0xfff8, 0x46a0, { 22,  22,   9,   9,   9,   9,   4}},
34019   {m68000_base_device_ops::m68k_op_not_32_di, 0xfff8, 0x46a8, { 24,  24,   9,   9,   9,   9,   4}},
34020   {m68000_base_device_ops::m68k_op_not_32_ix, 0xfff8, 0x46b0, { 26,  26,  11,  11,  11,  11,   4}},
34021   {m68000_base_device_ops::m68k_op_move_16_tos_d, 0xfff8, 0x46c0, { 12,  12,   8,   8,   8,   8,   8}},
34022   {m68000_base_device_ops::m68k_op_move_16_tos_ai, 0xfff8, 0x46d0, { 16,  16,  12,  12,  12,  12,   8}},
34023   {m68000_base_device_ops::m68k_op_move_16_tos_pi, 0xfff8, 0x46d8, { 16,  16,  12,  12,  12,  12,   8}},
34024   {m68000_base_device_ops::m68k_op_move_16_tos_pd, 0xfff8, 0x46e0, { 18,  18,  13,  13,  13,  13,   8}},
34025   {m68000_base_device_ops::m68k_op_move_16_tos_di, 0xfff8, 0x46e8, { 20,  20,  13,  13,  13,  13,   8}},
34026   {m68000_base_device_ops::m68k_op_move_16_tos_ix, 0xfff8, 0x46f0, { 22,  22,  15,  15,  15,  15,   8}},
34027   {m68000_base_device_ops::m68k_op_nbcd_8_d, 0xfff8, 0x4800, {  6,   6,   6,   6,   6,   6,   6}},
34028   {m68000_base_device_ops::m68k_op_link_32, 0xfff8, 0x4808, {255, 255,   6,   6,   6,   6,   6}},
34029   {m68000_base_device_ops::m68k_op_nbcd_8_ai, 0xfff8, 0x4810, { 12,  12,  10,  10,  10,  10,   6}},
34030   {m68000_base_device_ops::m68k_op_nbcd_8_pi, 0xfff8, 0x4818, { 12,  12,  10,  10,  10,  10,   6}},
34031   {m68000_base_device_ops::m68k_op_nbcd_8_pd, 0xfff8, 0x4820, { 14,  14,  11,  11,  11,  11,   6}},
34032   {m68000_base_device_ops::m68k_op_nbcd_8_di, 0xfff8, 0x4828, { 16,  16,  11,  11,  11,  11,   6}},
34033   {m68000_base_device_ops::m68k_op_nbcd_8_ix, 0xfff8, 0x4830, { 18,  18,  13,  13,  13,  13,   6}},
34034   {m68000_base_device_ops::m68k_op_swap_32, 0xfff8, 0x4840, {  4,   4,   4,   4,   4,   4,   4}},
34035   {m68000_base_device_ops::m68k_op_bkpt, 0xfff8, 0x4848, {255,  10,  10,  10,  10,  10,  10}},
34036   {m68000_base_device_ops::m68k_op_pea_32_ai, 0xfff8, 0x4850, { 12,  12,   9,   9,   9,   9,   5}},
34037   {m68000_base_device_ops::m68k_op_pea_32_di, 0xfff8, 0x4868, { 16,  16,  10,  10,  10,  10,   5}},
34038   {m68000_base_device_ops::m68k_op_pea_32_ix, 0xfff8, 0x4870, { 20,  20,  12,  12,  12,  12,   5}},
34039   {m68000_base_device_ops::m68k_op_ext_16, 0xfff8, 0x4880, {  4,   4,   4,   4,   4,   4,   4}},
34040   {m68000_base_device_ops::m68k_op_movem_16_re_ai, 0xfff8, 0x4890, {  8,   8,   8,   8,   8,   8,   4}},
34041   {m68000_base_device_ops::m68k_op_movem_16_re_pd, 0xfff8, 0x48a0, {  8,   8,   4,   4,   4,   4,   4}},
34042   {m68000_base_device_ops::m68k_op_movem_16_re_di, 0xfff8, 0x48a8, { 12,  12,   9,   9,   9,   9,   4}},
34043   {m68000_base_device_ops::m68k_op_movem_16_re_ix, 0xfff8, 0x48b0, { 14,  14,  11,  11,  11,  11,   4}},
34044   {m68000_base_device_ops::m68k_op_ext_32, 0xfff8, 0x48c0, {  4,   4,   4,   4,   4,   4,   4}},
34045   {m68000_base_device_ops::m68k_op_movem_32_re_ai, 0xfff8, 0x48d0, {  8,   8,   8,   8,   8,   8,   4}},
34046   {m68000_base_device_ops::m68k_op_movem_32_re_pd, 0xfff8, 0x48e0, {  8,   8,   4,   4,   4,   4,   4}},
34047   {m68000_base_device_ops::m68k_op_movem_32_re_di, 0xfff8, 0x48e8, { 12,  12,   9,   9,   9,   9,   4}},
34048   {m68000_base_device_ops::m68k_op_movem_32_re_ix, 0xfff8, 0x48f0, { 14,  14,  11,  11,  11,  11,   4}},
34049   {m68000_base_device_ops::m68k_op_extb_32, 0xfff8, 0x49c0, {255, 255,   4,   4,   4,   4,   4}},
34050   {m68000_base_device_ops::m68k_op_tst_8_d, 0xfff8, 0x4a00, {  4,   4,   2,   2,   2,   2,   2}},
34051   {m68000_base_device_ops::m68k_op_tst_8_ai, 0xfff8, 0x4a10, {  8,   8,   6,   6,   6,   6,   2}},
34052   {m68000_base_device_ops::m68k_op_tst_8_pi, 0xfff8, 0x4a18, {  8,   8,   6,   6,   6,   6,   2}},
34053   {m68000_base_device_ops::m68k_op_tst_8_pd, 0xfff8, 0x4a20, { 10,  10,   7,   7,   7,   7,   2}},
34054   {m68000_base_device_ops::m68k_op_tst_8_di, 0xfff8, 0x4a28, { 12,  12,   7,   7,   7,   7,   2}},
34055   {m68000_base_device_ops::m68k_op_tst_8_ix, 0xfff8, 0x4a30, { 14,  14,   9,   9,   9,   9,   2}},
34056   {m68000_base_device_ops::m68k_op_tst_16_d, 0xfff8, 0x4a40, {  4,   4,   2,   2,   2,   2,   2}},
34057   {m68000_base_device_ops::m68k_op_tst_16_a, 0xfff8, 0x4a48, {255, 255,   2,   2,   2,   2,   2}},
34058   {m68000_base_device_ops::m68k_op_tst_16_ai, 0xfff8, 0x4a50, {  8,   8,   6,   6,   6,   6,   2}},
34059   {m68000_base_device_ops::m68k_op_tst_16_pi, 0xfff8, 0x4a58, {  8,   8,   6,   6,   6,   6,   2}},
34060   {m68000_base_device_ops::m68k_op_tst_16_pd, 0xfff8, 0x4a60, { 10,  10,   7,   7,   7,   7,   2}},
34061   {m68000_base_device_ops::m68k_op_tst_16_di, 0xfff8, 0x4a68, { 12,  12,   7,   7,   7,   7,   2}},
34062   {m68000_base_device_ops::m68k_op_tst_16_ix, 0xfff8, 0x4a70, { 14,  14,   9,   9,   9,   9,   2}},
34063   {m68000_base_device_ops::m68k_op_tst_32_d, 0xfff8, 0x4a80, {  4,   4,   2,   2,   2,   2,   2}},
34064   {m68000_base_device_ops::m68k_op_tst_32_a, 0xfff8, 0x4a88, {255, 255,   2,   2,   2,   2,   2}},
34065   {m68000_base_device_ops::m68k_op_tst_32_ai, 0xfff8, 0x4a90, { 12,  12,   6,   6,   6,   6,   2}},
34066   {m68000_base_device_ops::m68k_op_tst_32_pi, 0xfff8, 0x4a98, { 12,  12,   6,   6,   6,   6,   2}},
34067   {m68000_base_device_ops::m68k_op_tst_32_pd, 0xfff8, 0x4aa0, { 14,  14,   7,   7,   7,   7,   2}},
34068   {m68000_base_device_ops::m68k_op_tst_32_di, 0xfff8, 0x4aa8, { 16,  16,   7,   7,   7,   7,   2}},
34069   {m68000_base_device_ops::m68k_op_tst_32_ix, 0xfff8, 0x4ab0, { 18,  18,   9,   9,   9,   9,   2}},
34070   {m68000_base_device_ops::m68k_op_tas_8_d, 0xfff8, 0x4ac0, {  4,   4,   4,   4,   4,   4,   4}},
34071   {m68000_base_device_ops::m68k_op_tas_8_ai, 0xfff8, 0x4ad0, { 18,  18,  16,  16,  16,  16,  12}},
34072   {m68000_base_device_ops::m68k_op_tas_8_pi, 0xfff8, 0x4ad8, { 18,  18,  16,  16,  16,  16,  12}},
34073   {m68000_base_device_ops::m68k_op_tas_8_pd, 0xfff8, 0x4ae0, { 20,  20,  17,  17,  17,  17,  12}},
34074   {m68000_base_device_ops::m68k_op_tas_8_di, 0xfff8, 0x4ae8, { 22,  22,  17,  17,  17,  17,  12}},
34075   {m68000_base_device_ops::m68k_op_tas_8_ix, 0xfff8, 0x4af0, { 24,  24,  19,  19,  19,  19,  12}},
34076   {m68000_base_device_ops::m68k_op_mull_32_d, 0xfff8, 0x4c00, {255, 255,  43,  43,  43,  43,  43}},
34077   {m68000_base_device_ops::m68k_op_mull_32_ai, 0xfff8, 0x4c10, {255, 255,  47,  47,  47,  47,  43}},
34078   {m68000_base_device_ops::m68k_op_mull_32_pi, 0xfff8, 0x4c18, {255, 255,  47,  47,  47,  47,  43}},
34079   {m68000_base_device_ops::m68k_op_mull_32_pd, 0xfff8, 0x4c20, {255, 255,  48,  48,  48,  48,  43}},
34080   {m68000_base_device_ops::m68k_op_mull_32_di, 0xfff8, 0x4c28, {255, 255,  48,  48,  48,  48,  43}},
34081   {m68000_base_device_ops::m68k_op_mull_32_ix, 0xfff8, 0x4c30, {255, 255,  50,  50,  50,  50,  43}},
34082   {m68000_base_device_ops::m68k_op_divl_32_d, 0xfff8, 0x4c40, {255, 255,  84,  84,  84,  84,  84}},
34083   {m68000_base_device_ops::m68k_op_divl_32_ai, 0xfff8, 0x4c50, {255, 255,  88,  88,  88,  88,  84}},
34084   {m68000_base_device_ops::m68k_op_divl_32_pi, 0xfff8, 0x4c58, {255, 255,  88,  88,  88,  88,  84}},
34085   {m68000_base_device_ops::m68k_op_divl_32_pd, 0xfff8, 0x4c60, {255, 255,  89,  89,  89,  89,  84}},
34086   {m68000_base_device_ops::m68k_op_divl_32_di, 0xfff8, 0x4c68, {255, 255,  89,  89,  89,  89,  84}},
34087   {m68000_base_device_ops::m68k_op_divl_32_ix, 0xfff8, 0x4c70, {255, 255,  91,  91,  91,  91,  84}},
34088   {m68000_base_device_ops::m68k_op_movem_16_er_ai, 0xfff8, 0x4c90, { 12,  12,  12,  12,  12,  12,   8}},
34089   {m68000_base_device_ops::m68k_op_movem_16_er_pi, 0xfff8, 0x4c98, { 12,  12,   8,   8,   8,   8,   8}},
34090   {m68000_base_device_ops::m68k_op_movem_16_er_di, 0xfff8, 0x4ca8, { 16,  16,  13,  13,  13,  13,   8}},
34091   {m68000_base_device_ops::m68k_op_movem_16_er_ix, 0xfff8, 0x4cb0, { 18,  18,  15,  15,  15,  15,   8}},
34092   {m68000_base_device_ops::m68k_op_movem_32_er_ai, 0xfff8, 0x4cd0, { 12,  12,  12,  12,  12,  12,   8}},
34093   {m68000_base_device_ops::m68k_op_movem_32_er_pi, 0xfff8, 0x4cd8, { 12,  12,   8,   8,   8,   8,   8}},
34094   {m68000_base_device_ops::m68k_op_movem_32_er_di, 0xfff8, 0x4ce8, { 16,  16,  13,  13,  13,  13,   8}},
34095   {m68000_base_device_ops::m68k_op_movem_32_er_ix, 0xfff8, 0x4cf0, { 18,  18,  15,  15,  15,  15,   8}},
34096   {m68000_base_device_ops::m68k_op_link_16, 0xfff8, 0x4e50, { 16,  16,   5,   5,   5,   5,   5}},
34097   {m68000_base_device_ops::m68k_op_unlk_32, 0xfff8, 0x4e58, { 12,  12,   6,   6,   6,   6,   6}},
34098   {m68000_base_device_ops::m68k_op_move_32_tou, 0xfff8, 0x4e60, {  4,   6,   2,   2,   2,   2,   2}},
34099   {m68000_base_device_ops::m68k_op_move_32_fru, 0xfff8, 0x4e68, {  4,   6,   2,   2,   2,   2,   2}},
34100   {m68000_base_device_ops::m68k_op_jsr_32_ai, 0xfff8, 0x4e90, { 16,  16,   4,   4,   4,   4,   0}},
34101   {m68000_base_device_ops::m68k_op_jsr_32_di, 0xfff8, 0x4ea8, { 18,  18,   5,   5,   5,   5,   0}},
34102   {m68000_base_device_ops::m68k_op_jsr_32_ix, 0xfff8, 0x4eb0, { 22,  22,   7,   7,   7,   7,   0}},
34103   {m68000_base_device_ops::m68k_op_jmp_32_ai, 0xfff8, 0x4ed0, {  8,   8,   4,   4,   4,   4,   0}},
34104   {m68000_base_device_ops::m68k_op_jmp_32_di, 0xfff8, 0x4ee8, { 10,  10,   5,   5,   5,   5,   0}},
34105   {m68000_base_device_ops::m68k_op_jmp_32_ix, 0xfff8, 0x4ef0, { 14,  14,   7,   7,   7,   7,   0}},
34106   {m68000_base_device_ops::m68k_op_st_8_d, 0xfff8, 0x50c0, {  6,   4,   4,   4,   4,   4,   4}},
34107   {m68000_base_device_ops::m68k_op_dbt_16, 0xfff8, 0x50c8, { 12,  12,   6,   6,   6,   6,   6}},
34108   {m68000_base_device_ops::m68k_op_st_8_ai, 0xfff8, 0x50d0, { 12,  12,  10,  10,  10,  10,   6}},
34109   {m68000_base_device_ops::m68k_op_st_8_pi, 0xfff8, 0x50d8, { 12,  12,  10,  10,  10,  10,   6}},
34110   {m68000_base_device_ops::m68k_op_st_8_pd, 0xfff8, 0x50e0, { 14,  14,  11,  11,  11,  11,   6}},
34111   {m68000_base_device_ops::m68k_op_st_8_di, 0xfff8, 0x50e8, { 16,  16,  11,  11,  11,  11,   6}},
34112   {m68000_base_device_ops::m68k_op_st_8_ix, 0xfff8, 0x50f0, { 18,  18,  13,  13,  13,  13,   6}},
34113   {m68000_base_device_ops::m68k_op_sf_8_d, 0xfff8, 0x51c0, {  4,   4,   4,   4,   4,   4,   4}},
34114   {m68000_base_device_ops::m68k_op_dbf_16, 0xfff8, 0x51c8, { 12,  12,   6,   4,   4,   4,   4}},
34115   {m68000_base_device_ops::m68k_op_sf_8_ai, 0xfff8, 0x51d0, { 12,  12,  10,  10,  10,  10,   6}},
34116   {m68000_base_device_ops::m68k_op_sf_8_pi, 0xfff8, 0x51d8, { 12,  12,  10,  10,  10,  10,   6}},
34117   {m68000_base_device_ops::m68k_op_sf_8_pd, 0xfff8, 0x51e0, { 14,  14,  11,  11,  11,  11,   6}},
34118   {m68000_base_device_ops::m68k_op_sf_8_di, 0xfff8, 0x51e8, { 16,  16,  11,  11,  11,  11,   6}},
34119   {m68000_base_device_ops::m68k_op_sf_8_ix, 0xfff8, 0x51f0, { 18,  18,  13,  13,  13,  13,   6}},
34120   {m68000_base_device_ops::m68k_op_shi_8_d, 0xfff8, 0x52c0, {  4,   4,   4,   4,   4,   4,   4}},
34121   {m68000_base_device_ops::m68k_op_dbhi_16, 0xfff8, 0x52c8, { 12,  12,   6,   6,   6,   6,   6}},
34122   {m68000_base_device_ops::m68k_op_shi_8_ai, 0xfff8, 0x52d0, { 12,  12,  10,  10,  10,  10,   6}},
34123   {m68000_base_device_ops::m68k_op_shi_8_pi, 0xfff8, 0x52d8, { 12,  12,  10,  10,  10,  10,   6}},
34124   {m68000_base_device_ops::m68k_op_shi_8_pd, 0xfff8, 0x52e0, { 14,  14,  11,  11,  11,  11,   6}},
34125   {m68000_base_device_ops::m68k_op_shi_8_di, 0xfff8, 0x52e8, { 16,  16,  11,  11,  11,  11,   6}},
34126   {m68000_base_device_ops::m68k_op_shi_8_ix, 0xfff8, 0x52f0, { 18,  18,  13,  13,  13,  13,   6}},
34127   {m68000_base_device_ops::m68k_op_sls_8_d, 0xfff8, 0x53c0, {  4,   4,   4,   4,   4,   4,   4}},
34128   {m68000_base_device_ops::m68k_op_dbls_16, 0xfff8, 0x53c8, { 12,  12,   6,   6,   6,   6,   6}},
34129   {m68000_base_device_ops::m68k_op_sls_8_ai, 0xfff8, 0x53d0, { 12,  12,  10,  10,  10,  10,   6}},
34130   {m68000_base_device_ops::m68k_op_sls_8_pi, 0xfff8, 0x53d8, { 12,  12,  10,  10,  10,  10,   6}},
34131   {m68000_base_device_ops::m68k_op_sls_8_pd, 0xfff8, 0x53e0, { 14,  14,  11,  11,  11,  11,   6}},
34132   {m68000_base_device_ops::m68k_op_sls_8_di, 0xfff8, 0x53e8, { 16,  16,  11,  11,  11,  11,   6}},
34133   {m68000_base_device_ops::m68k_op_sls_8_ix, 0xfff8, 0x53f0, { 18,  18,  13,  13,  13,  13,   6}},
34134   {m68000_base_device_ops::m68k_op_scc_8_d, 0xfff8, 0x54c0, {  4,   4,   4,   4,   4,   4,   4}},
34135   {m68000_base_device_ops::m68k_op_dbcc_16, 0xfff8, 0x54c8, { 12,  12,   6,   6,   6,   6,   6}},
34136   {m68000_base_device_ops::m68k_op_scc_8_ai, 0xfff8, 0x54d0, { 12,  12,  10,  10,  10,  10,   6}},
34137   {m68000_base_device_ops::m68k_op_scc_8_pi, 0xfff8, 0x54d8, { 12,  12,  10,  10,  10,  10,   6}},
34138   {m68000_base_device_ops::m68k_op_scc_8_pd, 0xfff8, 0x54e0, { 14,  14,  11,  11,  11,  11,   6}},
34139   {m68000_base_device_ops::m68k_op_scc_8_di, 0xfff8, 0x54e8, { 16,  16,  11,  11,  11,  11,   6}},
34140   {m68000_base_device_ops::m68k_op_scc_8_ix, 0xfff8, 0x54f0, { 18,  18,  13,  13,  13,  13,   6}},
34141   {m68000_base_device_ops::m68k_op_scs_8_d, 0xfff8, 0x55c0, {  4,   4,   4,   4,   4,   4,   4}},
34142   {m68000_base_device_ops::m68k_op_dbcs_16, 0xfff8, 0x55c8, { 12,  12,   6,   6,   6,   6,   6}},
34143   {m68000_base_device_ops::m68k_op_scs_8_ai, 0xfff8, 0x55d0, { 12,  12,  10,  10,  10,  10,   6}},
34144   {m68000_base_device_ops::m68k_op_scs_8_pi, 0xfff8, 0x55d8, { 12,  12,  10,  10,  10,  10,   6}},
34145   {m68000_base_device_ops::m68k_op_scs_8_pd, 0xfff8, 0x55e0, { 14,  14,  11,  11,  11,  11,   6}},
34146   {m68000_base_device_ops::m68k_op_scs_8_di, 0xfff8, 0x55e8, { 16,  16,  11,  11,  11,  11,   6}},
34147   {m68000_base_device_ops::m68k_op_scs_8_ix, 0xfff8, 0x55f0, { 18,  18,  13,  13,  13,  13,   6}},
34148   {m68000_base_device_ops::m68k_op_sne_8_d, 0xfff8, 0x56c0, {  4,   4,   4,   4,   4,   4,   4}},
34149   {m68000_base_device_ops::m68k_op_dbne_16, 0xfff8, 0x56c8, { 12,  12,   6,   6,   6,   6,   6}},
34150   {m68000_base_device_ops::m68k_op_sne_8_ai, 0xfff8, 0x56d0, { 12,  12,  10,  10,  10,  10,   6}},
34151   {m68000_base_device_ops::m68k_op_sne_8_pi, 0xfff8, 0x56d8, { 12,  12,  10,  10,  10,  10,   6}},
34152   {m68000_base_device_ops::m68k_op_sne_8_pd, 0xfff8, 0x56e0, { 14,  14,  11,  11,  11,  11,   6}},
34153   {m68000_base_device_ops::m68k_op_sne_8_di, 0xfff8, 0x56e8, { 16,  16,  11,  11,  11,  11,   6}},
34154   {m68000_base_device_ops::m68k_op_sne_8_ix, 0xfff8, 0x56f0, { 18,  18,  13,  13,  13,  13,   6}},
34155   {m68000_base_device_ops::m68k_op_seq_8_d, 0xfff8, 0x57c0, {  4,   4,   4,   4,   4,   4,   4}},
34156   {m68000_base_device_ops::m68k_op_dbeq_16, 0xfff8, 0x57c8, { 12,  12,   6,   6,   6,   6,   6}},
34157   {m68000_base_device_ops::m68k_op_seq_8_ai, 0xfff8, 0x57d0, { 12,  12,  10,  10,  10,  10,   6}},
34158   {m68000_base_device_ops::m68k_op_seq_8_pi, 0xfff8, 0x57d8, { 12,  12,  10,  10,  10,  10,   6}},
34159   {m68000_base_device_ops::m68k_op_seq_8_pd, 0xfff8, 0x57e0, { 14,  14,  11,  11,  11,  11,   6}},
34160   {m68000_base_device_ops::m68k_op_seq_8_di, 0xfff8, 0x57e8, { 16,  16,  11,  11,  11,  11,   6}},
34161   {m68000_base_device_ops::m68k_op_seq_8_ix, 0xfff8, 0x57f0, { 18,  18,  13,  13,  13,  13,   6}},
34162   {m68000_base_device_ops::m68k_op_svc_8_d, 0xfff8, 0x58c0, {  4,   4,   4,   4,   4,   4,   4}},
34163   {m68000_base_device_ops::m68k_op_dbvc_16, 0xfff8, 0x58c8, { 12,  12,   6,   6,   6,   6,   6}},
34164   {m68000_base_device_ops::m68k_op_svc_8_ai, 0xfff8, 0x58d0, { 12,  12,  10,  10,  10,  10,   6}},
34165   {m68000_base_device_ops::m68k_op_svc_8_pi, 0xfff8, 0x58d8, { 12,  12,  10,  10,  10,  10,   6}},
34166   {m68000_base_device_ops::m68k_op_svc_8_pd, 0xfff8, 0x58e0, { 14,  14,  11,  11,  11,  11,   6}},
34167   {m68000_base_device_ops::m68k_op_svc_8_di, 0xfff8, 0x58e8, { 16,  16,  11,  11,  11,  11,   6}},
34168   {m68000_base_device_ops::m68k_op_svc_8_ix, 0xfff8, 0x58f0, { 18,  18,  13,  13,  13,  13,   6}},
34169   {m68000_base_device_ops::m68k_op_svs_8_d, 0xfff8, 0x59c0, {  4,   4,   4,   4,   4,   4,   4}},
34170   {m68000_base_device_ops::m68k_op_dbvs_16, 0xfff8, 0x59c8, { 12,  12,   6,   6,   6,   6,   6}},
34171   {m68000_base_device_ops::m68k_op_svs_8_ai, 0xfff8, 0x59d0, { 12,  12,  10,  10,  10,  10,   6}},
34172   {m68000_base_device_ops::m68k_op_svs_8_pi, 0xfff8, 0x59d8, { 12,  12,  10,  10,  10,  10,   6}},
34173   {m68000_base_device_ops::m68k_op_svs_8_pd, 0xfff8, 0x59e0, { 14,  14,  11,  11,  11,  11,   6}},
34174   {m68000_base_device_ops::m68k_op_svs_8_di, 0xfff8, 0x59e8, { 16,  16,  11,  11,  11,  11,   6}},
34175   {m68000_base_device_ops::m68k_op_svs_8_ix, 0xfff8, 0x59f0, { 18,  18,  13,  13,  13,  13,   6}},
34176   {m68000_base_device_ops::m68k_op_spl_8_d, 0xfff8, 0x5ac0, {  4,   4,   4,   4,   4,   4,   4}},
34177   {m68000_base_device_ops::m68k_op_dbpl_16, 0xfff8, 0x5ac8, { 12,  12,   6,   6,   6,   6,   6}},
34178   {m68000_base_device_ops::m68k_op_spl_8_ai, 0xfff8, 0x5ad0, { 12,  12,  10,  10,  10,  10,   6}},
34179   {m68000_base_device_ops::m68k_op_spl_8_pi, 0xfff8, 0x5ad8, { 12,  12,  10,  10,  10,  10,   6}},
34180   {m68000_base_device_ops::m68k_op_spl_8_pd, 0xfff8, 0x5ae0, { 14,  14,  11,  11,  11,  11,   6}},
34181   {m68000_base_device_ops::m68k_op_spl_8_di, 0xfff8, 0x5ae8, { 16,  16,  11,  11,  11,  11,   6}},
34182   {m68000_base_device_ops::m68k_op_spl_8_ix, 0xfff8, 0x5af0, { 18,  18,  13,  13,  13,  13,   6}},
34183   {m68000_base_device_ops::m68k_op_smi_8_d, 0xfff8, 0x5bc0, {  4,   4,   4,   4,   4,   4,   4}},
34184   {m68000_base_device_ops::m68k_op_dbmi_16, 0xfff8, 0x5bc8, { 12,  12,   6,   6,   6,   6,   6}},
34185   {m68000_base_device_ops::m68k_op_smi_8_ai, 0xfff8, 0x5bd0, { 12,  12,  10,  10,  10,  10,   6}},
34186   {m68000_base_device_ops::m68k_op_smi_8_pi, 0xfff8, 0x5bd8, { 12,  12,  10,  10,  10,  10,   6}},
34187   {m68000_base_device_ops::m68k_op_smi_8_pd, 0xfff8, 0x5be0, { 14,  14,  11,  11,  11,  11,   6}},
34188   {m68000_base_device_ops::m68k_op_smi_8_di, 0xfff8, 0x5be8, { 16,  16,  11,  11,  11,  11,   6}},
34189   {m68000_base_device_ops::m68k_op_smi_8_ix, 0xfff8, 0x5bf0, { 18,  18,  13,  13,  13,  13,   6}},
34190   {m68000_base_device_ops::m68k_op_sge_8_d, 0xfff8, 0x5cc0, {  4,   4,   4,   4,   4,   4,   4}},
34191   {m68000_base_device_ops::m68k_op_dbge_16, 0xfff8, 0x5cc8, { 12,  12,   6,   6,   6,   6,   6}},
34192   {m68000_base_device_ops::m68k_op_sge_8_ai, 0xfff8, 0x5cd0, { 12,  12,  10,  10,  10,  10,   6}},
34193   {m68000_base_device_ops::m68k_op_sge_8_pi, 0xfff8, 0x5cd8, { 12,  12,  10,  10,  10,  10,   6}},
34194   {m68000_base_device_ops::m68k_op_sge_8_pd, 0xfff8, 0x5ce0, { 14,  14,  11,  11,  11,  11,   6}},
34195   {m68000_base_device_ops::m68k_op_sge_8_di, 0xfff8, 0x5ce8, { 16,  16,  11,  11,  11,  11,   6}},
34196   {m68000_base_device_ops::m68k_op_sge_8_ix, 0xfff8, 0x5cf0, { 18,  18,  13,  13,  13,  13,   6}},
34197   {m68000_base_device_ops::m68k_op_slt_8_d, 0xfff8, 0x5dc0, {  4,   4,   4,   4,   4,   4,   4}},
34198   {m68000_base_device_ops::m68k_op_dblt_16, 0xfff8, 0x5dc8, { 12,  12,   6,   6,   6,   6,   6}},
34199   {m68000_base_device_ops::m68k_op_slt_8_ai, 0xfff8, 0x5dd0, { 12,  12,  10,  10,  10,  10,   6}},
34200   {m68000_base_device_ops::m68k_op_slt_8_pi, 0xfff8, 0x5dd8, { 12,  12,  10,  10,  10,  10,   6}},
34201   {m68000_base_device_ops::m68k_op_slt_8_pd, 0xfff8, 0x5de0, { 14,  14,  11,  11,  11,  11,   6}},
34202   {m68000_base_device_ops::m68k_op_slt_8_di, 0xfff8, 0x5de8, { 16,  16,  11,  11,  11,  11,   6}},
34203   {m68000_base_device_ops::m68k_op_slt_8_ix, 0xfff8, 0x5df0, { 18,  18,  13,  13,  13,  13,   6}},
34204   {m68000_base_device_ops::m68k_op_sgt_8_d, 0xfff8, 0x5ec0, {  4,   4,   4,   4,   4,   4,   4}},
34205   {m68000_base_device_ops::m68k_op_dbgt_16, 0xfff8, 0x5ec8, { 12,  12,   6,   6,   6,   6,   6}},
34206   {m68000_base_device_ops::m68k_op_sgt_8_ai, 0xfff8, 0x5ed0, { 12,  12,  10,  10,  10,  10,   6}},
34207   {m68000_base_device_ops::m68k_op_sgt_8_pi, 0xfff8, 0x5ed8, { 12,  12,  10,  10,  10,  10,   6}},
34208   {m68000_base_device_ops::m68k_op_sgt_8_pd, 0xfff8, 0x5ee0, { 14,  14,  11,  11,  11,  11,   6}},
34209   {m68000_base_device_ops::m68k_op_sgt_8_di, 0xfff8, 0x5ee8, { 16,  16,  11,  11,  11,  11,   6}},
34210   {m68000_base_device_ops::m68k_op_sgt_8_ix, 0xfff8, 0x5ef0, { 18,  18,  13,  13,  13,  13,   6}},
34211   {m68000_base_device_ops::m68k_op_sle_8_d, 0xfff8, 0x5fc0, {  4,   4,   4,   4,   4,   4,   4}},
34212   {m68000_base_device_ops::m68k_op_dble_16, 0xfff8, 0x5fc8, { 12,  12,   6,   6,   6,   6,   6}},
34213   {m68000_base_device_ops::m68k_op_sle_8_ai, 0xfff8, 0x5fd0, { 12,  12,  10,  10,  10,  10,   6}},
34214   {m68000_base_device_ops::m68k_op_sle_8_pi, 0xfff8, 0x5fd8, { 12,  12,  10,  10,  10,  10,   6}},
34215   {m68000_base_device_ops::m68k_op_sle_8_pd, 0xfff8, 0x5fe0, { 14,  14,  11,  11,  11,  11,   6}},
34216   {m68000_base_device_ops::m68k_op_sle_8_di, 0xfff8, 0x5fe8, { 16,  16,  11,  11,  11,  11,   6}},
34217   {m68000_base_device_ops::m68k_op_sle_8_ix, 0xfff8, 0x5ff0, { 18,  18,  13,  13,  13,  13,   6}},
34218   {m68000_base_device_ops::m68k_op_sbcd_8_mm_ax7, 0xfff8, 0x8f08, { 18,  18,  16,  16,  16,  16,  16}},
34219   {m68000_base_device_ops::m68k_op_pack_16_mm_ax7, 0xfff8, 0x8f48, {255, 255,  13,  13,  13,  13,  13}},
34220   {m68000_base_device_ops::m68k_op_unpk_16_mm_ax7, 0xfff8, 0x8f88, {255, 255,  13,  13,  13,  13,  13}},
34221   {m68000_base_device_ops::m68k_op_subx_8_mm_ax7, 0xfff8, 0x9f08, { 18,  18,  12,  12,  12,  12,  12}},
34222   {m68000_base_device_ops::m68k_op_cmpm_8_ax7, 0xfff8, 0xbf08, { 12,  12,   9,   9,   9,   9,   9}},
34223   {m68000_base_device_ops::m68k_op_abcd_8_mm_ax7, 0xfff8, 0xcf08, { 18,  18,  16,  16,  16,  16,  16}},
34224   {m68000_base_device_ops::m68k_op_addx_8_mm_ax7, 0xfff8, 0xdf08, { 18,  18,  12,  12,  12,  12,  12}},
34225   {m68000_base_device_ops::m68k_op_asr_16_ai, 0xfff8, 0xe0d0, { 12,  12,   9,   9,   9,   9,   5}},
34226   {m68000_base_device_ops::m68k_op_asr_16_pi, 0xfff8, 0xe0d8, { 12,  12,   9,   9,   9,   9,   5}},
34227   {m68000_base_device_ops::m68k_op_asr_16_pd, 0xfff8, 0xe0e0, { 14,  14,  10,  10,  10,  10,   5}},
34228   {m68000_base_device_ops::m68k_op_asr_16_di, 0xfff8, 0xe0e8, { 16,  16,  10,  10,  10,  10,   5}},
34229   {m68000_base_device_ops::m68k_op_asr_16_ix, 0xfff8, 0xe0f0, { 18,  18,  12,  12,  12,  12,   5}},
34230   {m68000_base_device_ops::m68k_op_asl_16_ai, 0xfff8, 0xe1d0, { 12,  12,  10,  10,  10,  10,   6}},
34231   {m68000_base_device_ops::m68k_op_asl_16_pi, 0xfff8, 0xe1d8, { 12,  12,  10,  10,  10,  10,   6}},
34232   {m68000_base_device_ops::m68k_op_asl_16_pd, 0xfff8, 0xe1e0, { 14,  14,  11,  11,  11,  11,   6}},
34233   {m68000_base_device_ops::m68k_op_asl_16_di, 0xfff8, 0xe1e8, { 16,  16,  11,  11,  11,  11,   6}},
34234   {m68000_base_device_ops::m68k_op_asl_16_ix, 0xfff8, 0xe1f0, { 18,  18,  13,  13,  13,  13,   6}},
34235   {m68000_base_device_ops::m68k_op_lsr_16_ai, 0xfff8, 0xe2d0, { 12,  12,   9,   9,   9,   9,   5}},
34236   {m68000_base_device_ops::m68k_op_lsr_16_pi, 0xfff8, 0xe2d8, { 12,  12,   9,   9,   9,   9,   5}},
34237   {m68000_base_device_ops::m68k_op_lsr_16_pd, 0xfff8, 0xe2e0, { 14,  14,  10,  10,  10,  10,   5}},
34238   {m68000_base_device_ops::m68k_op_lsr_16_di, 0xfff8, 0xe2e8, { 16,  16,  10,  10,  10,  10,   5}},
34239   {m68000_base_device_ops::m68k_op_lsr_16_ix, 0xfff8, 0xe2f0, { 18,  18,  12,  12,  12,  12,   5}},
34240   {m68000_base_device_ops::m68k_op_lsl_16_ai, 0xfff8, 0xe3d0, { 12,  12,   9,   9,   9,   9,   5}},
34241   {m68000_base_device_ops::m68k_op_lsl_16_pi, 0xfff8, 0xe3d8, { 12,  12,   9,   9,   9,   9,   5}},
34242   {m68000_base_device_ops::m68k_op_lsl_16_pd, 0xfff8, 0xe3e0, { 14,  14,  10,  10,  10,  10,   5}},
34243   {m68000_base_device_ops::m68k_op_lsl_16_di, 0xfff8, 0xe3e8, { 16,  16,  10,  10,  10,  10,   5}},
34244   {m68000_base_device_ops::m68k_op_lsl_16_ix, 0xfff8, 0xe3f0, { 18,  18,  12,  12,  12,  12,   5}},
34245   {m68000_base_device_ops::m68k_op_roxr_16_ai, 0xfff8, 0xe4d0, { 12,  12,   9,   9,   9,   9,   5}},
34246   {m68000_base_device_ops::m68k_op_roxr_16_pi, 0xfff8, 0xe4d8, { 12,  12,   9,   9,   9,   9,   5}},
34247   {m68000_base_device_ops::m68k_op_roxr_16_pd, 0xfff8, 0xe4e0, { 14,  14,  10,  10,  10,  10,   5}},
34248   {m68000_base_device_ops::m68k_op_roxr_16_di, 0xfff8, 0xe4e8, { 16,  16,  10,  10,  10,  10,   5}},
34249   {m68000_base_device_ops::m68k_op_roxr_16_ix, 0xfff8, 0xe4f0, { 18,  18,  12,  12,  12,  12,   5}},
34250   {m68000_base_device_ops::m68k_op_roxl_16_ai, 0xfff8, 0xe5d0, { 12,  12,   9,   9,   9,   9,   5}},
34251   {m68000_base_device_ops::m68k_op_roxl_16_pi, 0xfff8, 0xe5d8, { 12,  12,   9,   9,   9,   9,   5}},
34252   {m68000_base_device_ops::m68k_op_roxl_16_pd, 0xfff8, 0xe5e0, { 14,  14,  10,  10,  10,  10,   5}},
34253   {m68000_base_device_ops::m68k_op_roxl_16_di, 0xfff8, 0xe5e8, { 16,  16,  10,  10,  10,  10,   5}},
34254   {m68000_base_device_ops::m68k_op_roxl_16_ix, 0xfff8, 0xe5f0, { 18,  18,  12,  12,  12,  12,   5}},
34255   {m68000_base_device_ops::m68k_op_ror_16_ai, 0xfff8, 0xe6d0, { 12,  12,  11,  11,  11,  11,   7}},
34256   {m68000_base_device_ops::m68k_op_ror_16_pi, 0xfff8, 0xe6d8, { 12,  12,  11,  11,  11,  11,   7}},
34257   {m68000_base_device_ops::m68k_op_ror_16_pd, 0xfff8, 0xe6e0, { 14,  14,  12,  12,  12,  12,   7}},
34258   {m68000_base_device_ops::m68k_op_ror_16_di, 0xfff8, 0xe6e8, { 16,  16,  12,  12,  12,  12,   7}},
34259   {m68000_base_device_ops::m68k_op_ror_16_ix, 0xfff8, 0xe6f0, { 18,  18,  14,  14,  14,  14,   7}},
34260   {m68000_base_device_ops::m68k_op_rol_16_ai, 0xfff8, 0xe7d0, { 12,  12,  11,  11,  11,  11,   7}},
34261   {m68000_base_device_ops::m68k_op_rol_16_pi, 0xfff8, 0xe7d8, { 12,  12,  11,  11,  11,  11,   7}},
34262   {m68000_base_device_ops::m68k_op_rol_16_pd, 0xfff8, 0xe7e0, { 14,  14,  12,  12,  12,  12,   7}},
34263   {m68000_base_device_ops::m68k_op_rol_16_di, 0xfff8, 0xe7e8, { 16,  16,  12,  12,  12,  12,   7}},
34264   {m68000_base_device_ops::m68k_op_rol_16_ix, 0xfff8, 0xe7f0, { 18,  18,  14,  14,  14,  14,   7}},
34265   {m68000_base_device_ops::m68k_op_bftst_32_d, 0xfff8, 0xe8c0, {255, 255,   6,   6,   6,   6,   6}},
34266   {m68000_base_device_ops::m68k_op_bftst_32_ai, 0xfff8, 0xe8d0, {255, 255,  17,  17,  17,  17,  13}},
34267   {m68000_base_device_ops::m68k_op_bftst_32_di, 0xfff8, 0xe8e8, {255, 255,  18,  18,  18,  18,  13}},
34268   {m68000_base_device_ops::m68k_op_bftst_32_ix, 0xfff8, 0xe8f0, {255, 255,  20,  20,  20,  20,  13}},
34269   {m68000_base_device_ops::m68k_op_bfextu_32_d, 0xfff8, 0xe9c0, {255, 255,   8,   8,   8,   8,   8}},
34270   {m68000_base_device_ops::m68k_op_bfextu_32_ai, 0xfff8, 0xe9d0, {255, 255,  19,  19,  19,  19,  15}},
34271   {m68000_base_device_ops::m68k_op_bfextu_32_di, 0xfff8, 0xe9e8, {255, 255,  20,  20,  20,  20,  15}},
34272   {m68000_base_device_ops::m68k_op_bfextu_32_ix, 0xfff8, 0xe9f0, {255, 255,  22,  22,  22,  22,  15}},
34273   {m68000_base_device_ops::m68k_op_bfchg_32_d, 0xfff8, 0xeac0, {255, 255,  12,  12,  12,  12,  12}},
34274   {m68000_base_device_ops::m68k_op_bfchg_32_ai, 0xfff8, 0xead0, {255, 255,  24,  24,  24,  24,  20}},
34275   {m68000_base_device_ops::m68k_op_bfchg_32_di, 0xfff8, 0xeae8, {255, 255,  25,  25,  25,  25,  20}},
34276   {m68000_base_device_ops::m68k_op_bfchg_32_ix, 0xfff8, 0xeaf0, {255, 255,  27,  27,  27,  27,  20}},
34277   {m68000_base_device_ops::m68k_op_bfexts_32_d, 0xfff8, 0xebc0, {255, 255,   8,   8,   8,   8,   8}},
34278   {m68000_base_device_ops::m68k_op_bfexts_32_ai, 0xfff8, 0xebd0, {255, 255,  19,  19,  19,  19,  15}},
34279   {m68000_base_device_ops::m68k_op_bfexts_32_di, 0xfff8, 0xebe8, {255, 255,  20,  20,  20,  20,  15}},
34280   {m68000_base_device_ops::m68k_op_bfexts_32_ix, 0xfff8, 0xebf0, {255, 255,  22,  22,  22,  22,  15}},
34281   {m68000_base_device_ops::m68k_op_bfclr_32_d, 0xfff8, 0xecc0, {255, 255,  12,  12,  12,  12,  12}},
34282   {m68000_base_device_ops::m68k_op_bfclr_32_ai, 0xfff8, 0xecd0, {255, 255,  24,  24,  24,  24,  20}},
34283   {m68000_base_device_ops::m68k_op_bfclr_32_di, 0xfff8, 0xece8, {255, 255,  25,  25,  25,  25,  20}},
34284   {m68000_base_device_ops::m68k_op_bfclr_32_ix, 0xfff8, 0xecf0, {255, 255,  27,  27,  27,  27,  20}},
34285   {m68000_base_device_ops::m68k_op_bfffo_32_d, 0xfff8, 0xedc0, {255, 255,  18,  18,  18,  18,  18}},
34286   {m68000_base_device_ops::m68k_op_bfffo_32_ai, 0xfff8, 0xedd0, {255, 255,  32,  32,  32,  32,  28}},
34287   {m68000_base_device_ops::m68k_op_bfffo_32_di, 0xfff8, 0xede8, {255, 255,  33,  33,  33,  33,  28}},
34288   {m68000_base_device_ops::m68k_op_bfffo_32_ix, 0xfff8, 0xedf0, {255, 255,  35,  35,  35,  35,  28}},
34289   {m68000_base_device_ops::m68k_op_bfset_32_d, 0xfff8, 0xeec0, {255, 255,  12,  12,  12,  12,  12}},
34290   {m68000_base_device_ops::m68k_op_bfset_32_ai, 0xfff8, 0xeed0, {255, 255,  24,  24,  24,  24,  20}},
34291   {m68000_base_device_ops::m68k_op_bfset_32_di, 0xfff8, 0xeee8, {255, 255,  25,  25,  25,  25,  20}},
34292   {m68000_base_device_ops::m68k_op_bfset_32_ix, 0xfff8, 0xeef0, {255, 255,  27,  27,  27,  27,  20}},
34293   {m68000_base_device_ops::m68k_op_bfins_32_d, 0xfff8, 0xefc0, {255, 255,  10,  10,  10,  10,  10}},
34294   {m68000_base_device_ops::m68k_op_bfins_32_ai, 0xfff8, 0xefd0, {255, 255,  21,  21,  21,  21,  17}},
34295   {m68000_base_device_ops::m68k_op_bfins_32_di, 0xfff8, 0xefe8, {255, 255,  22,  22,  22,  22,  17}},
34296   {m68000_base_device_ops::m68k_op_bfins_32_ix, 0xfff8, 0xeff0, {255, 255,  24,  24,  24,  24,  17}},
34297   {m68000_base_device_ops::m68k_op_ftrapcc_32, 0xfff8, 0xf278, {255, 255,   4,   4, 255, 255, 255}},
34298   {m68000_base_device_ops::m68k_op_pflushan_32, 0xfff8, 0xf510, {255, 255, 255, 255,   4,   4,   4}},
34299   {m68000_base_device_ops::m68k_op_pflusha_32, 0xfff8, 0xf518, {255, 255, 255, 255,   4,   4,   4}},
34300   {m68000_base_device_ops::m68k_op_move16_32, 0xfff8, 0xf620, {255, 255, 255, 255,   4,   4,   4}},
34301   {m68000_base_device_ops::m68k_op_ori_8_pi7, 0xffff, 0x001f, { 16,  16,   8,   8,   8,   8,   4}},
34302   {m68000_base_device_ops::m68k_op_ori_8_pd7, 0xffff, 0x0027, { 18,  18,   9,   9,   9,   9,   4}},
34303   {m68000_base_device_ops::m68k_op_ori_8_aw, 0xffff, 0x0038, { 20,  20,   8,   8,   8,   8,   4}},
34304   {m68000_base_device_ops::m68k_op_ori_8_al, 0xffff, 0x0039, { 24,  24,   8,   8,   8,   8,   4}},
34305   {m68000_base_device_ops::m68k_op_ori_16_toc, 0xffff, 0x003c, { 20,  16,  12,  12,  12,  12,  12}},
34306   {m68000_base_device_ops::m68k_op_ori_16_aw, 0xffff, 0x0078, { 20,  20,   8,   8,   8,   8,   4}},
34307   {m68000_base_device_ops::m68k_op_ori_16_al, 0xffff, 0x0079, { 24,  24,   8,   8,   8,   8,   4}},
34308   {m68000_base_device_ops::m68k_op_ori_16_tos, 0xffff, 0x007c, { 20,  16,  12,  12,  12,  12,  12}},
34309   {m68000_base_device_ops::m68k_op_ori_32_aw, 0xffff, 0x00b8, { 32,  32,   8,   8,   8,   8,   4}},
34310   {m68000_base_device_ops::m68k_op_ori_32_al, 0xffff, 0x00b9, { 36,  36,   8,   8,   8,   8,   4}},
34311   {m68000_base_device_ops::m68k_op_chk2cmp2_8_aw, 0xffff, 0x00f8, {255, 255,  22,  22,  22,  22,  18}},
34312   {m68000_base_device_ops::m68k_op_chk2cmp2_8_al, 0xffff, 0x00f9, {255, 255,  22,  22,  22,  22,  18}},
34313   {m68000_base_device_ops::m68k_op_chk2cmp2_8_pcdi, 0xffff, 0x00fa, {255, 255,  23,  23,  23,  23,  23}},
34314   {m68000_base_device_ops::m68k_op_chk2cmp2_8_pcix, 0xffff, 0x00fb, {255, 255,  23,  23,  23,  23,  23}},
34315   {m68000_base_device_ops::m68k_op_andi_8_pi7, 0xffff, 0x021f, { 16,  16,   8,   8,   8,   8,   4}},
34316   {m68000_base_device_ops::m68k_op_andi_8_pd7, 0xffff, 0x0227, { 18,  18,   9,   9,   9,   9,   4}},
34317   {m68000_base_device_ops::m68k_op_andi_8_aw, 0xffff, 0x0238, { 20,  20,   8,   8,   8,   8,   4}},
34318   {m68000_base_device_ops::m68k_op_andi_8_al, 0xffff, 0x0239, { 24,  24,   8,   8,   8,   8,   4}},
34319   {m68000_base_device_ops::m68k_op_andi_16_toc, 0xffff, 0x023c, { 20,  16,  12,  12,  12,  12,  12}},
34320   {m68000_base_device_ops::m68k_op_andi_16_aw, 0xffff, 0x0278, { 20,  20,   8,   8,   8,   8,   4}},
34321   {m68000_base_device_ops::m68k_op_andi_16_al, 0xffff, 0x0279, { 24,  24,   8,   8,   8,   8,   4}},
34322   {m68000_base_device_ops::m68k_op_andi_16_tos, 0xffff, 0x027c, { 20,  16,  12,  12,  12,  12,  12}},
34323   {m68000_base_device_ops::m68k_op_andi_32_aw, 0xffff, 0x02b8, { 32,  32,   8,   8,   8,   8,   4}},
34324   {m68000_base_device_ops::m68k_op_andi_32_al, 0xffff, 0x02b9, { 36,  36,   8,   8,   8,   8,   4}},
34325   {m68000_base_device_ops::m68k_op_chk2cmp2_16_aw, 0xffff, 0x02f8, {255, 255,  22,  22,  22,  22,  18}},
34326   {m68000_base_device_ops::m68k_op_chk2cmp2_16_al, 0xffff, 0x02f9, {255, 255,  22,  22,  22,  22,  18}},
34327   {m68000_base_device_ops::m68k_op_chk2cmp2_16_pcdi, 0xffff, 0x02fa, {255, 255,  23,  23,  23,  23,  23}},
34328   {m68000_base_device_ops::m68k_op_chk2cmp2_16_pcix, 0xffff, 0x02fb, {255, 255,  23,  23,  23,  23,  23}},
34329   {m68000_base_device_ops::m68k_op_subi_8_pi7, 0xffff, 0x041f, { 16,  16,   8,   8,   8,   8,   4}},
34330   {m68000_base_device_ops::m68k_op_subi_8_pd7, 0xffff, 0x0427, { 18,  18,   9,   9,   9,   9,   4}},
34331   {m68000_base_device_ops::m68k_op_subi_8_aw, 0xffff, 0x0438, { 20,  20,   8,   8,   8,   8,   4}},
34332   {m68000_base_device_ops::m68k_op_subi_8_al, 0xffff, 0x0439, { 24,  24,   8,   8,   8,   8,   4}},
34333   {m68000_base_device_ops::m68k_op_subi_16_aw, 0xffff, 0x0478, { 20,  20,   8,   8,   8,   8,   4}},
34334   {m68000_base_device_ops::m68k_op_subi_16_al, 0xffff, 0x0479, { 24,  24,   8,   8,   8,   8,   4}},
34335   {m68000_base_device_ops::m68k_op_subi_32_aw, 0xffff, 0x04b8, { 32,  32,   8,   8,   8,   8,   4}},
34336   {m68000_base_device_ops::m68k_op_subi_32_al, 0xffff, 0x04b9, { 36,  36,   8,   8,   8,   8,   4}},
34337   {m68000_base_device_ops::m68k_op_chk2cmp2_32_aw, 0xffff, 0x04f8, {255, 255,  22,  22,  22,  22,  18}},
34338   {m68000_base_device_ops::m68k_op_chk2cmp2_32_al, 0xffff, 0x04f9, {255, 255,  22,  22,  22,  22,  18}},
34339   {m68000_base_device_ops::m68k_op_chk2cmp2_32_pcdi, 0xffff, 0x04fa, {255, 255,  23,  23,  23,  23,  23}},
34340   {m68000_base_device_ops::m68k_op_chk2cmp2_32_pcix, 0xffff, 0x04fb, {255, 255,  23,  23,  23,  23,  23}},
34341   {m68000_base_device_ops::m68k_op_addi_8_pi7, 0xffff, 0x061f, { 16,  16,   8,   8,   8,   8,   4}},
34342   {m68000_base_device_ops::m68k_op_addi_8_pd7, 0xffff, 0x0627, { 18,  18,   9,   9,   9,   9,   4}},
34343   {m68000_base_device_ops::m68k_op_addi_8_aw, 0xffff, 0x0638, { 20,  20,   8,   8,   8,   8,   4}},
34344   {m68000_base_device_ops::m68k_op_addi_8_al, 0xffff, 0x0639, { 24,  24,   8,   8,   8,   8,   4}},
34345   {m68000_base_device_ops::m68k_op_addi_16_aw, 0xffff, 0x0678, { 20,  20,   8,   8,   8,   8,   4}},
34346   {m68000_base_device_ops::m68k_op_addi_16_al, 0xffff, 0x0679, { 24,  24,   8,   8,   8,   8,   4}},
34347   {m68000_base_device_ops::m68k_op_addi_32_aw, 0xffff, 0x06b8, { 32,  32,   8,   8,   8,   8,   4}},
34348   {m68000_base_device_ops::m68k_op_addi_32_al, 0xffff, 0x06b9, { 36,  36,   8,   8,   8,   8,   4}},
34349   {m68000_base_device_ops::m68k_op_callm_32_aw, 0xffff, 0x06f8, {255, 255,  64,  64,  64,  64,  60}},
34350   {m68000_base_device_ops::m68k_op_callm_32_al, 0xffff, 0x06f9, {255, 255,  64,  64,  64,  64,  60}},
34351   {m68000_base_device_ops::m68k_op_callm_32_pcdi, 0xffff, 0x06fa, {255, 255,  65,  65,  65,  65,  60}},
34352   {m68000_base_device_ops::m68k_op_callm_32_pcix, 0xffff, 0x06fb, {255, 255,  67,  67,  67,  67,  60}},
34353   {m68000_base_device_ops::m68k_op_btst_8_s_pi7, 0xffff, 0x081f, { 12,  12,   8,   8,   8,   8,   4}},
34354   {m68000_base_device_ops::m68k_op_btst_8_s_pd7, 0xffff, 0x0827, { 14,  14,   9,   9,   9,   9,   4}},
34355   {m68000_base_device_ops::m68k_op_btst_8_s_aw, 0xffff, 0x0838, { 16,  16,   8,   8,   8,   8,   4}},
34356   {m68000_base_device_ops::m68k_op_btst_8_s_al, 0xffff, 0x0839, { 20,  20,   8,   8,   8,   8,   4}},
34357   {m68000_base_device_ops::m68k_op_btst_8_s_pcdi, 0xffff, 0x083a, { 16,  16,   9,   9,   9,   9,   4}},
34358   {m68000_base_device_ops::m68k_op_btst_8_s_pcix, 0xffff, 0x083b, { 18,  18,  11,  11,  11,  11,   4}},
34359   {m68000_base_device_ops::m68k_op_bchg_8_s_pi7, 0xffff, 0x085f, { 16,  16,   8,   8,   8,   8,   4}},
34360   {m68000_base_device_ops::m68k_op_bchg_8_s_pd7, 0xffff, 0x0867, { 18,  18,   9,   9,   9,   9,   4}},
34361   {m68000_base_device_ops::m68k_op_bchg_8_s_aw, 0xffff, 0x0878, { 20,  20,   8,   8,   8,   8,   4}},
34362   {m68000_base_device_ops::m68k_op_bchg_8_s_al, 0xffff, 0x0879, { 24,  24,   8,   8,   8,   8,   4}},
34363   {m68000_base_device_ops::m68k_op_bclr_8_s_pi7, 0xffff, 0x089f, { 16,  16,   8,   8,   8,   8,   4}},
34364   {m68000_base_device_ops::m68k_op_bclr_8_s_pd7, 0xffff, 0x08a7, { 18,  18,   9,   9,   9,   9,   4}},
34365   {m68000_base_device_ops::m68k_op_bclr_8_s_aw, 0xffff, 0x08b8, { 20,  20,   8,   8,   8,   8,   4}},
34366   {m68000_base_device_ops::m68k_op_bclr_8_s_al, 0xffff, 0x08b9, { 24,  24,   8,   8,   8,   8,   4}},
34367   {m68000_base_device_ops::m68k_op_bset_8_s_pi7, 0xffff, 0x08df, { 16,  16,   8,   8,   8,   8,   4}},
34368   {m68000_base_device_ops::m68k_op_bset_8_s_pd7, 0xffff, 0x08e7, { 18,  18,   9,   9,   9,   9,   4}},
34369   {m68000_base_device_ops::m68k_op_bset_8_s_aw, 0xffff, 0x08f8, { 20,  20,   8,   8,   8,   8,   4}},
34370   {m68000_base_device_ops::m68k_op_bset_8_s_al, 0xffff, 0x08f9, { 24,  24,   8,   8,   8,   8,   4}},
34371   {m68000_base_device_ops::m68k_op_eori_8_pi7, 0xffff, 0x0a1f, { 16,  16,   8,   8,   8,   8,   4}},
34372   {m68000_base_device_ops::m68k_op_eori_8_pd7, 0xffff, 0x0a27, { 18,  18,   9,   9,   9,   9,   4}},
34373   {m68000_base_device_ops::m68k_op_eori_8_aw, 0xffff, 0x0a38, { 20,  20,   8,   8,   8,   8,   4}},
34374   {m68000_base_device_ops::m68k_op_eori_8_al, 0xffff, 0x0a39, { 24,  24,   8,   8,   8,   8,   4}},
34375   {m68000_base_device_ops::m68k_op_eori_16_toc, 0xffff, 0x0a3c, { 20,  16,  12,  12,  12,  12,  12}},
34376   {m68000_base_device_ops::m68k_op_eori_16_aw, 0xffff, 0x0a78, { 20,  20,   8,   8,   8,   8,   4}},
34377   {m68000_base_device_ops::m68k_op_eori_16_al, 0xffff, 0x0a79, { 24,  24,   8,   8,   8,   8,   4}},
34378   {m68000_base_device_ops::m68k_op_eori_16_tos, 0xffff, 0x0a7c, { 20,  16,  12,  12,  12,  12,  12}},
34379   {m68000_base_device_ops::m68k_op_eori_32_aw, 0xffff, 0x0ab8, { 32,  32,   8,   8,   8,   8,   4}},
34380   {m68000_base_device_ops::m68k_op_eori_32_al, 0xffff, 0x0ab9, { 36,  36,   8,   8,   8,   8,   4}},
34381   {m68000_base_device_ops::m68k_op_cas_8_pi7, 0xffff, 0x0adf, {255, 255,  16,  16,  16,  16,  12}},
34382   {m68000_base_device_ops::m68k_op_cas_8_pd7, 0xffff, 0x0ae7, {255, 255,  17,  17,  17,  17,  12}},
34383   {m68000_base_device_ops::m68k_op_cas_8_aw, 0xffff, 0x0af8, {255, 255,  16,  16,  16,  16,  12}},
34384   {m68000_base_device_ops::m68k_op_cas_8_al, 0xffff, 0x0af9, {255, 255,  16,  16,  16,  16,  12}},
34385   {m68000_base_device_ops::m68k_op_cmpi_8_pi7, 0xffff, 0x0c1f, { 12,  12,   6,   6,   6,   6,   2}},
34386   {m68000_base_device_ops::m68k_op_cmpi_8_pd7, 0xffff, 0x0c27, { 14,  14,   7,   7,   7,   7,   2}},
34387   {m68000_base_device_ops::m68k_op_cmpi_8_aw, 0xffff, 0x0c38, { 16,  16,   6,   6,   6,   6,   2}},
34388   {m68000_base_device_ops::m68k_op_cmpi_8_al, 0xffff, 0x0c39, { 20,  20,   6,   6,   6,   6,   2}},
34389   {m68000_base_device_ops::m68k_op_cmpi_8_pcdi, 0xffff, 0x0c3a, {255, 255,   7,   7,   7,   7,   7}},
34390   {m68000_base_device_ops::m68k_op_cmpi_8_pcix, 0xffff, 0x0c3b, {255, 255,   9,   9,   9,   9,   9}},
34391   {m68000_base_device_ops::m68k_op_cmpi_16_aw, 0xffff, 0x0c78, { 16,  16,   6,   6,   6,   6,   2}},
34392   {m68000_base_device_ops::m68k_op_cmpi_16_al, 0xffff, 0x0c79, { 20,  20,   6,   6,   6,   6,   2}},
34393   {m68000_base_device_ops::m68k_op_cmpi_16_pcdi, 0xffff, 0x0c7a, {255, 255,   7,   7,   7,   7,   7}},
34394   {m68000_base_device_ops::m68k_op_cmpi_16_pcix, 0xffff, 0x0c7b, {255, 255,   9,   9,   9,   9,   9}},
34395   {m68000_base_device_ops::m68k_op_cmpi_32_aw, 0xffff, 0x0cb8, { 24,  24,   6,   6,   6,   6,   2}},
34396   {m68000_base_device_ops::m68k_op_cmpi_32_al, 0xffff, 0x0cb9, { 28,  28,   6,   6,   6,   6,   2}},
34397   {m68000_base_device_ops::m68k_op_cmpi_32_pcdi, 0xffff, 0x0cba, {255, 255,   7,   7,   7,   7,   7}},
34398   {m68000_base_device_ops::m68k_op_cmpi_32_pcix, 0xffff, 0x0cbb, {255, 255,   9,   9,   9,   9,   9}},
34399   {m68000_base_device_ops::m68k_op_cas_16_aw, 0xffff, 0x0cf8, {255, 255,  16,  16,  16,  16,  12}},
34400   {m68000_base_device_ops::m68k_op_cas_16_al, 0xffff, 0x0cf9, {255, 255,  16,  16,  16,  16,  12}},
34401   {m68000_base_device_ops::m68k_op_cas2_16, 0xffff, 0x0cfc, {255, 255,  12,  12,  12,  12,  12}},
34402   {m68000_base_device_ops::m68k_op_moves_8_pi7, 0xffff, 0x0e1f, {255,  18,   9,   9,   9,   9,   5}},
34403   {m68000_base_device_ops::m68k_op_moves_8_pd7, 0xffff, 0x0e27, {255,  20,  10,  10,  10,  10,   5}},
34404   {m68000_base_device_ops::m68k_op_moves_8_aw, 0xffff, 0x0e38, {255,  26,   9,   9,   9,   9,   5}},
34405   {m68000_base_device_ops::m68k_op_moves_8_al, 0xffff, 0x0e39, {255,  30,   9,   9,   9,   9,   5}},
34406   {m68000_base_device_ops::m68k_op_moves_16_aw, 0xffff, 0x0e78, {255,  26,   9,   9,   9,   9,   5}},
34407   {m68000_base_device_ops::m68k_op_moves_16_al, 0xffff, 0x0e79, {255,  30,   9,   9,   9,   9,   5}},
34408   {m68000_base_device_ops::m68k_op_moves_32_aw, 0xffff, 0x0eb8, {255,  32,   9,   9,   9,   9,   5}},
34409   {m68000_base_device_ops::m68k_op_moves_32_al, 0xffff, 0x0eb9, {255,  36,   9,   9,   9,   9,   5}},
34410   {m68000_base_device_ops::m68k_op_cas_32_aw, 0xffff, 0x0ef8, {255, 255,  16,  16,  16,  16,  12}},
34411   {m68000_base_device_ops::m68k_op_cas_32_al, 0xffff, 0x0ef9, {255, 255,  16,  16,  16,  16,  12}},
34412   {m68000_base_device_ops::m68k_op_cas2_32, 0xffff, 0x0efc, {255, 255,  12,  12,  12,  12,  12}},
34413   {m68000_base_device_ops::m68k_op_move_8_aw_pi7, 0xffff, 0x11df, { 16,  16,   8,   8,   8,   8,   4}},
34414   {m68000_base_device_ops::m68k_op_move_8_aw_pd7, 0xffff, 0x11e7, { 18,  18,   9,   9,   9,   9,   4}},
34415   {m68000_base_device_ops::m68k_op_move_8_aw_aw, 0xffff, 0x11f8, { 20,  20,   8,   8,   8,   8,   4}},
34416   {m68000_base_device_ops::m68k_op_move_8_aw_al, 0xffff, 0x11f9, { 24,  24,   8,   8,   8,   8,   4}},
34417   {m68000_base_device_ops::m68k_op_move_8_aw_pcdi, 0xffff, 0x11fa, { 20,  20,   9,   9,   9,   9,   4}},
34418   {m68000_base_device_ops::m68k_op_move_8_aw_pcix, 0xffff, 0x11fb, { 22,  22,  11,  11,  11,  11,   4}},
34419   {m68000_base_device_ops::m68k_op_move_8_aw_i, 0xffff, 0x11fc, { 16,  16,   6,   6,   6,   6,   4}},
34420   {m68000_base_device_ops::m68k_op_move_8_al_pi7, 0xffff, 0x13df, { 20,  20,  10,  10,  10,  10,   6}},
34421   {m68000_base_device_ops::m68k_op_move_8_al_pd7, 0xffff, 0x13e7, { 22,  22,  11,  11,  11,  11,   6}},
34422   {m68000_base_device_ops::m68k_op_move_8_al_aw, 0xffff, 0x13f8, { 24,  24,  10,  10,  10,  10,   6}},
34423   {m68000_base_device_ops::m68k_op_move_8_al_al, 0xffff, 0x13f9, { 28,  28,  10,  10,  10,  10,   6}},
34424   {m68000_base_device_ops::m68k_op_move_8_al_pcdi, 0xffff, 0x13fa, { 24,  24,  11,  11,  11,  11,   6}},
34425   {m68000_base_device_ops::m68k_op_move_8_al_pcix, 0xffff, 0x13fb, { 26,  26,  13,  13,  13,  13,   6}},
34426   {m68000_base_device_ops::m68k_op_move_8_al_i, 0xffff, 0x13fc, { 20,  20,   8,   8,   8,   8,   6}},
34427   {m68000_base_device_ops::m68k_op_move_8_pi7_pi7, 0xffff, 0x1edf, { 12,  12,   8,   8,   8,   8,   4}},
34428   {m68000_base_device_ops::m68k_op_move_8_pi7_pd7, 0xffff, 0x1ee7, { 14,  14,   9,   9,   9,   9,   4}},
34429   {m68000_base_device_ops::m68k_op_move_8_pi7_aw, 0xffff, 0x1ef8, { 16,  16,   8,   8,   8,   8,   4}},
34430   {m68000_base_device_ops::m68k_op_move_8_pi7_al, 0xffff, 0x1ef9, { 20,  20,   8,   8,   8,   8,   4}},
34431   {m68000_base_device_ops::m68k_op_move_8_pi7_pcdi, 0xffff, 0x1efa, { 16,  16,   9,   9,   9,   9,   4}},
34432   {m68000_base_device_ops::m68k_op_move_8_pi7_pcix, 0xffff, 0x1efb, { 18,  18,  11,  11,  11,  11,   4}},
34433   {m68000_base_device_ops::m68k_op_move_8_pi7_i, 0xffff, 0x1efc, { 12,  12,   6,   6,   6,   6,   4}},
34434   {m68000_base_device_ops::m68k_op_move_8_pd7_pi7, 0xffff, 0x1f1f, { 12,  12,   9,   9,   9,   9,   5}},
34435   {m68000_base_device_ops::m68k_op_move_8_pd7_pd7, 0xffff, 0x1f27, { 14,  14,  10,  10,  10,  10,   5}},
34436   {m68000_base_device_ops::m68k_op_move_8_pd7_aw, 0xffff, 0x1f38, { 16,  16,   9,   9,   9,   9,   5}},
34437   {m68000_base_device_ops::m68k_op_move_8_pd7_al, 0xffff, 0x1f39, { 20,  20,   9,   9,   9,   9,   5}},
34438   {m68000_base_device_ops::m68k_op_move_8_pd7_pcdi, 0xffff, 0x1f3a, { 16,  16,  10,  10,  10,  10,   5}},
34439   {m68000_base_device_ops::m68k_op_move_8_pd7_pcix, 0xffff, 0x1f3b, { 18,  18,  12,  12,  12,  12,   5}},
34440   {m68000_base_device_ops::m68k_op_move_8_pd7_i, 0xffff, 0x1f3c, { 12,  12,   7,   7,   7,   7,   5}},
34441   {m68000_base_device_ops::m68k_op_move_32_aw_aw, 0xffff, 0x21f8, { 28,  28,   8,   8,   8,   8,   4}},
34442   {m68000_base_device_ops::m68k_op_move_32_aw_al, 0xffff, 0x21f9, { 32,  32,   8,   8,   8,   8,   4}},
34443   {m68000_base_device_ops::m68k_op_move_32_aw_pcdi, 0xffff, 0x21fa, { 28,  28,   9,   9,   9,   9,   4}},
34444   {m68000_base_device_ops::m68k_op_move_32_aw_pcix, 0xffff, 0x21fb, { 30,  30,  11,  11,  11,  11,   4}},
34445   {m68000_base_device_ops::m68k_op_move_32_aw_i, 0xffff, 0x21fc, { 24,  24,   8,   8,   8,   8,   4}},
34446   {m68000_base_device_ops::m68k_op_move_32_al_aw, 0xffff, 0x23f8, { 32,  32,  10,  10,  10,  10,   6}},
34447   {m68000_base_device_ops::m68k_op_move_32_al_al, 0xffff, 0x23f9, { 36,  36,  10,  10,  10,  10,   6}},
34448   {m68000_base_device_ops::m68k_op_move_32_al_pcdi, 0xffff, 0x23fa, { 32,  32,  11,  11,  11,  11,   6}},
34449   {m68000_base_device_ops::m68k_op_move_32_al_pcix, 0xffff, 0x23fb, { 34,  34,  13,  13,  13,  13,   6}},
34450   {m68000_base_device_ops::m68k_op_move_32_al_i, 0xffff, 0x23fc, { 28,  28,  10,  10,  10,  10,   6}},
34451   {m68000_base_device_ops::m68k_op_move_16_aw_aw, 0xffff, 0x31f8, { 20,  20,   8,   8,   8,   8,   4}},
34452   {m68000_base_device_ops::m68k_op_move_16_aw_al, 0xffff, 0x31f9, { 24,  24,   8,   8,   8,   8,   4}},
34453   {m68000_base_device_ops::m68k_op_move_16_aw_pcdi, 0xffff, 0x31fa, { 20,  20,   9,   9,   9,   9,   4}},
34454   {m68000_base_device_ops::m68k_op_move_16_aw_pcix, 0xffff, 0x31fb, { 22,  22,  11,  11,  11,  11,   4}},
34455   {m68000_base_device_ops::m68k_op_move_16_aw_i, 0xffff, 0x31fc, { 16,  16,   6,   6,   6,   6,   4}},
34456   {m68000_base_device_ops::m68k_op_move_16_al_aw, 0xffff, 0x33f8, { 24,  24,  10,  10,  10,  10,   6}},
34457   {m68000_base_device_ops::m68k_op_move_16_al_al, 0xffff, 0x33f9, { 28,  28,  10,  10,  10,  10,   6}},
34458   {m68000_base_device_ops::m68k_op_move_16_al_pcdi, 0xffff, 0x33fa, { 24,  24,  11,  11,  11,  11,   6}},
34459   {m68000_base_device_ops::m68k_op_move_16_al_pcix, 0xffff, 0x33fb, { 26,  26,  13,  13,  13,  13,   6}},
34460   {m68000_base_device_ops::m68k_op_move_16_al_i, 0xffff, 0x33fc, { 20,  20,   8,   8,   8,   8,   6}},
34461   {m68000_base_device_ops::m68k_op_negx_8_pi7, 0xffff, 0x401f, { 12,  12,   8,   8,   8,   8,   4}},
34462   {m68000_base_device_ops::m68k_op_negx_8_pd7, 0xffff, 0x4027, { 14,  14,   9,   9,   9,   9,   4}},
34463   {m68000_base_device_ops::m68k_op_negx_8_aw, 0xffff, 0x4038, { 16,  16,   8,   8,   8,   8,   4}},
34464   {m68000_base_device_ops::m68k_op_negx_8_al, 0xffff, 0x4039, { 20,  20,   8,   8,   8,   8,   4}},
34465   {m68000_base_device_ops::m68k_op_negx_16_aw, 0xffff, 0x4078, { 16,  16,   8,   8,   8,   8,   4}},
34466   {m68000_base_device_ops::m68k_op_negx_16_al, 0xffff, 0x4079, { 20,  20,   8,   8,   8,   8,   4}},
34467   {m68000_base_device_ops::m68k_op_negx_32_aw, 0xffff, 0x40b8, { 24,  24,   8,   8,   8,   8,   4}},
34468   {m68000_base_device_ops::m68k_op_negx_32_al, 0xffff, 0x40b9, { 28,  28,   8,   8,   8,   8,   4}},
34469   {m68000_base_device_ops::m68k_op_move_16_frs_aw, 0xffff, 0x40f8, { 16,  16,  12,  12,  12,  12,   8}},
34470   {m68000_base_device_ops::m68k_op_move_16_frs_al, 0xffff, 0x40f9, { 20,  20,  12,  12,  12,  12,   8}},
34471   {m68000_base_device_ops::m68k_op_clr_8_pi7, 0xffff, 0x421f, { 12,   8,   8,   8,   8,   8,   4}},
34472   {m68000_base_device_ops::m68k_op_clr_8_pd7, 0xffff, 0x4227, { 14,  10,   9,   9,   9,   9,   4}},
34473   {m68000_base_device_ops::m68k_op_clr_8_aw, 0xffff, 0x4238, { 16,  12,   8,   8,   8,   8,   4}},
34474   {m68000_base_device_ops::m68k_op_clr_8_al, 0xffff, 0x4239, { 20,  14,   8,   8,   8,   8,   4}},
34475   {m68000_base_device_ops::m68k_op_clr_16_aw, 0xffff, 0x4278, { 16,  12,   8,   8,   8,   8,   4}},
34476   {m68000_base_device_ops::m68k_op_clr_16_al, 0xffff, 0x4279, { 20,  14,   8,   8,   8,   8,   4}},
34477   {m68000_base_device_ops::m68k_op_clr_32_aw, 0xffff, 0x42b8, { 24,  16,   8,   8,   8,   8,   4}},
34478   {m68000_base_device_ops::m68k_op_clr_32_al, 0xffff, 0x42b9, { 28,  20,   8,   8,   8,   8,   4}},
34479   {m68000_base_device_ops::m68k_op_move_16_frc_aw, 0xffff, 0x42f8, {255,  16,   8,   8,   8,   8,   4}},
34480   {m68000_base_device_ops::m68k_op_move_16_frc_al, 0xffff, 0x42f9, {255,  20,   8,   8,   8,   8,   4}},
34481   {m68000_base_device_ops::m68k_op_neg_8_pi7, 0xffff, 0x441f, { 12,  12,   8,   8,   8,   8,   4}},
34482   {m68000_base_device_ops::m68k_op_neg_8_pd7, 0xffff, 0x4427, { 14,  14,   9,   9,   9,   9,   4}},
34483   {m68000_base_device_ops::m68k_op_neg_8_aw, 0xffff, 0x4438, { 16,  16,   8,   8,   8,   8,   4}},
34484   {m68000_base_device_ops::m68k_op_neg_8_al, 0xffff, 0x4439, { 20,  20,   8,   8,   8,   8,   4}},
34485   {m68000_base_device_ops::m68k_op_neg_16_aw, 0xffff, 0x4478, { 16,  16,   8,   8,   8,   8,   4}},
34486   {m68000_base_device_ops::m68k_op_neg_16_al, 0xffff, 0x4479, { 20,  20,   8,   8,   8,   8,   4}},
34487   {m68000_base_device_ops::m68k_op_neg_32_aw, 0xffff, 0x44b8, { 24,  24,   8,   8,   8,   8,   4}},
34488   {m68000_base_device_ops::m68k_op_neg_32_al, 0xffff, 0x44b9, { 28,  28,   8,   8,   8,   8,   4}},
34489   {m68000_base_device_ops::m68k_op_move_16_toc_aw, 0xffff, 0x44f8, { 20,  20,   8,   8,   8,   8,   4}},
34490   {m68000_base_device_ops::m68k_op_move_16_toc_al, 0xffff, 0x44f9, { 24,  24,   8,   8,   8,   8,   4}},
34491   {m68000_base_device_ops::m68k_op_move_16_toc_pcdi, 0xffff, 0x44fa, { 20,  20,   9,   9,   9,   9,   4}},
34492   {m68000_base_device_ops::m68k_op_move_16_toc_pcix, 0xffff, 0x44fb, { 22,  22,  11,  11,  11,  11,   4}},
34493   {m68000_base_device_ops::m68k_op_move_16_toc_i, 0xffff, 0x44fc, { 16,  16,   6,   6,   6,   6,   4}},
34494   {m68000_base_device_ops::m68k_op_not_8_pi7, 0xffff, 0x461f, { 12,  12,   8,   8,   8,   8,   4}},
34495   {m68000_base_device_ops::m68k_op_not_8_pd7, 0xffff, 0x4627, { 14,  14,   9,   9,   9,   9,   4}},
34496   {m68000_base_device_ops::m68k_op_not_8_aw, 0xffff, 0x4638, { 16,  16,   8,   8,   8,   8,   4}},
34497   {m68000_base_device_ops::m68k_op_not_8_al, 0xffff, 0x4639, { 20,  20,   8,   8,   8,   8,   4}},
34498   {m68000_base_device_ops::m68k_op_not_16_aw, 0xffff, 0x4678, { 16,  16,   8,   8,   8,   8,   4}},
34499   {m68000_base_device_ops::m68k_op_not_16_al, 0xffff, 0x4679, { 20,  20,   8,   8,   8,   8,   4}},
34500   {m68000_base_device_ops::m68k_op_not_32_aw, 0xffff, 0x46b8, { 24,  24,   8,   8,   8,   8,   4}},
34501   {m68000_base_device_ops::m68k_op_not_32_al, 0xffff, 0x46b9, { 28,  28,   8,   8,   8,   8,   4}},
34502   {m68000_base_device_ops::m68k_op_move_16_tos_aw, 0xffff, 0x46f8, { 20,  20,  12,  12,  12,  12,   8}},
34503   {m68000_base_device_ops::m68k_op_move_16_tos_al, 0xffff, 0x46f9, { 24,  24,  12,  12,  12,  12,   8}},
34504   {m68000_base_device_ops::m68k_op_move_16_tos_pcdi, 0xffff, 0x46fa, { 20,  20,  13,  13,  13,  13,   8}},
34505   {m68000_base_device_ops::m68k_op_move_16_tos_pcix, 0xffff, 0x46fb, { 22,  22,  15,  15,  15,  15,   8}},
34506   {m68000_base_device_ops::m68k_op_move_16_tos_i, 0xffff, 0x46fc, { 16,  16,  10,  10,  10,  10,   8}},
34507   {m68000_base_device_ops::m68k_op_link_32_a7, 0xffff, 0x480f, {255, 255,   6,   6,   6,   6,   6}},
34508   {m68000_base_device_ops::m68k_op_nbcd_8_pi7, 0xffff, 0x481f, { 12,  12,  10,  10,  10,  10,   6}},
34509   {m68000_base_device_ops::m68k_op_nbcd_8_pd7, 0xffff, 0x4827, { 14,  14,  11,  11,  11,  11,   6}},
34510   {m68000_base_device_ops::m68k_op_nbcd_8_aw, 0xffff, 0x4838, { 16,  16,  10,  10,  10,  10,   6}},
34511   {m68000_base_device_ops::m68k_op_nbcd_8_al, 0xffff, 0x4839, { 20,  20,  10,  10,  10,  10,   6}},
34512   {m68000_base_device_ops::m68k_op_pea_32_aw, 0xffff, 0x4878, { 16,  16,   9,   9,   9,   9,   5}},
34513   {m68000_base_device_ops::m68k_op_pea_32_al, 0xffff, 0x4879, { 20,  20,   9,   9,   9,   9,   5}},
34514   {m68000_base_device_ops::m68k_op_pea_32_pcdi, 0xffff, 0x487a, { 16,  16,  10,  10,  10,  10,   5}},
34515   {m68000_base_device_ops::m68k_op_pea_32_pcix, 0xffff, 0x487b, { 20,  20,  12,  12,  12,  12,   5}},
34516   {m68000_base_device_ops::m68k_op_movem_16_re_aw, 0xffff, 0x48b8, { 12,  12,   8,   8,   8,   8,   4}},
34517   {m68000_base_device_ops::m68k_op_movem_16_re_al, 0xffff, 0x48b9, { 16,  16,   8,   8,   8,   8,   4}},
34518   {m68000_base_device_ops::m68k_op_movem_32_re_aw, 0xffff, 0x48f8, { 12,  12,   8,   8,   8,   8,   4}},
34519   {m68000_base_device_ops::m68k_op_movem_32_re_al, 0xffff, 0x48f9, { 16,  16,   8,   8,   8,   8,   4}},
34520   {m68000_base_device_ops::m68k_op_tst_8_pi7, 0xffff, 0x4a1f, {  8,   8,   6,   6,   6,   6,   2}},
34521   {m68000_base_device_ops::m68k_op_tst_8_pd7, 0xffff, 0x4a27, { 10,  10,   7,   7,   7,   7,   2}},
34522   {m68000_base_device_ops::m68k_op_tst_8_aw, 0xffff, 0x4a38, { 12,  12,   6,   6,   6,   6,   2}},
34523   {m68000_base_device_ops::m68k_op_tst_8_al, 0xffff, 0x4a39, { 16,  16,   6,   6,   6,   6,   2}},
34524   {m68000_base_device_ops::m68k_op_tst_8_pcdi, 0xffff, 0x4a3a, {255, 255,   7,   7,   7,   7,   7}},
34525   {m68000_base_device_ops::m68k_op_tst_8_pcix, 0xffff, 0x4a3b, {255, 255,   9,   9,   9,   9,   9}},
34526   {m68000_base_device_ops::m68k_op_tst_8_i, 0xffff, 0x4a3c, {255, 255,   6,   6,   6,   6,   6}},
34527   {m68000_base_device_ops::m68k_op_tst_16_aw, 0xffff, 0x4a78, { 12,  12,   6,   6,   6,   6,   2}},
34528   {m68000_base_device_ops::m68k_op_tst_16_al, 0xffff, 0x4a79, { 16,  16,   6,   6,   6,   6,   2}},
34529   {m68000_base_device_ops::m68k_op_tst_16_pcdi, 0xffff, 0x4a7a, {255, 255,   7,   7,   7,   7,   7}},
34530   {m68000_base_device_ops::m68k_op_tst_16_pcix, 0xffff, 0x4a7b, {255, 255,   9,   9,   9,   9,   9}},
34531   {m68000_base_device_ops::m68k_op_tst_16_i, 0xffff, 0x4a7c, {255, 255,   6,   6,   6,   6,   6}},
34532   {m68000_base_device_ops::m68k_op_tst_32_aw, 0xffff, 0x4ab8, { 16,  16,   6,   6,   6,   6,   2}},
34533   {m68000_base_device_ops::m68k_op_tst_32_al, 0xffff, 0x4ab9, { 20,  20,   6,   6,   6,   6,   2}},
34534   {m68000_base_device_ops::m68k_op_tst_32_pcdi, 0xffff, 0x4aba, {255, 255,   7,   7,   7,   7,   7}},
34535   {m68000_base_device_ops::m68k_op_tst_32_pcix, 0xffff, 0x4abb, {255, 255,   9,   9,   9,   9,   9}},
34536   {m68000_base_device_ops::m68k_op_tst_32_i, 0xffff, 0x4abc, {255, 255,   6,   6,   6,   6,   6}},
34537   {m68000_base_device_ops::m68k_op_tas_8_pi7, 0xffff, 0x4adf, { 18,  18,  16,  16,  16,  16,  12}},
34538   {m68000_base_device_ops::m68k_op_tas_8_pd7, 0xffff, 0x4ae7, { 20,  20,  17,  17,  17,  17,  12}},
34539   {m68000_base_device_ops::m68k_op_tas_8_aw, 0xffff, 0x4af8, { 22,  22,  16,  16,  16,  16,  12}},
34540   {m68000_base_device_ops::m68k_op_tas_8_al, 0xffff, 0x4af9, { 26,  26,  16,  16,  16,  16,  12}},
34541   {m68000_base_device_ops::m68k_op_illegal, 0xffff, 0x4afc, {  4,   4,   4,   4,   4,   4,   4}},
34542   {m68000_base_device_ops::m68k_op_mull_32_aw, 0xffff, 0x4c38, {255, 255,  47,  47,  47,  47,  43}},
34543   {m68000_base_device_ops::m68k_op_mull_32_al, 0xffff, 0x4c39, {255, 255,  47,  47,  47,  47,  43}},
34544   {m68000_base_device_ops::m68k_op_mull_32_pcdi, 0xffff, 0x4c3a, {255, 255,  48,  48,  48,  48,  43}},
34545   {m68000_base_device_ops::m68k_op_mull_32_pcix, 0xffff, 0x4c3b, {255, 255,  50,  50,  50,  50,  43}},
34546   {m68000_base_device_ops::m68k_op_mull_32_i, 0xffff, 0x4c3c, {255, 255,  47,  47,  47,  47,  43}},
34547   {m68000_base_device_ops::m68k_op_divl_32_aw, 0xffff, 0x4c78, {255, 255,  88,  88,  88,  88,  84}},
34548   {m68000_base_device_ops::m68k_op_divl_32_al, 0xffff, 0x4c79, {255, 255,  88,  88,  88,  88,  84}},
34549   {m68000_base_device_ops::m68k_op_divl_32_pcdi, 0xffff, 0x4c7a, {255, 255,  89,  89,  89,  89,  84}},
34550   {m68000_base_device_ops::m68k_op_divl_32_pcix, 0xffff, 0x4c7b, {255, 255,  91,  91,  91,  91,  84}},
34551   {m68000_base_device_ops::m68k_op_divl_32_i, 0xffff, 0x4c7c, {255, 255,  88,  88,  88,  88,  84}},
34552   {m68000_base_device_ops::m68k_op_movem_16_er_aw, 0xffff, 0x4cb8, { 16,  16,  12,  12,  12,  12,   8}},
34553   {m68000_base_device_ops::m68k_op_movem_16_er_al, 0xffff, 0x4cb9, { 20,  20,  12,  12,  12,  12,   8}},
34554   {m68000_base_device_ops::m68k_op_movem_16_er_pcdi, 0xffff, 0x4cba, { 16,  16,   9,   9,   9,   9,   9}},
34555   {m68000_base_device_ops::m68k_op_movem_16_er_pcix, 0xffff, 0x4cbb, { 18,  18,  11,  11,  11,  11,  11}},
34556   {m68000_base_device_ops::m68k_op_movem_32_er_aw, 0xffff, 0x4cf8, { 16,  16,  12,  12,  12,  12,   8}},
34557   {m68000_base_device_ops::m68k_op_movem_32_er_al, 0xffff, 0x4cf9, { 20,  20,  12,  12,  12,  12,   8}},
34558   {m68000_base_device_ops::m68k_op_movem_32_er_pcdi, 0xffff, 0x4cfa, { 16,  16,   9,   9,   9,   9,   9}},
34559   {m68000_base_device_ops::m68k_op_movem_32_er_pcix, 0xffff, 0x4cfb, { 18,  18,  11,  11,  11,  11,  11}},
34560   {m68000_base_device_ops::m68k_op_link_16_a7, 0xffff, 0x4e57, { 16,  16,   5,   5,   5,   5,   5}},
34561   {m68000_base_device_ops::m68k_op_unlk_32_a7, 0xffff, 0x4e5f, { 12,  12,   6,   6,   6,   6,   6}},
34562   {m68000_base_device_ops::m68k_op_reset, 0xffff, 0x4e70, {  0,   0,   0,   0,   0,   0,   0}},
34563   {m68000_base_device_ops::m68k_op_nop, 0xffff, 0x4e71, {  4,   4,   2,   2,   2,   2,   2}},
34564   {m68000_base_device_ops::m68k_op_stop, 0xffff, 0x4e72, {  4,   4,   8,   8,   8,   8,   8}},
34565   {m68000_base_device_ops::m68k_op_rte_32, 0xffff, 0x4e73, { 20,  24,  20,  20,  20,  20,  20}},
34566   {m68000_base_device_ops::m68k_op_rtd_32, 0xffff, 0x4e74, {255,  16,  10,  10,  10,  10,  10}},
34567   {m68000_base_device_ops::m68k_op_rts_32, 0xffff, 0x4e75, { 16,  16,  10,  10,  10,  10,  10}},
34568   {m68000_base_device_ops::m68k_op_trapv, 0xffff, 0x4e76, {  4,   4,   4,   4,   4,   4,   4}},
34569   {m68000_base_device_ops::m68k_op_rtr_32, 0xffff, 0x4e77, { 20,  20,  14,  14,  14,  14,  14}},
34570   {m68000_base_device_ops::m68k_op_movec_32_cr, 0xffff, 0x4e7a, {255,  12,   6,   6,   6,   6,   6}},
34571   {m68000_base_device_ops::m68k_op_movec_32_rc, 0xffff, 0x4e7b, {255,  10,  12,  12,  12,  12,  12}},
34572   {m68000_base_device_ops::m68k_op_jsr_32_aw, 0xffff, 0x4eb8, { 18,  18,   4,   4,   4,   4,   0}},
34573   {m68000_base_device_ops::m68k_op_jsr_32_al, 0xffff, 0x4eb9, { 20,  20,   4,   4,   4,   4,   0}},
34574   {m68000_base_device_ops::m68k_op_jsr_32_pcdi, 0xffff, 0x4eba, { 18,  18,   5,   5,   5,   5,   0}},
34575   {m68000_base_device_ops::m68k_op_jsr_32_pcix, 0xffff, 0x4ebb, { 22,  22,   7,   7,   7,   7,   0}},
34576   {m68000_base_device_ops::m68k_op_jmp_32_aw, 0xffff, 0x4ef8, { 10,  10,   4,   4,   4,   4,   0}},
34577   {m68000_base_device_ops::m68k_op_jmp_32_al, 0xffff, 0x4ef9, { 12,  12,   4,   4,   4,   4,   0}},
34578   {m68000_base_device_ops::m68k_op_jmp_32_pcdi, 0xffff, 0x4efa, { 10,  10,   5,   5,   5,   5,   0}},
34579   {m68000_base_device_ops::m68k_op_jmp_32_pcix, 0xffff, 0x4efb, { 14,  14,   7,   7,   7,   7,   0}},
34580   {m68000_base_device_ops::m68k_op_st_8_pi7, 0xffff, 0x50df, { 12,  12,  10,  10,  10,  10,   6}},
34581   {m68000_base_device_ops::m68k_op_st_8_pd7, 0xffff, 0x50e7, { 14,  14,  11,  11,  11,  11,   6}},
34582   {m68000_base_device_ops::m68k_op_st_8_aw, 0xffff, 0x50f8, { 16,  16,  10,  10,  10,  10,   6}},
34583   {m68000_base_device_ops::m68k_op_st_8_al, 0xffff, 0x50f9, { 20,  20,  10,  10,  10,  10,   6}},
34584   {m68000_base_device_ops::m68k_op_trapt_16, 0xffff, 0x50fa, {255, 255,   6,   6,   6,   6,   6}},
34585   {m68000_base_device_ops::m68k_op_trapt_32, 0xffff, 0x50fb, {255, 255,   8,   8,   8,   8,   8}},
34586   {m68000_base_device_ops::m68k_op_trapt, 0xffff, 0x50fc, {255, 255,   4,   4,   4,   4,   4}},
34587   {m68000_base_device_ops::m68k_op_sf_8_pi7, 0xffff, 0x51df, { 12,  12,  10,  10,  10,  10,   6}},
34588   {m68000_base_device_ops::m68k_op_sf_8_pd7, 0xffff, 0x51e7, { 14,  14,  11,  11,  11,  11,   6}},
34589   {m68000_base_device_ops::m68k_op_sf_8_aw, 0xffff, 0x51f8, { 16,  16,  10,  10,  10,  10,   6}},
34590   {m68000_base_device_ops::m68k_op_sf_8_al, 0xffff, 0x51f9, { 20,  20,  10,  10,  10,  10,   6}},
34591   {m68000_base_device_ops::m68k_op_trapf_16, 0xffff, 0x51fa, {255, 255,   6,   6,   6,   6,   6}},
34592   {m68000_base_device_ops::m68k_op_trapf_32, 0xffff, 0x51fb, {255, 255,   8,   8,   8,   8,   8}},
34593   {m68000_base_device_ops::m68k_op_trapf, 0xffff, 0x51fc, {255, 255,   4,   4,   4,   4,   4}},
34594   {m68000_base_device_ops::m68k_op_shi_8_pi7, 0xffff, 0x52df, { 12,  12,  10,  10,  10,  10,   6}},
34595   {m68000_base_device_ops::m68k_op_shi_8_pd7, 0xffff, 0x52e7, { 14,  14,  11,  11,  11,  11,   6}},
34596   {m68000_base_device_ops::m68k_op_shi_8_aw, 0xffff, 0x52f8, { 16,  16,  10,  10,  10,  10,   6}},
34597   {m68000_base_device_ops::m68k_op_shi_8_al, 0xffff, 0x52f9, { 20,  20,  10,  10,  10,  10,   6}},
34598   {m68000_base_device_ops::m68k_op_traphi_16, 0xffff, 0x52fa, {255, 255,   6,   6,   6,   6,   6}},
34599   {m68000_base_device_ops::m68k_op_traphi_32, 0xffff, 0x52fb, {255, 255,   8,   8,   8,   8,   8}},
34600   {m68000_base_device_ops::m68k_op_traphi, 0xffff, 0x52fc, {255, 255,   4,   4,   4,   4,   4}},
34601   {m68000_base_device_ops::m68k_op_sls_8_pi7, 0xffff, 0x53df, { 12,  12,  10,  10,  10,  10,   6}},
34602   {m68000_base_device_ops::m68k_op_sls_8_pd7, 0xffff, 0x53e7, { 14,  14,  11,  11,  11,  11,   6}},
34603   {m68000_base_device_ops::m68k_op_sls_8_aw, 0xffff, 0x53f8, { 16,  16,  10,  10,  10,  10,   6}},
34604   {m68000_base_device_ops::m68k_op_sls_8_al, 0xffff, 0x53f9, { 20,  20,  10,  10,  10,  10,   6}},
34605   {m68000_base_device_ops::m68k_op_trapls_16, 0xffff, 0x53fa, {255, 255,   6,   6,   6,   6,   6}},
34606   {m68000_base_device_ops::m68k_op_trapls_32, 0xffff, 0x53fb, {255, 255,   8,   8,   8,   8,   8}},
34607   {m68000_base_device_ops::m68k_op_trapls, 0xffff, 0x53fc, {255, 255,   4,   4,   4,   4,   4}},
34608   {m68000_base_device_ops::m68k_op_scc_8_pi7, 0xffff, 0x54df, { 12,  12,  10,  10,  10,  10,   6}},
34609   {m68000_base_device_ops::m68k_op_scc_8_pd7, 0xffff, 0x54e7, { 14,  14,  11,  11,  11,  11,   6}},
34610   {m68000_base_device_ops::m68k_op_scc_8_aw, 0xffff, 0x54f8, { 16,  16,  10,  10,  10,  10,   6}},
34611   {m68000_base_device_ops::m68k_op_scc_8_al, 0xffff, 0x54f9, { 20,  20,  10,  10,  10,  10,   6}},
34612   {m68000_base_device_ops::m68k_op_trapcc_16, 0xffff, 0x54fa, {255, 255,   6,   6,   6,   6,   6}},
34613   {m68000_base_device_ops::m68k_op_trapcc_32, 0xffff, 0x54fb, {255, 255,   8,   8,   8,   8,   8}},
34614   {m68000_base_device_ops::m68k_op_trapcc, 0xffff, 0x54fc, {255, 255,   4,   4,   4,   4,   4}},
34615   {m68000_base_device_ops::m68k_op_scs_8_pi7, 0xffff, 0x55df, { 12,  12,  10,  10,  10,  10,   6}},
34616   {m68000_base_device_ops::m68k_op_scs_8_pd7, 0xffff, 0x55e7, { 14,  14,  11,  11,  11,  11,   6}},
34617   {m68000_base_device_ops::m68k_op_scs_8_aw, 0xffff, 0x55f8, { 16,  16,  10,  10,  10,  10,   6}},
34618   {m68000_base_device_ops::m68k_op_scs_8_al, 0xffff, 0x55f9, { 20,  20,  10,  10,  10,  10,   6}},
34619   {m68000_base_device_ops::m68k_op_trapcs_16, 0xffff, 0x55fa, {255, 255,   6,   6,   6,   6,   6}},
34620   {m68000_base_device_ops::m68k_op_trapcs_32, 0xffff, 0x55fb, {255, 255,   8,   8,   8,   8,   8}},
34621   {m68000_base_device_ops::m68k_op_trapcs, 0xffff, 0x55fc, {255, 255,   4,   4,   4,   4,   4}},
34622   {m68000_base_device_ops::m68k_op_sne_8_pi7, 0xffff, 0x56df, { 12,  12,  10,  10,  10,  10,   6}},
34623   {m68000_base_device_ops::m68k_op_sne_8_pd7, 0xffff, 0x56e7, { 14,  14,  11,  11,  11,  11,   6}},
34624   {m68000_base_device_ops::m68k_op_sne_8_aw, 0xffff, 0x56f8, { 16,  16,  10,  10,  10,  10,   6}},
34625   {m68000_base_device_ops::m68k_op_sne_8_al, 0xffff, 0x56f9, { 20,  20,  10,  10,  10,  10,   6}},
34626   {m68000_base_device_ops::m68k_op_trapne_16, 0xffff, 0x56fa, {255, 255,   6,   6,   6,   6,   6}},
34627   {m68000_base_device_ops::m68k_op_trapne_32, 0xffff, 0x56fb, {255, 255,   8,   8,   8,   8,   8}},
34628   {m68000_base_device_ops::m68k_op_trapne, 0xffff, 0x56fc, {255, 255,   4,   4,   4,   4,   4}},
34629   {m68000_base_device_ops::m68k_op_seq_8_pi7, 0xffff, 0x57df, { 12,  12,  10,  10,  10,  10,   6}},
34630   {m68000_base_device_ops::m68k_op_seq_8_pd7, 0xffff, 0x57e7, { 14,  14,  11,  11,  11,  11,   6}},
34631   {m68000_base_device_ops::m68k_op_seq_8_aw, 0xffff, 0x57f8, { 16,  16,  10,  10,  10,  10,   6}},
34632   {m68000_base_device_ops::m68k_op_seq_8_al, 0xffff, 0x57f9, { 20,  20,  10,  10,  10,  10,   6}},
34633   {m68000_base_device_ops::m68k_op_trapeq_16, 0xffff, 0x57fa, {255, 255,   6,   6,   6,   6,   6}},
34634   {m68000_base_device_ops::m68k_op_trapeq_32, 0xffff, 0x57fb, {255, 255,   8,   8,   8,   8,   8}},
34635   {m68000_base_device_ops::m68k_op_trapeq, 0xffff, 0x57fc, {255, 255,   4,   4,   4,   4,   4}},
34636   {m68000_base_device_ops::m68k_op_svc_8_pi7, 0xffff, 0x58df, { 12,  12,  10,  10,  10,  10,   6}},
34637   {m68000_base_device_ops::m68k_op_svc_8_pd7, 0xffff, 0x58e7, { 14,  14,  11,  11,  11,  11,   6}},
34638   {m68000_base_device_ops::m68k_op_svc_8_aw, 0xffff, 0x58f8, { 16,  16,  10,  10,  10,  10,   6}},
34639   {m68000_base_device_ops::m68k_op_svc_8_al, 0xffff, 0x58f9, { 20,  20,  10,  10,  10,  10,   6}},
34640   {m68000_base_device_ops::m68k_op_trapvc_16, 0xffff, 0x58fa, {255, 255,   6,   6,   6,   6,   6}},
34641   {m68000_base_device_ops::m68k_op_trapvc_32, 0xffff, 0x58fb, {255, 255,   8,   8,   8,   8,   8}},
34642   {m68000_base_device_ops::m68k_op_trapvc, 0xffff, 0x58fc, {255, 255,   4,   4,   4,   4,   4}},
34643   {m68000_base_device_ops::m68k_op_svs_8_pi7, 0xffff, 0x59df, { 12,  12,  10,  10,  10,  10,   6}},
34644   {m68000_base_device_ops::m68k_op_svs_8_pd7, 0xffff, 0x59e7, { 14,  14,  11,  11,  11,  11,   6}},
34645   {m68000_base_device_ops::m68k_op_svs_8_aw, 0xffff, 0x59f8, { 16,  16,  10,  10,  10,  10,   6}},
34646   {m68000_base_device_ops::m68k_op_svs_8_al, 0xffff, 0x59f9, { 20,  20,  10,  10,  10,  10,   6}},
34647   {m68000_base_device_ops::m68k_op_trapvs_16, 0xffff, 0x59fa, {255, 255,   6,   6,   6,   6,   6}},
34648   {m68000_base_device_ops::m68k_op_trapvs_32, 0xffff, 0x59fb, {255, 255,   8,   8,   8,   8,   8}},
34649   {m68000_base_device_ops::m68k_op_trapvs, 0xffff, 0x59fc, {255, 255,   4,   4,   4,   4,   4}},
34650   {m68000_base_device_ops::m68k_op_spl_8_pi7, 0xffff, 0x5adf, { 12,  12,  10,  10,  10,  10,   6}},
34651   {m68000_base_device_ops::m68k_op_spl_8_pd7, 0xffff, 0x5ae7, { 14,  14,  11,  11,  11,  11,   6}},
34652   {m68000_base_device_ops::m68k_op_spl_8_aw, 0xffff, 0x5af8, { 16,  16,  10,  10,  10,  10,   6}},
34653   {m68000_base_device_ops::m68k_op_spl_8_al, 0xffff, 0x5af9, { 20,  20,  10,  10,  10,  10,   6}},
34654   {m68000_base_device_ops::m68k_op_trappl_16, 0xffff, 0x5afa, {255, 255,   6,   6,   6,   6,   6}},
34655   {m68000_base_device_ops::m68k_op_trappl_32, 0xffff, 0x5afb, {255, 255,   8,   8,   8,   8,   8}},
34656   {m68000_base_device_ops::m68k_op_trappl, 0xffff, 0x5afc, {255, 255,   4,   4,   4,   4,   4}},
34657   {m68000_base_device_ops::m68k_op_smi_8_pi7, 0xffff, 0x5bdf, { 12,  12,  10,  10,  10,  10,   6}},
34658   {m68000_base_device_ops::m68k_op_smi_8_pd7, 0xffff, 0x5be7, { 14,  14,  11,  11,  11,  11,   6}},
34659   {m68000_base_device_ops::m68k_op_smi_8_aw, 0xffff, 0x5bf8, { 16,  16,  10,  10,  10,  10,   6}},
34660   {m68000_base_device_ops::m68k_op_smi_8_al, 0xffff, 0x5bf9, { 20,  20,  10,  10,  10,  10,   6}},
34661   {m68000_base_device_ops::m68k_op_trapmi_16, 0xffff, 0x5bfa, {255, 255,   6,   6,   6,   6,   6}},
34662   {m68000_base_device_ops::m68k_op_trapmi_32, 0xffff, 0x5bfb, {255, 255,   8,   8,   8,   8,   8}},
34663   {m68000_base_device_ops::m68k_op_trapmi, 0xffff, 0x5bfc, {255, 255,   4,   4,   4,   4,   4}},
34664   {m68000_base_device_ops::m68k_op_sge_8_pi7, 0xffff, 0x5cdf, { 12,  12,  10,  10,  10,  10,   6}},
34665   {m68000_base_device_ops::m68k_op_sge_8_pd7, 0xffff, 0x5ce7, { 14,  14,  11,  11,  11,  11,   6}},
34666   {m68000_base_device_ops::m68k_op_sge_8_aw, 0xffff, 0x5cf8, { 16,  16,  10,  10,  10,  10,   6}},
34667   {m68000_base_device_ops::m68k_op_sge_8_al, 0xffff, 0x5cf9, { 20,  20,  10,  10,  10,  10,   6}},
34668   {m68000_base_device_ops::m68k_op_trapge_16, 0xffff, 0x5cfa, {255, 255,   6,   6,   6,   6,   6}},
34669   {m68000_base_device_ops::m68k_op_trapge_32, 0xffff, 0x5cfb, {255, 255,   8,   8,   8,   8,   8}},
34670   {m68000_base_device_ops::m68k_op_trapge, 0xffff, 0x5cfc, {255, 255,   4,   4,   4,   4,   4}},
34671   {m68000_base_device_ops::m68k_op_slt_8_pi7, 0xffff, 0x5ddf, { 12,  12,  10,  10,  10,  10,   6}},
34672   {m68000_base_device_ops::m68k_op_slt_8_pd7, 0xffff, 0x5de7, { 14,  14,  11,  11,  11,  11,   6}},
34673   {m68000_base_device_ops::m68k_op_slt_8_aw, 0xffff, 0x5df8, { 16,  16,  10,  10,  10,  10,   6}},
34674   {m68000_base_device_ops::m68k_op_slt_8_al, 0xffff, 0x5df9, { 20,  20,  10,  10,  10,  10,   6}},
34675   {m68000_base_device_ops::m68k_op_traplt_16, 0xffff, 0x5dfa, {255, 255,   6,   6,   6,   6,   6}},
34676   {m68000_base_device_ops::m68k_op_traplt_32, 0xffff, 0x5dfb, {255, 255,   8,   8,   8,   8,   8}},
34677   {m68000_base_device_ops::m68k_op_traplt, 0xffff, 0x5dfc, {255, 255,   4,   4,   4,   4,   4}},
34678   {m68000_base_device_ops::m68k_op_sgt_8_pi7, 0xffff, 0x5edf, { 12,  12,  10,  10,  10,  10,   6}},
34679   {m68000_base_device_ops::m68k_op_sgt_8_pd7, 0xffff, 0x5ee7, { 14,  14,  11,  11,  11,  11,   6}},
34680   {m68000_base_device_ops::m68k_op_sgt_8_aw, 0xffff, 0x5ef8, { 16,  16,  10,  10,  10,  10,   6}},
34681   {m68000_base_device_ops::m68k_op_sgt_8_al, 0xffff, 0x5ef9, { 20,  20,  10,  10,  10,  10,   6}},
34682   {m68000_base_device_ops::m68k_op_trapgt_16, 0xffff, 0x5efa, {255, 255,   6,   6,   6,   6,   6}},
34683   {m68000_base_device_ops::m68k_op_trapgt_32, 0xffff, 0x5efb, {255, 255,   8,   8,   8,   8,   8}},
34684   {m68000_base_device_ops::m68k_op_trapgt, 0xffff, 0x5efc, {255, 255,   4,   4,   4,   4,   4}},
34685   {m68000_base_device_ops::m68k_op_sle_8_pi7, 0xffff, 0x5fdf, { 12,  12,  10,  10,  10,  10,   6}},
34686   {m68000_base_device_ops::m68k_op_sle_8_pd7, 0xffff, 0x5fe7, { 14,  14,  11,  11,  11,  11,   6}},
34687   {m68000_base_device_ops::m68k_op_sle_8_aw, 0xffff, 0x5ff8, { 16,  16,  10,  10,  10,  10,   6}},
34688   {m68000_base_device_ops::m68k_op_sle_8_al, 0xffff, 0x5ff9, { 20,  20,  10,  10,  10,  10,   6}},
34689   {m68000_base_device_ops::m68k_op_traple_16, 0xffff, 0x5ffa, {255, 255,   6,   6,   6,   6,   6}},
34690   {m68000_base_device_ops::m68k_op_traple_32, 0xffff, 0x5ffb, {255, 255,   8,   8,   8,   8,   8}},
34691   {m68000_base_device_ops::m68k_op_traple, 0xffff, 0x5ffc, {255, 255,   4,   4,   4,   4,   4}},
34692   {m68000_base_device_ops::m68k_op_bra_16, 0xffff, 0x6000, { 10,  10,  10,  10,  10,  10,  10}},
34693   {m68000_base_device_ops::m68k_op_bra_32, 0xffff, 0x60ff, { 10,  10,  10,  10,  10,  10,  10}},
34694   {m68000_base_device_ops::m68k_op_bsr_16, 0xffff, 0x6100, { 18,  18,   7,   7,   7,   7,   7}},
34695   {m68000_base_device_ops::m68k_op_bsr_32, 0xffff, 0x61ff, { 18,  18,   7,   7,   7,   7,   7}},
34696   {m68000_base_device_ops::m68k_op_bhi_16, 0xffff, 0x6200, { 10,  10,   6,   6,   6,   6,   6}},
34697   {m68000_base_device_ops::m68k_op_bhi_32, 0xffff, 0x62ff, { 10,  10,   6,   6,   6,   6,   6}},
34698   {m68000_base_device_ops::m68k_op_bls_16, 0xffff, 0x6300, { 10,  10,   6,   6,   6,   6,   6}},
34699   {m68000_base_device_ops::m68k_op_bls_32, 0xffff, 0x63ff, { 10,  10,   6,   6,   6,   6,   6}},
34700   {m68000_base_device_ops::m68k_op_bcc_16, 0xffff, 0x6400, { 10,  10,   6,   6,   6,   6,   6}},
34701   {m68000_base_device_ops::m68k_op_bcc_32, 0xffff, 0x64ff, { 10,  10,   6,   6,   6,   6,   6}},
34702   {m68000_base_device_ops::m68k_op_bcs_16, 0xffff, 0x6500, { 10,  10,   6,   6,   6,   6,   6}},
34703   {m68000_base_device_ops::m68k_op_bcs_32, 0xffff, 0x65ff, { 10,  10,   6,   6,   6,   6,   6}},
34704   {m68000_base_device_ops::m68k_op_bne_16, 0xffff, 0x6600, { 10,  10,   6,   6,   6,   6,   6}},
34705   {m68000_base_device_ops::m68k_op_bne_32, 0xffff, 0x66ff, { 10,  10,   6,   6,   6,   6,   6}},
34706   {m68000_base_device_ops::m68k_op_beq_16, 0xffff, 0x6700, { 10,  10,   6,   6,   6,   6,   6}},
34707   {m68000_base_device_ops::m68k_op_beq_32, 0xffff, 0x67ff, { 10,  10,   6,   6,   6,   6,   6}},
34708   {m68000_base_device_ops::m68k_op_bvc_16, 0xffff, 0x6800, { 10,  10,   6,   6,   6,   6,   6}},
34709   {m68000_base_device_ops::m68k_op_bvc_32, 0xffff, 0x68ff, { 10,  10,   6,   6,   6,   6,   6}},
34710   {m68000_base_device_ops::m68k_op_bvs_16, 0xffff, 0x6900, { 10,  10,   6,   6,   6,   6,   6}},
34711   {m68000_base_device_ops::m68k_op_bvs_32, 0xffff, 0x69ff, { 10,  10,   6,   6,   6,   6,   6}},
34712   {m68000_base_device_ops::m68k_op_bpl_16, 0xffff, 0x6a00, { 10,  10,   6,   6,   6,   6,   6}},
34713   {m68000_base_device_ops::m68k_op_bpl_32, 0xffff, 0x6aff, { 10,  10,   6,   6,   6,   6,   6}},
34714   {m68000_base_device_ops::m68k_op_bmi_16, 0xffff, 0x6b00, { 10,  10,   6,   6,   6,   6,   6}},
34715   {m68000_base_device_ops::m68k_op_bmi_32, 0xffff, 0x6bff, { 10,  10,   6,   6,   6,   6,   6}},
34716   {m68000_base_device_ops::m68k_op_bge_16, 0xffff, 0x6c00, { 10,  10,   6,   6,   6,   6,   6}},
34717   {m68000_base_device_ops::m68k_op_bge_32, 0xffff, 0x6cff, { 10,  10,   6,   6,   6,   6,   6}},
34718   {m68000_base_device_ops::m68k_op_blt_16, 0xffff, 0x6d00, { 10,  10,   6,   6,   6,   6,   6}},
34719   {m68000_base_device_ops::m68k_op_blt_32, 0xffff, 0x6dff, { 10,  10,   6,   6,   6,   6,   6}},
34720   {m68000_base_device_ops::m68k_op_bgt_16, 0xffff, 0x6e00, { 10,  10,   6,   6,   6,   6,   6}},
34721   {m68000_base_device_ops::m68k_op_bgt_32, 0xffff, 0x6eff, { 10,  10,   6,   6,   6,   6,   6}},
34722   {m68000_base_device_ops::m68k_op_ble_16, 0xffff, 0x6f00, { 10,  10,   6,   6,   6,   6,   6}},
34723   {m68000_base_device_ops::m68k_op_ble_32, 0xffff, 0x6fff, { 10,  10,   6,   6,   6,   6,   6}},
34724   {m68000_base_device_ops::m68k_op_sbcd_8_mm_axy7, 0xffff, 0x8f0f, { 18,  18,  16,  16,  16,  16,  16}},
34725   {m68000_base_device_ops::m68k_op_pack_16_mm_axy7, 0xffff, 0x8f4f, {255, 255,  13,  13,  13,  13,  13}},
34726   {m68000_base_device_ops::m68k_op_unpk_16_mm_axy7, 0xffff, 0x8f8f, {255, 255,  13,  13,  13,  13,  13}},
34727   {m68000_base_device_ops::m68k_op_subx_8_mm_axy7, 0xffff, 0x9f0f, { 18,  18,  12,  12,  12,  12,  12}},
34728   {m68000_base_device_ops::m68k_op_cmpm_8_axy7, 0xffff, 0xbf0f, { 12,  12,   9,   9,   9,   9,   9}},
34729   {m68000_base_device_ops::m68k_op_abcd_8_mm_axy7, 0xffff, 0xcf0f, { 18,  18,  16,  16,  16,  16,  16}},
34730   {m68000_base_device_ops::m68k_op_addx_8_mm_axy7, 0xffff, 0xdf0f, { 18,  18,  12,  12,  12,  12,  12}},
34731   {m68000_base_device_ops::m68k_op_asr_16_aw, 0xffff, 0xe0f8, { 16,  16,   9,   9,   9,   9,   5}},
34732   {m68000_base_device_ops::m68k_op_asr_16_al, 0xffff, 0xe0f9, { 20,  20,   9,   9,   9,   9,   5}},
34733   {m68000_base_device_ops::m68k_op_asl_16_aw, 0xffff, 0xe1f8, { 16,  16,  10,  10,  10,  10,   6}},
34734   {m68000_base_device_ops::m68k_op_asl_16_al, 0xffff, 0xe1f9, { 20,  20,  10,  10,  10,  10,   6}},
34735   {m68000_base_device_ops::m68k_op_lsr_16_aw, 0xffff, 0xe2f8, { 16,  16,   9,   9,   9,   9,   5}},
34736   {m68000_base_device_ops::m68k_op_lsr_16_al, 0xffff, 0xe2f9, { 20,  20,   9,   9,   9,   9,   5}},
34737   {m68000_base_device_ops::m68k_op_lsl_16_aw, 0xffff, 0xe3f8, { 16,  16,   9,   9,   9,   9,   5}},
34738   {m68000_base_device_ops::m68k_op_lsl_16_al, 0xffff, 0xe3f9, { 20,  20,   9,   9,   9,   9,   5}},
34739   {m68000_base_device_ops::m68k_op_roxr_16_aw, 0xffff, 0xe4f8, { 16,  16,   9,   9,   9,   9,   5}},
34740   {m68000_base_device_ops::m68k_op_roxr_16_al, 0xffff, 0xe4f9, { 20,  20,   9,   9,   9,   9,   5}},
34741   {m68000_base_device_ops::m68k_op_roxl_16_aw, 0xffff, 0xe5f8, { 16,  16,   9,   9,   9,   9,   5}},
34742   {m68000_base_device_ops::m68k_op_roxl_16_al, 0xffff, 0xe5f9, { 20,  20,   9,   9,   9,   9,   5}},
34743   {m68000_base_device_ops::m68k_op_ror_16_aw, 0xffff, 0xe6f8, { 16,  16,  11,  11,  11,  11,   7}},
34744   {m68000_base_device_ops::m68k_op_ror_16_al, 0xffff, 0xe6f9, { 20,  20,  11,  11,  11,  11,   7}},
34745   {m68000_base_device_ops::m68k_op_rol_16_aw, 0xffff, 0xe7f8, { 16,  16,  11,  11,  11,  11,   7}},
34746   {m68000_base_device_ops::m68k_op_rol_16_al, 0xffff, 0xe7f9, { 20,  20,  11,  11,  11,  11,   7}},
34747   {m68000_base_device_ops::m68k_op_bftst_32_aw, 0xffff, 0xe8f8, {255, 255,  17,  17,  17,  17,  13}},
34748   {m68000_base_device_ops::m68k_op_bftst_32_al, 0xffff, 0xe8f9, {255, 255,  17,  17,  17,  17,  13}},
34749   {m68000_base_device_ops::m68k_op_bftst_32_pcdi, 0xffff, 0xe8fa, {255, 255,  18,  18,  18,  18,  13}},
34750   {m68000_base_device_ops::m68k_op_bftst_32_pcix, 0xffff, 0xe8fb, {255, 255,  20,  20,  20,  20,  13}},
34751   {m68000_base_device_ops::m68k_op_bfextu_32_aw, 0xffff, 0xe9f8, {255, 255,  19,  19,  19,  19,  15}},
34752   {m68000_base_device_ops::m68k_op_bfextu_32_al, 0xffff, 0xe9f9, {255, 255,  19,  19,  19,  19,  15}},
34753   {m68000_base_device_ops::m68k_op_bfextu_32_pcdi, 0xffff, 0xe9fa, {255, 255,  20,  20,  20,  20,  15}},
34754   {m68000_base_device_ops::m68k_op_bfextu_32_pcix, 0xffff, 0xe9fb, {255, 255,  22,  22,  22,  22,  15}},
34755   {m68000_base_device_ops::m68k_op_bfchg_32_aw, 0xffff, 0xeaf8, {255, 255,  24,  24,  24,  24,  20}},
34756   {m68000_base_device_ops::m68k_op_bfchg_32_al, 0xffff, 0xeaf9, {255, 255,  24,  24,  24,  24,  20}},
34757   {m68000_base_device_ops::m68k_op_bfexts_32_aw, 0xffff, 0xebf8, {255, 255,  19,  19,  19,  19,  15}},
34758   {m68000_base_device_ops::m68k_op_bfexts_32_al, 0xffff, 0xebf9, {255, 255,  19,  19,  19,  19,  15}},
34759   {m68000_base_device_ops::m68k_op_bfexts_32_pcdi, 0xffff, 0xebfa, {255, 255,  20,  20,  20,  20,  15}},
34760   {m68000_base_device_ops::m68k_op_bfexts_32_pcix, 0xffff, 0xebfb, {255, 255,  22,  22,  22,  22,  15}},
34761   {m68000_base_device_ops::m68k_op_bfclr_32_aw, 0xffff, 0xecf8, {255, 255,  24,  24,  24,  24,  20}},
34762   {m68000_base_device_ops::m68k_op_bfclr_32_al, 0xffff, 0xecf9, {255, 255,  24,  24,  24,  24,  20}},
34763   {m68000_base_device_ops::m68k_op_bfffo_32_aw, 0xffff, 0xedf8, {255, 255,  32,  32,  32,  32,  28}},
34764   {m68000_base_device_ops::m68k_op_bfffo_32_al, 0xffff, 0xedf9, {255, 255,  32,  32,  32,  32,  28}},
34765   {m68000_base_device_ops::m68k_op_bfffo_32_pcdi, 0xffff, 0xedfa, {255, 255,  33,  33,  33,  33,  28}},
34766   {m68000_base_device_ops::m68k_op_bfffo_32_pcix, 0xffff, 0xedfb, {255, 255,  35,  35,  35,  35,  28}},
34767   {m68000_base_device_ops::m68k_op_bfset_32_aw, 0xffff, 0xeef8, {255, 255,  24,  24,  24,  24,  20}},
34768   {m68000_base_device_ops::m68k_op_bfset_32_al, 0xffff, 0xeef9, {255, 255,  24,  24,  24,  24,  20}},
34769   {m68000_base_device_ops::m68k_op_bfins_32_aw, 0xffff, 0xeff8, {255, 255,  21,  21,  21,  21,  17}},
34770   {m68000_base_device_ops::m68k_op_bfins_32_al, 0xffff, 0xeff9, {255, 255,  21,  21,  21,  21,  17}},
34771   {0, 0, 0, {0, 0, 0, 0, 0}}
34772};
34773
34774
34775/* Build the opcode handler jump table */
34776
34777static void m68ki_set_one(unsigned short opcode, const opcode_handler_struct *s)
34778{
34779   for(int i=0; i<NUM_CPU_TYPES; i++)
34780      if(s->cycles[i] != 0xff) {
34781         m68ki_cycles[i][opcode] = s->cycles[i];
34782         m68ki_instruction_jump_table[i][opcode] = s->opcode_handler;
34783      }
34784}
34785
34786void m68ki_build_opcode_table(void)
34787{
34788   const opcode_handler_struct *ostruct;
34789   int i;
34790   int j;
34791   int k;
34792
34793   for(i = 0; i < 0x10000; i++)
34794   {
34795      /* default to illegal */
34796      for(k=0;k<NUM_CPU_TYPES;k++)
34797      {
34798         m68ki_instruction_jump_table[k][i] = m68000_base_device_ops::m68k_op_illegal;
34799         m68ki_cycles[k][i] = 0;
34800      }
34801   }
34802
34803   ostruct = m68k_opcode_handler_table;
34804   while(ostruct->mask != 0xff00)
34805   {
34806      for(i = 0;i < 0x10000;i++)
34807      {
34808         if((i & ostruct->mask) == ostruct->match)
34809            m68ki_set_one(i, ostruct);
34810      }
34811      ostruct++;
34812   }
34813   while(ostruct->mask == 0xff00)
34814   {
34815      for(i = 0;i <= 0xff;i++)
34816         m68ki_set_one(ostruct->match | i, ostruct);
34817      ostruct++;
34818   }
34819   while(ostruct->mask == 0xff20)
34820   {
34821      for(i = 0;i < 4;i++)
34822      {
34823         for(j = 0;j < 32;j++)
34824         {
34825            m68ki_set_one(ostruct->match | (i << 6) | j, ostruct);
34826         }
34827      }
34828      ostruct++;
34829   }
34830   while(ostruct->mask == 0xf1f8)
34831   {
34832      for(i = 0;i < 8;i++)
34833      {
34834         for(j = 0;j < 8;j++)
34835            m68ki_set_one(ostruct->match | (i << 9) | j, ostruct);
34836      }
34837      ostruct++;
34838   }
34839   while(ostruct->mask == 0xffd8)
34840   {
34841      for(i = 0;i < 2;i++)
34842      {
34843         for(j = 0;j < 8;j++)
34844         {
34845            m68ki_set_one(ostruct->match | (i << 5) | j, ostruct);
34846         }
34847      }
34848      ostruct++;
34849   }
34850   while(ostruct->mask == 0xfff0)
34851   {
34852      for(i = 0;i <= 0x0f;i++)
34853         m68ki_set_one(ostruct->match | i, ostruct);
34854      ostruct++;
34855   }
34856   while(ostruct->mask == 0xf1ff)
34857   {
34858      for(i = 0;i <= 0x07;i++)
34859         m68ki_set_one(ostruct->match | (i << 9), ostruct);
34860      ostruct++;
34861   }
34862   while(ostruct->mask == 0xfff8)
34863   {
34864      for(i = 0;i <= 0x07;i++)
34865         m68ki_set_one(ostruct->match | i, ostruct);
34866      ostruct++;
34867   }
34868   while(ostruct->mask == 0xffff)
34869   {
34870      m68ki_set_one(ostruct->match, ostruct);
34871      ostruct++;
34872   }
34873
34874   // if we fell all the way through with a non-zero mask, the opcode table wasn't built properly
34875   if (ostruct->mask != 0)
34876   {
34877      fatalerror("m68ki_build_opcode_table: unhandled opcode mask %x (match %x), m68k core will not function!\n", ostruct->mask, ostruct->match);
34878   }
34879}
34880
34881
34882/* ======================================================================== */
34883/* ============================== END OF FILE ============================= */
34884/* ======================================================================== */
34885
34886
trunk/src/emu/cpu/m68000/m68kops.h
r0r245578
1/* ======================================================================== */
2/* ============================ OPCODE HANDLERS =========================== */
3/* ======================================================================== */
4
5
6#ifdef OPCODE_PROTOTYPES
7
8static void m68k_op_1010(m68000_base_device* mc68kcpu);
9static void m68k_op_1111(m68000_base_device* mc68kcpu);
10static void m68k_op_040fpu0_32(m68000_base_device* mc68kcpu);
11static void m68k_op_040fpu1_32(m68000_base_device* mc68kcpu);
12static void m68k_op_abcd_8_rr(m68000_base_device* mc68kcpu);
13static void m68k_op_abcd_8_mm_ax7(m68000_base_device* mc68kcpu);
14static void m68k_op_abcd_8_mm_ay7(m68000_base_device* mc68kcpu);
15static void m68k_op_abcd_8_mm_axy7(m68000_base_device* mc68kcpu);
16static void m68k_op_abcd_8_mm(m68000_base_device* mc68kcpu);
17static void m68k_op_add_8_er_d(m68000_base_device* mc68kcpu);
18static void m68k_op_add_8_er_ai(m68000_base_device* mc68kcpu);
19static void m68k_op_add_8_er_pi(m68000_base_device* mc68kcpu);
20static void m68k_op_add_8_er_pi7(m68000_base_device* mc68kcpu);
21static void m68k_op_add_8_er_pd(m68000_base_device* mc68kcpu);
22static void m68k_op_add_8_er_pd7(m68000_base_device* mc68kcpu);
23static void m68k_op_add_8_er_di(m68000_base_device* mc68kcpu);
24static void m68k_op_add_8_er_ix(m68000_base_device* mc68kcpu);
25static void m68k_op_add_8_er_aw(m68000_base_device* mc68kcpu);
26static void m68k_op_add_8_er_al(m68000_base_device* mc68kcpu);
27static void m68k_op_add_8_er_pcdi(m68000_base_device* mc68kcpu);
28static void m68k_op_add_8_er_pcix(m68000_base_device* mc68kcpu);
29static void m68k_op_add_8_er_i(m68000_base_device* mc68kcpu);
30static void m68k_op_add_16_er_d(m68000_base_device* mc68kcpu);
31static void m68k_op_add_16_er_a(m68000_base_device* mc68kcpu);
32static void m68k_op_add_16_er_ai(m68000_base_device* mc68kcpu);
33static void m68k_op_add_16_er_pi(m68000_base_device* mc68kcpu);
34static void m68k_op_add_16_er_pd(m68000_base_device* mc68kcpu);
35static void m68k_op_add_16_er_di(m68000_base_device* mc68kcpu);
36static void m68k_op_add_16_er_ix(m68000_base_device* mc68kcpu);
37static void m68k_op_add_16_er_aw(m68000_base_device* mc68kcpu);
38static void m68k_op_add_16_er_al(m68000_base_device* mc68kcpu);
39static void m68k_op_add_16_er_pcdi(m68000_base_device* mc68kcpu);
40static void m68k_op_add_16_er_pcix(m68000_base_device* mc68kcpu);
41static void m68k_op_add_16_er_i(m68000_base_device* mc68kcpu);
42static void m68k_op_add_32_er_d(m68000_base_device* mc68kcpu);
43static void m68k_op_add_32_er_a(m68000_base_device* mc68kcpu);
44static void m68k_op_add_32_er_ai(m68000_base_device* mc68kcpu);
45static void m68k_op_add_32_er_pi(m68000_base_device* mc68kcpu);
46static void m68k_op_add_32_er_pd(m68000_base_device* mc68kcpu);
47static void m68k_op_add_32_er_di(m68000_base_device* mc68kcpu);
48static void m68k_op_add_32_er_ix(m68000_base_device* mc68kcpu);
49static void m68k_op_add_32_er_aw(m68000_base_device* mc68kcpu);
50static void m68k_op_add_32_er_al(m68000_base_device* mc68kcpu);
51static void m68k_op_add_32_er_pcdi(m68000_base_device* mc68kcpu);
52static void m68k_op_add_32_er_pcix(m68000_base_device* mc68kcpu);
53static void m68k_op_add_32_er_i(m68000_base_device* mc68kcpu);
54static void m68k_op_add_8_re_ai(m68000_base_device* mc68kcpu);
55static void m68k_op_add_8_re_pi(m68000_base_device* mc68kcpu);
56static void m68k_op_add_8_re_pi7(m68000_base_device* mc68kcpu);
57static void m68k_op_add_8_re_pd(m68000_base_device* mc68kcpu);
58static void m68k_op_add_8_re_pd7(m68000_base_device* mc68kcpu);
59static void m68k_op_add_8_re_di(m68000_base_device* mc68kcpu);
60static void m68k_op_add_8_re_ix(m68000_base_device* mc68kcpu);
61static void m68k_op_add_8_re_aw(m68000_base_device* mc68kcpu);
62static void m68k_op_add_8_re_al(m68000_base_device* mc68kcpu);
63static void m68k_op_add_16_re_ai(m68000_base_device* mc68kcpu);
64static void m68k_op_add_16_re_pi(m68000_base_device* mc68kcpu);
65static void m68k_op_add_16_re_pd(m68000_base_device* mc68kcpu);
66static void m68k_op_add_16_re_di(m68000_base_device* mc68kcpu);
67static void m68k_op_add_16_re_ix(m68000_base_device* mc68kcpu);
68static void m68k_op_add_16_re_aw(m68000_base_device* mc68kcpu);
69static void m68k_op_add_16_re_al(m68000_base_device* mc68kcpu);
70static void m68k_op_add_32_re_ai(m68000_base_device* mc68kcpu);
71static void m68k_op_add_32_re_pi(m68000_base_device* mc68kcpu);
72static void m68k_op_add_32_re_pd(m68000_base_device* mc68kcpu);
73static void m68k_op_add_32_re_di(m68000_base_device* mc68kcpu);
74static void m68k_op_add_32_re_ix(m68000_base_device* mc68kcpu);
75static void m68k_op_add_32_re_aw(m68000_base_device* mc68kcpu);
76static void m68k_op_add_32_re_al(m68000_base_device* mc68kcpu);
77static void m68k_op_adda_16_d(m68000_base_device* mc68kcpu);
78static void m68k_op_adda_16_a(m68000_base_device* mc68kcpu);
79static void m68k_op_adda_16_ai(m68000_base_device* mc68kcpu);
80static void m68k_op_adda_16_pi(m68000_base_device* mc68kcpu);
81static void m68k_op_adda_16_pd(m68000_base_device* mc68kcpu);
82static void m68k_op_adda_16_di(m68000_base_device* mc68kcpu);
83static void m68k_op_adda_16_ix(m68000_base_device* mc68kcpu);
84static void m68k_op_adda_16_aw(m68000_base_device* mc68kcpu);
85static void m68k_op_adda_16_al(m68000_base_device* mc68kcpu);
86static void m68k_op_adda_16_pcdi(m68000_base_device* mc68kcpu);
87static void m68k_op_adda_16_pcix(m68000_base_device* mc68kcpu);
88static void m68k_op_adda_16_i(m68000_base_device* mc68kcpu);
89static void m68k_op_adda_32_d(m68000_base_device* mc68kcpu);
90static void m68k_op_adda_32_a(m68000_base_device* mc68kcpu);
91static void m68k_op_adda_32_ai(m68000_base_device* mc68kcpu);
92static void m68k_op_adda_32_pi(m68000_base_device* mc68kcpu);
93static void m68k_op_adda_32_pd(m68000_base_device* mc68kcpu);
94static void m68k_op_adda_32_di(m68000_base_device* mc68kcpu);
95static void m68k_op_adda_32_ix(m68000_base_device* mc68kcpu);
96static void m68k_op_adda_32_aw(m68000_base_device* mc68kcpu);
97static void m68k_op_adda_32_al(m68000_base_device* mc68kcpu);
98static void m68k_op_adda_32_pcdi(m68000_base_device* mc68kcpu);
99static void m68k_op_adda_32_pcix(m68000_base_device* mc68kcpu);
100static void m68k_op_adda_32_i(m68000_base_device* mc68kcpu);
101static void m68k_op_addi_8_d(m68000_base_device* mc68kcpu);
102static void m68k_op_addi_8_ai(m68000_base_device* mc68kcpu);
103static void m68k_op_addi_8_pi(m68000_base_device* mc68kcpu);
104static void m68k_op_addi_8_pi7(m68000_base_device* mc68kcpu);
105static void m68k_op_addi_8_pd(m68000_base_device* mc68kcpu);
106static void m68k_op_addi_8_pd7(m68000_base_device* mc68kcpu);
107static void m68k_op_addi_8_di(m68000_base_device* mc68kcpu);
108static void m68k_op_addi_8_ix(m68000_base_device* mc68kcpu);
109static void m68k_op_addi_8_aw(m68000_base_device* mc68kcpu);
110static void m68k_op_addi_8_al(m68000_base_device* mc68kcpu);
111static void m68k_op_addi_16_d(m68000_base_device* mc68kcpu);
112static void m68k_op_addi_16_ai(m68000_base_device* mc68kcpu);
113static void m68k_op_addi_16_pi(m68000_base_device* mc68kcpu);
114static void m68k_op_addi_16_pd(m68000_base_device* mc68kcpu);
115static void m68k_op_addi_16_di(m68000_base_device* mc68kcpu);
116static void m68k_op_addi_16_ix(m68000_base_device* mc68kcpu);
117static void m68k_op_addi_16_aw(m68000_base_device* mc68kcpu);
118static void m68k_op_addi_16_al(m68000_base_device* mc68kcpu);
119static void m68k_op_addi_32_d(m68000_base_device* mc68kcpu);
120static void m68k_op_addi_32_ai(m68000_base_device* mc68kcpu);
121static void m68k_op_addi_32_pi(m68000_base_device* mc68kcpu);
122static void m68k_op_addi_32_pd(m68000_base_device* mc68kcpu);
123static void m68k_op_addi_32_di(m68000_base_device* mc68kcpu);
124static void m68k_op_addi_32_ix(m68000_base_device* mc68kcpu);
125static void m68k_op_addi_32_aw(m68000_base_device* mc68kcpu);
126static void m68k_op_addi_32_al(m68000_base_device* mc68kcpu);
127static void m68k_op_addq_8_d(m68000_base_device* mc68kcpu);
128static void m68k_op_addq_8_ai(m68000_base_device* mc68kcpu);
129static void m68k_op_addq_8_pi(m68000_base_device* mc68kcpu);
130static void m68k_op_addq_8_pi7(m68000_base_device* mc68kcpu);
131static void m68k_op_addq_8_pd(m68000_base_device* mc68kcpu);
132static void m68k_op_addq_8_pd7(m68000_base_device* mc68kcpu);
133static void m68k_op_addq_8_di(m68000_base_device* mc68kcpu);
134static void m68k_op_addq_8_ix(m68000_base_device* mc68kcpu);
135static void m68k_op_addq_8_aw(m68000_base_device* mc68kcpu);
136static void m68k_op_addq_8_al(m68000_base_device* mc68kcpu);
137static void m68k_op_addq_16_d(m68000_base_device* mc68kcpu);
138static void m68k_op_addq_16_a(m68000_base_device* mc68kcpu);
139static void m68k_op_addq_16_ai(m68000_base_device* mc68kcpu);
140static void m68k_op_addq_16_pi(m68000_base_device* mc68kcpu);
141static void m68k_op_addq_16_pd(m68000_base_device* mc68kcpu);
142static void m68k_op_addq_16_di(m68000_base_device* mc68kcpu);
143static void m68k_op_addq_16_ix(m68000_base_device* mc68kcpu);
144static void m68k_op_addq_16_aw(m68000_base_device* mc68kcpu);
145static void m68k_op_addq_16_al(m68000_base_device* mc68kcpu);
146static void m68k_op_addq_32_d(m68000_base_device* mc68kcpu);
147static void m68k_op_addq_32_a(m68000_base_device* mc68kcpu);
148static void m68k_op_addq_32_ai(m68000_base_device* mc68kcpu);
149static void m68k_op_addq_32_pi(m68000_base_device* mc68kcpu);
150static void m68k_op_addq_32_pd(m68000_base_device* mc68kcpu);
151static void m68k_op_addq_32_di(m68000_base_device* mc68kcpu);
152static void m68k_op_addq_32_ix(m68000_base_device* mc68kcpu);
153static void m68k_op_addq_32_aw(m68000_base_device* mc68kcpu);
154static void m68k_op_addq_32_al(m68000_base_device* mc68kcpu);
155static void m68k_op_addx_8_rr(m68000_base_device* mc68kcpu);
156static void m68k_op_addx_16_rr(m68000_base_device* mc68kcpu);
157static void m68k_op_addx_32_rr(m68000_base_device* mc68kcpu);
158static void m68k_op_addx_8_mm_ax7(m68000_base_device* mc68kcpu);
159static void m68k_op_addx_8_mm_ay7(m68000_base_device* mc68kcpu);
160static void m68k_op_addx_8_mm_axy7(m68000_base_device* mc68kcpu);
161static void m68k_op_addx_8_mm(m68000_base_device* mc68kcpu);
162static void m68k_op_addx_16_mm(m68000_base_device* mc68kcpu);
163static void m68k_op_addx_32_mm(m68000_base_device* mc68kcpu);
164static void m68k_op_and_8_er_d(m68000_base_device* mc68kcpu);
165static void m68k_op_and_8_er_ai(m68000_base_device* mc68kcpu);
166static void m68k_op_and_8_er_pi(m68000_base_device* mc68kcpu);
167static void m68k_op_and_8_er_pi7(m68000_base_device* mc68kcpu);
168static void m68k_op_and_8_er_pd(m68000_base_device* mc68kcpu);
169static void m68k_op_and_8_er_pd7(m68000_base_device* mc68kcpu);
170static void m68k_op_and_8_er_di(m68000_base_device* mc68kcpu);
171static void m68k_op_and_8_er_ix(m68000_base_device* mc68kcpu);
172static void m68k_op_and_8_er_aw(m68000_base_device* mc68kcpu);
173static void m68k_op_and_8_er_al(m68000_base_device* mc68kcpu);
174static void m68k_op_and_8_er_pcdi(m68000_base_device* mc68kcpu);
175static void m68k_op_and_8_er_pcix(m68000_base_device* mc68kcpu);
176static void m68k_op_and_8_er_i(m68000_base_device* mc68kcpu);
177static void m68k_op_and_16_er_d(m68000_base_device* mc68kcpu);
178static void m68k_op_and_16_er_ai(m68000_base_device* mc68kcpu);
179static void m68k_op_and_16_er_pi(m68000_base_device* mc68kcpu);
180static void m68k_op_and_16_er_pd(m68000_base_device* mc68kcpu);
181static void m68k_op_and_16_er_di(m68000_base_device* mc68kcpu);
182static void m68k_op_and_16_er_ix(m68000_base_device* mc68kcpu);
183static void m68k_op_and_16_er_aw(m68000_base_device* mc68kcpu);
184static void m68k_op_and_16_er_al(m68000_base_device* mc68kcpu);
185static void m68k_op_and_16_er_pcdi(m68000_base_device* mc68kcpu);
186static void m68k_op_and_16_er_pcix(m68000_base_device* mc68kcpu);
187static void m68k_op_and_16_er_i(m68000_base_device* mc68kcpu);
188static void m68k_op_and_32_er_d(m68000_base_device* mc68kcpu);
189static void m68k_op_and_32_er_ai(m68000_base_device* mc68kcpu);
190static void m68k_op_and_32_er_pi(m68000_base_device* mc68kcpu);
191static void m68k_op_and_32_er_pd(m68000_base_device* mc68kcpu);
192static void m68k_op_and_32_er_di(m68000_base_device* mc68kcpu);
193static void m68k_op_and_32_er_ix(m68000_base_device* mc68kcpu);
194static void m68k_op_and_32_er_aw(m68000_base_device* mc68kcpu);
195static void m68k_op_and_32_er_al(m68000_base_device* mc68kcpu);
196static void m68k_op_and_32_er_pcdi(m68000_base_device* mc68kcpu);
197static void m68k_op_and_32_er_pcix(m68000_base_device* mc68kcpu);
198static void m68k_op_and_32_er_i(m68000_base_device* mc68kcpu);
199static void m68k_op_and_8_re_ai(m68000_base_device* mc68kcpu);
200static void m68k_op_and_8_re_pi(m68000_base_device* mc68kcpu);
201static void m68k_op_and_8_re_pi7(m68000_base_device* mc68kcpu);
202static void m68k_op_and_8_re_pd(m68000_base_device* mc68kcpu);
203static void m68k_op_and_8_re_pd7(m68000_base_device* mc68kcpu);
204static void m68k_op_and_8_re_di(m68000_base_device* mc68kcpu);
205static void m68k_op_and_8_re_ix(m68000_base_device* mc68kcpu);
206static void m68k_op_and_8_re_aw(m68000_base_device* mc68kcpu);
207static void m68k_op_and_8_re_al(m68000_base_device* mc68kcpu);
208static void m68k_op_and_16_re_ai(m68000_base_device* mc68kcpu);
209static void m68k_op_and_16_re_pi(m68000_base_device* mc68kcpu);
210static void m68k_op_and_16_re_pd(m68000_base_device* mc68kcpu);
211static void m68k_op_and_16_re_di(m68000_base_device* mc68kcpu);
212static void m68k_op_and_16_re_ix(m68000_base_device* mc68kcpu);
213static void m68k_op_and_16_re_aw(m68000_base_device* mc68kcpu);
214static void m68k_op_and_16_re_al(m68000_base_device* mc68kcpu);
215static void m68k_op_and_32_re_ai(m68000_base_device* mc68kcpu);
216static void m68k_op_and_32_re_pi(m68000_base_device* mc68kcpu);
217static void m68k_op_and_32_re_pd(m68000_base_device* mc68kcpu);
218static void m68k_op_and_32_re_di(m68000_base_device* mc68kcpu);
219static void m68k_op_and_32_re_ix(m68000_base_device* mc68kcpu);
220static void m68k_op_and_32_re_aw(m68000_base_device* mc68kcpu);
221static void m68k_op_and_32_re_al(m68000_base_device* mc68kcpu);
222static void m68k_op_andi_8_d(m68000_base_device* mc68kcpu);
223static void m68k_op_andi_8_ai(m68000_base_device* mc68kcpu);
224static void m68k_op_andi_8_pi(m68000_base_device* mc68kcpu);
225static void m68k_op_andi_8_pi7(m68000_base_device* mc68kcpu);
226static void m68k_op_andi_8_pd(m68000_base_device* mc68kcpu);
227static void m68k_op_andi_8_pd7(m68000_base_device* mc68kcpu);
228static void m68k_op_andi_8_di(m68000_base_device* mc68kcpu);
229static void m68k_op_andi_8_ix(m68000_base_device* mc68kcpu);
230static void m68k_op_andi_8_aw(m68000_base_device* mc68kcpu);
231static void m68k_op_andi_8_al(m68000_base_device* mc68kcpu);
232static void m68k_op_andi_16_d(m68000_base_device* mc68kcpu);
233static void m68k_op_andi_16_ai(m68000_base_device* mc68kcpu);
234static void m68k_op_andi_16_pi(m68000_base_device* mc68kcpu);
235static void m68k_op_andi_16_pd(m68000_base_device* mc68kcpu);
236static void m68k_op_andi_16_di(m68000_base_device* mc68kcpu);
237static void m68k_op_andi_16_ix(m68000_base_device* mc68kcpu);
238static void m68k_op_andi_16_aw(m68000_base_device* mc68kcpu);
239static void m68k_op_andi_16_al(m68000_base_device* mc68kcpu);
240static void m68k_op_andi_32_d(m68000_base_device* mc68kcpu);
241static void m68k_op_andi_32_ai(m68000_base_device* mc68kcpu);
242static void m68k_op_andi_32_pi(m68000_base_device* mc68kcpu);
243static void m68k_op_andi_32_pd(m68000_base_device* mc68kcpu);
244static void m68k_op_andi_32_di(m68000_base_device* mc68kcpu);
245static void m68k_op_andi_32_ix(m68000_base_device* mc68kcpu);
246static void m68k_op_andi_32_aw(m68000_base_device* mc68kcpu);
247static void m68k_op_andi_32_al(m68000_base_device* mc68kcpu);
248static void m68k_op_andi_16_toc(m68000_base_device* mc68kcpu);
249static void m68k_op_andi_16_tos(m68000_base_device* mc68kcpu);
250static void m68k_op_asr_8_s(m68000_base_device* mc68kcpu);
251static void m68k_op_asr_16_s(m68000_base_device* mc68kcpu);
252static void m68k_op_asr_32_s(m68000_base_device* mc68kcpu);
253static void m68k_op_asr_8_r(m68000_base_device* mc68kcpu);
254static void m68k_op_asr_16_r(m68000_base_device* mc68kcpu);
255static void m68k_op_asr_32_r(m68000_base_device* mc68kcpu);
256static void m68k_op_asr_16_ai(m68000_base_device* mc68kcpu);
257static void m68k_op_asr_16_pi(m68000_base_device* mc68kcpu);
258static void m68k_op_asr_16_pd(m68000_base_device* mc68kcpu);
259static void m68k_op_asr_16_di(m68000_base_device* mc68kcpu);
260static void m68k_op_asr_16_ix(m68000_base_device* mc68kcpu);
261static void m68k_op_asr_16_aw(m68000_base_device* mc68kcpu);
262static void m68k_op_asr_16_al(m68000_base_device* mc68kcpu);
263static void m68k_op_asl_8_s(m68000_base_device* mc68kcpu);
264static void m68k_op_asl_16_s(m68000_base_device* mc68kcpu);
265static void m68k_op_asl_32_s(m68000_base_device* mc68kcpu);
266static void m68k_op_asl_8_r(m68000_base_device* mc68kcpu);
267static void m68k_op_asl_16_r(m68000_base_device* mc68kcpu);
268static void m68k_op_asl_32_r(m68000_base_device* mc68kcpu);
269static void m68k_op_asl_16_ai(m68000_base_device* mc68kcpu);
270static void m68k_op_asl_16_pi(m68000_base_device* mc68kcpu);
271static void m68k_op_asl_16_pd(m68000_base_device* mc68kcpu);
272static void m68k_op_asl_16_di(m68000_base_device* mc68kcpu);
273static void m68k_op_asl_16_ix(m68000_base_device* mc68kcpu);
274static void m68k_op_asl_16_aw(m68000_base_device* mc68kcpu);
275static void m68k_op_asl_16_al(m68000_base_device* mc68kcpu);
276static void m68k_op_bhi_8(m68000_base_device* mc68kcpu);
277static void m68k_op_bls_8(m68000_base_device* mc68kcpu);
278static void m68k_op_bcc_8(m68000_base_device* mc68kcpu);
279static void m68k_op_bcs_8(m68000_base_device* mc68kcpu);
280static void m68k_op_bne_8(m68000_base_device* mc68kcpu);
281static void m68k_op_beq_8(m68000_base_device* mc68kcpu);
282static void m68k_op_bvc_8(m68000_base_device* mc68kcpu);
283static void m68k_op_bvs_8(m68000_base_device* mc68kcpu);
284static void m68k_op_bpl_8(m68000_base_device* mc68kcpu);
285static void m68k_op_bmi_8(m68000_base_device* mc68kcpu);
286static void m68k_op_bge_8(m68000_base_device* mc68kcpu);
287static void m68k_op_blt_8(m68000_base_device* mc68kcpu);
288static void m68k_op_bgt_8(m68000_base_device* mc68kcpu);
289static void m68k_op_ble_8(m68000_base_device* mc68kcpu);
290static void m68k_op_bhi_16(m68000_base_device* mc68kcpu);
291static void m68k_op_bls_16(m68000_base_device* mc68kcpu);
292static void m68k_op_bcc_16(m68000_base_device* mc68kcpu);
293static void m68k_op_bcs_16(m68000_base_device* mc68kcpu);
294static void m68k_op_bne_16(m68000_base_device* mc68kcpu);
295static void m68k_op_beq_16(m68000_base_device* mc68kcpu);
296static void m68k_op_bvc_16(m68000_base_device* mc68kcpu);
297static void m68k_op_bvs_16(m68000_base_device* mc68kcpu);
298static void m68k_op_bpl_16(m68000_base_device* mc68kcpu);
299static void m68k_op_bmi_16(m68000_base_device* mc68kcpu);
300static void m68k_op_bge_16(m68000_base_device* mc68kcpu);
301static void m68k_op_blt_16(m68000_base_device* mc68kcpu);
302static void m68k_op_bgt_16(m68000_base_device* mc68kcpu);
303static void m68k_op_ble_16(m68000_base_device* mc68kcpu);
304static void m68k_op_bhi_32(m68000_base_device* mc68kcpu);
305static void m68k_op_bls_32(m68000_base_device* mc68kcpu);
306static void m68k_op_bcc_32(m68000_base_device* mc68kcpu);
307static void m68k_op_bcs_32(m68000_base_device* mc68kcpu);
308static void m68k_op_bne_32(m68000_base_device* mc68kcpu);
309static void m68k_op_beq_32(m68000_base_device* mc68kcpu);
310static void m68k_op_bvc_32(m68000_base_device* mc68kcpu);
311static void m68k_op_bvs_32(m68000_base_device* mc68kcpu);
312static void m68k_op_bpl_32(m68000_base_device* mc68kcpu);
313static void m68k_op_bmi_32(m68000_base_device* mc68kcpu);
314static void m68k_op_bge_32(m68000_base_device* mc68kcpu);
315static void m68k_op_blt_32(m68000_base_device* mc68kcpu);
316static void m68k_op_bgt_32(m68000_base_device* mc68kcpu);
317static void m68k_op_ble_32(m68000_base_device* mc68kcpu);
318static void m68k_op_bchg_32_r_d(m68000_base_device* mc68kcpu);
319static void m68k_op_bchg_8_r_ai(m68000_base_device* mc68kcpu);
320static void m68k_op_bchg_8_r_pi(m68000_base_device* mc68kcpu);
321static void m68k_op_bchg_8_r_pi7(m68000_base_device* mc68kcpu);
322static void m68k_op_bchg_8_r_pd(m68000_base_device* mc68kcpu);
323static void m68k_op_bchg_8_r_pd7(m68000_base_device* mc68kcpu);
324static void m68k_op_bchg_8_r_di(m68000_base_device* mc68kcpu);
325static void m68k_op_bchg_8_r_ix(m68000_base_device* mc68kcpu);
326static void m68k_op_bchg_8_r_aw(m68000_base_device* mc68kcpu);
327static void m68k_op_bchg_8_r_al(m68000_base_device* mc68kcpu);
328static void m68k_op_bchg_32_s_d(m68000_base_device* mc68kcpu);
329static void m68k_op_bchg_8_s_ai(m68000_base_device* mc68kcpu);
330static void m68k_op_bchg_8_s_pi(m68000_base_device* mc68kcpu);
331static void m68k_op_bchg_8_s_pi7(m68000_base_device* mc68kcpu);
332static void m68k_op_bchg_8_s_pd(m68000_base_device* mc68kcpu);
333static void m68k_op_bchg_8_s_pd7(m68000_base_device* mc68kcpu);
334static void m68k_op_bchg_8_s_di(m68000_base_device* mc68kcpu);
335static void m68k_op_bchg_8_s_ix(m68000_base_device* mc68kcpu);
336static void m68k_op_bchg_8_s_aw(m68000_base_device* mc68kcpu);
337static void m68k_op_bchg_8_s_al(m68000_base_device* mc68kcpu);
338static void m68k_op_bclr_32_r_d(m68000_base_device* mc68kcpu);
339static void m68k_op_bclr_8_r_ai(m68000_base_device* mc68kcpu);
340static void m68k_op_bclr_8_r_pi(m68000_base_device* mc68kcpu);
341static void m68k_op_bclr_8_r_pi7(m68000_base_device* mc68kcpu);
342static void m68k_op_bclr_8_r_pd(m68000_base_device* mc68kcpu);
343static void m68k_op_bclr_8_r_pd7(m68000_base_device* mc68kcpu);
344static void m68k_op_bclr_8_r_di(m68000_base_device* mc68kcpu);
345static void m68k_op_bclr_8_r_ix(m68000_base_device* mc68kcpu);
346static void m68k_op_bclr_8_r_aw(m68000_base_device* mc68kcpu);
347static void m68k_op_bclr_8_r_al(m68000_base_device* mc68kcpu);
348static void m68k_op_bclr_32_s_d(m68000_base_device* mc68kcpu);
349static void m68k_op_bclr_8_s_ai(m68000_base_device* mc68kcpu);
350static void m68k_op_bclr_8_s_pi(m68000_base_device* mc68kcpu);
351static void m68k_op_bclr_8_s_pi7(m68000_base_device* mc68kcpu);
352static void m68k_op_bclr_8_s_pd(m68000_base_device* mc68kcpu);
353static void m68k_op_bclr_8_s_pd7(m68000_base_device* mc68kcpu);
354static void m68k_op_bclr_8_s_di(m68000_base_device* mc68kcpu);
355static void m68k_op_bclr_8_s_ix(m68000_base_device* mc68kcpu);
356static void m68k_op_bclr_8_s_aw(m68000_base_device* mc68kcpu);
357static void m68k_op_bclr_8_s_al(m68000_base_device* mc68kcpu);
358static void m68k_op_bfchg_32_d(m68000_base_device* mc68kcpu);
359static void m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu);
360static void m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu);
361static void m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu);
362static void m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu);
363static void m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu);
364static void m68k_op_bfclr_32_d(m68000_base_device* mc68kcpu);
365static void m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu);
366static void m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu);
367static void m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu);
368static void m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu);
369static void m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu);
370static void m68k_op_bfexts_32_d(m68000_base_device* mc68kcpu);
371static void m68k_op_bfexts_32_ai(m68000_base_device* mc68kcpu);
372static void m68k_op_bfexts_32_di(m68000_base_device* mc68kcpu);
373static void m68k_op_bfexts_32_ix(m68000_base_device* mc68kcpu);
374static void m68k_op_bfexts_32_aw(m68000_base_device* mc68kcpu);
375static void m68k_op_bfexts_32_al(m68000_base_device* mc68kcpu);
376static void m68k_op_bfexts_32_pcdi(m68000_base_device* mc68kcpu);
377static void m68k_op_bfexts_32_pcix(m68000_base_device* mc68kcpu);
378static void m68k_op_bfextu_32_d(m68000_base_device* mc68kcpu);
379static void m68k_op_bfextu_32_ai(m68000_base_device* mc68kcpu);
380static void m68k_op_bfextu_32_di(m68000_base_device* mc68kcpu);
381static void m68k_op_bfextu_32_ix(m68000_base_device* mc68kcpu);
382static void m68k_op_bfextu_32_aw(m68000_base_device* mc68kcpu);
383static void m68k_op_bfextu_32_al(m68000_base_device* mc68kcpu);
384static void m68k_op_bfextu_32_pcdi(m68000_base_device* mc68kcpu);
385static void m68k_op_bfextu_32_pcix(m68000_base_device* mc68kcpu);
386static void m68k_op_bfffo_32_d(m68000_base_device* mc68kcpu);
387static void m68k_op_bfffo_32_ai(m68000_base_device* mc68kcpu);
388static void m68k_op_bfffo_32_di(m68000_base_device* mc68kcpu);
389static void m68k_op_bfffo_32_ix(m68000_base_device* mc68kcpu);
390static void m68k_op_bfffo_32_aw(m68000_base_device* mc68kcpu);
391static void m68k_op_bfffo_32_al(m68000_base_device* mc68kcpu);
392static void m68k_op_bfffo_32_pcdi(m68000_base_device* mc68kcpu);
393static void m68k_op_bfffo_32_pcix(m68000_base_device* mc68kcpu);
394static void m68k_op_bfins_32_d(m68000_base_device* mc68kcpu);
395static void m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu);
396static void m68k_op_bfins_32_di(m68000_base_device* mc68kcpu);
397static void m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu);
398static void m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu);
399static void m68k_op_bfins_32_al(m68000_base_device* mc68kcpu);
400static void m68k_op_bfset_32_d(m68000_base_device* mc68kcpu);
401static void m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu);
402static void m68k_op_bfset_32_di(m68000_base_device* mc68kcpu);
403static void m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu);
404static void m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu);
405static void m68k_op_bfset_32_al(m68000_base_device* mc68kcpu);
406static void m68k_op_bftst_32_d(m68000_base_device* mc68kcpu);
407static void m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu);
408static void m68k_op_bftst_32_di(m68000_base_device* mc68kcpu);
409static void m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu);
410static void m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu);
411static void m68k_op_bftst_32_al(m68000_base_device* mc68kcpu);
412static void m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu);
413static void m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu);
414static void m68k_op_bkpt(m68000_base_device* mc68kcpu);
415static void m68k_op_bra_8(m68000_base_device* mc68kcpu);
416static void m68k_op_bra_16(m68000_base_device* mc68kcpu);
417static void m68k_op_bra_32(m68000_base_device* mc68kcpu);
418static void m68k_op_bset_32_r_d(m68000_base_device* mc68kcpu);
419static void m68k_op_bset_8_r_ai(m68000_base_device* mc68kcpu);
420static void m68k_op_bset_8_r_pi(m68000_base_device* mc68kcpu);
421static void m68k_op_bset_8_r_pi7(m68000_base_device* mc68kcpu);
422static void m68k_op_bset_8_r_pd(m68000_base_device* mc68kcpu);
423static void m68k_op_bset_8_r_pd7(m68000_base_device* mc68kcpu);
424static void m68k_op_bset_8_r_di(m68000_base_device* mc68kcpu);
425static void m68k_op_bset_8_r_ix(m68000_base_device* mc68kcpu);
426static void m68k_op_bset_8_r_aw(m68000_base_device* mc68kcpu);
427static void m68k_op_bset_8_r_al(m68000_base_device* mc68kcpu);
428static void m68k_op_bset_32_s_d(m68000_base_device* mc68kcpu);
429static void m68k_op_bset_8_s_ai(m68000_base_device* mc68kcpu);
430static void m68k_op_bset_8_s_pi(m68000_base_device* mc68kcpu);
431static void m68k_op_bset_8_s_pi7(m68000_base_device* mc68kcpu);
432static void m68k_op_bset_8_s_pd(m68000_base_device* mc68kcpu);
433static void m68k_op_bset_8_s_pd7(m68000_base_device* mc68kcpu);
434static void m68k_op_bset_8_s_di(m68000_base_device* mc68kcpu);
435static void m68k_op_bset_8_s_ix(m68000_base_device* mc68kcpu);
436static void m68k_op_bset_8_s_aw(m68000_base_device* mc68kcpu);
437static void m68k_op_bset_8_s_al(m68000_base_device* mc68kcpu);
438static void m68k_op_bsr_8(m68000_base_device* mc68kcpu);
439static void m68k_op_bsr_16(m68000_base_device* mc68kcpu);
440static void m68k_op_bsr_32(m68000_base_device* mc68kcpu);
441static void m68k_op_btst_32_r_d(m68000_base_device* mc68kcpu);
442static void m68k_op_btst_8_r_ai(m68000_base_device* mc68kcpu);
443static void m68k_op_btst_8_r_pi(m68000_base_device* mc68kcpu);
444static void m68k_op_btst_8_r_pi7(m68000_base_device* mc68kcpu);
445static void m68k_op_btst_8_r_pd(m68000_base_device* mc68kcpu);
446static void m68k_op_btst_8_r_pd7(m68000_base_device* mc68kcpu);
447static void m68k_op_btst_8_r_di(m68000_base_device* mc68kcpu);
448static void m68k_op_btst_8_r_ix(m68000_base_device* mc68kcpu);
449static void m68k_op_btst_8_r_aw(m68000_base_device* mc68kcpu);
450static void m68k_op_btst_8_r_al(m68000_base_device* mc68kcpu);
451static void m68k_op_btst_8_r_pcdi(m68000_base_device* mc68kcpu);
452static void m68k_op_btst_8_r_pcix(m68000_base_device* mc68kcpu);
453static void m68k_op_btst_8_r_i(m68000_base_device* mc68kcpu);
454static void m68k_op_btst_32_s_d(m68000_base_device* mc68kcpu);
455static void m68k_op_btst_8_s_ai(m68000_base_device* mc68kcpu);
456static void m68k_op_btst_8_s_pi(m68000_base_device* mc68kcpu);
457static void m68k_op_btst_8_s_pi7(m68000_base_device* mc68kcpu);
458static void m68k_op_btst_8_s_pd(m68000_base_device* mc68kcpu);
459static void m68k_op_btst_8_s_pd7(m68000_base_device* mc68kcpu);
460static void m68k_op_btst_8_s_di(m68000_base_device* mc68kcpu);
461static void m68k_op_btst_8_s_ix(m68000_base_device* mc68kcpu);
462static void m68k_op_btst_8_s_aw(m68000_base_device* mc68kcpu);
463static void m68k_op_btst_8_s_al(m68000_base_device* mc68kcpu);
464static void m68k_op_btst_8_s_pcdi(m68000_base_device* mc68kcpu);
465static void m68k_op_btst_8_s_pcix(m68000_base_device* mc68kcpu);
466static void m68k_op_callm_32_ai(m68000_base_device* mc68kcpu);
467static void m68k_op_callm_32_di(m68000_base_device* mc68kcpu);
468static void m68k_op_callm_32_ix(m68000_base_device* mc68kcpu);
469static void m68k_op_callm_32_aw(m68000_base_device* mc68kcpu);
470static void m68k_op_callm_32_al(m68000_base_device* mc68kcpu);
471static void m68k_op_callm_32_pcdi(m68000_base_device* mc68kcpu);
472static void m68k_op_callm_32_pcix(m68000_base_device* mc68kcpu);
473static void m68k_op_cas_8_ai(m68000_base_device* mc68kcpu);
474static void m68k_op_cas_8_pi(m68000_base_device* mc68kcpu);
475static void m68k_op_cas_8_pi7(m68000_base_device* mc68kcpu);
476static void m68k_op_cas_8_pd(m68000_base_device* mc68kcpu);
477static void m68k_op_cas_8_pd7(m68000_base_device* mc68kcpu);
478static void m68k_op_cas_8_di(m68000_base_device* mc68kcpu);
479static void m68k_op_cas_8_ix(m68000_base_device* mc68kcpu);
480static void m68k_op_cas_8_aw(m68000_base_device* mc68kcpu);
481static void m68k_op_cas_8_al(m68000_base_device* mc68kcpu);
482static void m68k_op_cas_16_ai(m68000_base_device* mc68kcpu);
483static void m68k_op_cas_16_pi(m68000_base_device* mc68kcpu);
484static void m68k_op_cas_16_pd(m68000_base_device* mc68kcpu);
485static void m68k_op_cas_16_di(m68000_base_device* mc68kcpu);
486static void m68k_op_cas_16_ix(m68000_base_device* mc68kcpu);
487static void m68k_op_cas_16_aw(m68000_base_device* mc68kcpu);
488static void m68k_op_cas_16_al(m68000_base_device* mc68kcpu);
489static void m68k_op_cas_32_ai(m68000_base_device* mc68kcpu);
490static void m68k_op_cas_32_pi(m68000_base_device* mc68kcpu);
491static void m68k_op_cas_32_pd(m68000_base_device* mc68kcpu);
492static void m68k_op_cas_32_di(m68000_base_device* mc68kcpu);
493static void m68k_op_cas_32_ix(m68000_base_device* mc68kcpu);
494static void m68k_op_cas_32_aw(m68000_base_device* mc68kcpu);
495static void m68k_op_cas_32_al(m68000_base_device* mc68kcpu);
496static void m68k_op_cas2_16(m68000_base_device* mc68kcpu);
497static void m68k_op_cas2_32(m68000_base_device* mc68kcpu);
498static void m68k_op_chk_16_d(m68000_base_device* mc68kcpu);
499static void m68k_op_chk_16_ai(m68000_base_device* mc68kcpu);
500static void m68k_op_chk_16_pi(m68000_base_device* mc68kcpu);
501static void m68k_op_chk_16_pd(m68000_base_device* mc68kcpu);
502static void m68k_op_chk_16_di(m68000_base_device* mc68kcpu);
503static void m68k_op_chk_16_ix(m68000_base_device* mc68kcpu);
504static void m68k_op_chk_16_aw(m68000_base_device* mc68kcpu);
505static void m68k_op_chk_16_al(m68000_base_device* mc68kcpu);
506static void m68k_op_chk_16_pcdi(m68000_base_device* mc68kcpu);
507static void m68k_op_chk_16_pcix(m68000_base_device* mc68kcpu);
508static void m68k_op_chk_16_i(m68000_base_device* mc68kcpu);
509static void m68k_op_chk_32_d(m68000_base_device* mc68kcpu);
510static void m68k_op_chk_32_ai(m68000_base_device* mc68kcpu);
511static void m68k_op_chk_32_pi(m68000_base_device* mc68kcpu);
512static void m68k_op_chk_32_pd(m68000_base_device* mc68kcpu);
513static void m68k_op_chk_32_di(m68000_base_device* mc68kcpu);
514static void m68k_op_chk_32_ix(m68000_base_device* mc68kcpu);
515static void m68k_op_chk_32_aw(m68000_base_device* mc68kcpu);
516static void m68k_op_chk_32_al(m68000_base_device* mc68kcpu);
517static void m68k_op_chk_32_pcdi(m68000_base_device* mc68kcpu);
518static void m68k_op_chk_32_pcix(m68000_base_device* mc68kcpu);
519static void m68k_op_chk_32_i(m68000_base_device* mc68kcpu);
520static void m68k_op_chk2cmp2_8_pcdi(m68000_base_device* mc68kcpu);
521static void m68k_op_chk2cmp2_8_pcix(m68000_base_device* mc68kcpu);
522static void m68k_op_chk2cmp2_8_ai(m68000_base_device* mc68kcpu);
523static void m68k_op_chk2cmp2_8_di(m68000_base_device* mc68kcpu);
524static void m68k_op_chk2cmp2_8_ix(m68000_base_device* mc68kcpu);
525static void m68k_op_chk2cmp2_8_aw(m68000_base_device* mc68kcpu);
526static void m68k_op_chk2cmp2_8_al(m68000_base_device* mc68kcpu);
527static void m68k_op_chk2cmp2_16_pcdi(m68000_base_device* mc68kcpu);
528static void m68k_op_chk2cmp2_16_pcix(m68000_base_device* mc68kcpu);
529static void m68k_op_chk2cmp2_16_ai(m68000_base_device* mc68kcpu);
530static void m68k_op_chk2cmp2_16_di(m68000_base_device* mc68kcpu);
531static void m68k_op_chk2cmp2_16_ix(m68000_base_device* mc68kcpu);
532static void m68k_op_chk2cmp2_16_aw(m68000_base_device* mc68kcpu);
533static void m68k_op_chk2cmp2_16_al(m68000_base_device* mc68kcpu);
534static void m68k_op_chk2cmp2_32_pcdi(m68000_base_device* mc68kcpu);
535static void m68k_op_chk2cmp2_32_pcix(m68000_base_device* mc68kcpu);
536static void m68k_op_chk2cmp2_32_ai(m68000_base_device* mc68kcpu);
537static void m68k_op_chk2cmp2_32_di(m68000_base_device* mc68kcpu);
538static void m68k_op_chk2cmp2_32_ix(m68000_base_device* mc68kcpu);
539static void m68k_op_chk2cmp2_32_aw(m68000_base_device* mc68kcpu);
540static void m68k_op_chk2cmp2_32_al(m68000_base_device* mc68kcpu);
541static void m68k_op_clr_8_d(m68000_base_device* mc68kcpu);
542static void m68k_op_clr_8_ai(m68000_base_device* mc68kcpu);
543static void m68k_op_clr_8_pi(m68000_base_device* mc68kcpu);
544static void m68k_op_clr_8_pi7(m68000_base_device* mc68kcpu);
545static void m68k_op_clr_8_pd(m68000_base_device* mc68kcpu);
546static void m68k_op_clr_8_pd7(m68000_base_device* mc68kcpu);
547static void m68k_op_clr_8_di(m68000_base_device* mc68kcpu);
548static void m68k_op_clr_8_ix(m68000_base_device* mc68kcpu);
549static void m68k_op_clr_8_aw(m68000_base_device* mc68kcpu);
550static void m68k_op_clr_8_al(m68000_base_device* mc68kcpu);
551static void m68k_op_clr_16_d(m68000_base_device* mc68kcpu);
552static void m68k_op_clr_16_ai(m68000_base_device* mc68kcpu);
553static void m68k_op_clr_16_pi(m68000_base_device* mc68kcpu);
554static void m68k_op_clr_16_pd(m68000_base_device* mc68kcpu);
555static void m68k_op_clr_16_di(m68000_base_device* mc68kcpu);
556static void m68k_op_clr_16_ix(m68000_base_device* mc68kcpu);
557static void m68k_op_clr_16_aw(m68000_base_device* mc68kcpu);
558static void m68k_op_clr_16_al(m68000_base_device* mc68kcpu);
559static void m68k_op_clr_32_d(m68000_base_device* mc68kcpu);
560static void m68k_op_clr_32_ai(m68000_base_device* mc68kcpu);
561static void m68k_op_clr_32_pi(m68000_base_device* mc68kcpu);
562static void m68k_op_clr_32_pd(m68000_base_device* mc68kcpu);
563static void m68k_op_clr_32_di(m68000_base_device* mc68kcpu);
564static void m68k_op_clr_32_ix(m68000_base_device* mc68kcpu);
565static void m68k_op_clr_32_aw(m68000_base_device* mc68kcpu);
566static void m68k_op_clr_32_al(m68000_base_device* mc68kcpu);
567static void m68k_op_cmp_8_d(m68000_base_device* mc68kcpu);
568static void m68k_op_cmp_8_ai(m68000_base_device* mc68kcpu);
569static void m68k_op_cmp_8_pi(m68000_base_device* mc68kcpu);
570static void m68k_op_cmp_8_pi7(m68000_base_device* mc68kcpu);
571static void m68k_op_cmp_8_pd(m68000_base_device* mc68kcpu);
572static void m68k_op_cmp_8_pd7(m68000_base_device* mc68kcpu);
573static void m68k_op_cmp_8_di(m68000_base_device* mc68kcpu);
574static void m68k_op_cmp_8_ix(m68000_base_device* mc68kcpu);
575static void m68k_op_cmp_8_aw(m68000_base_device* mc68kcpu);
576static void m68k_op_cmp_8_al(m68000_base_device* mc68kcpu);
577static void m68k_op_cmp_8_pcdi(m68000_base_device* mc68kcpu);
578static void m68k_op_cmp_8_pcix(m68000_base_device* mc68kcpu);
579static void m68k_op_cmp_8_i(m68000_base_device* mc68kcpu);
580static void m68k_op_cmp_16_d(m68000_base_device* mc68kcpu);
581static void m68k_op_cmp_16_a(m68000_base_device* mc68kcpu);
582static void m68k_op_cmp_16_ai(m68000_base_device* mc68kcpu);
583static void m68k_op_cmp_16_pi(m68000_base_device* mc68kcpu);
584static void m68k_op_cmp_16_pd(m68000_base_device* mc68kcpu);
585static void m68k_op_cmp_16_di(m68000_base_device* mc68kcpu);
586static void m68k_op_cmp_16_ix(m68000_base_device* mc68kcpu);
587static void m68k_op_cmp_16_aw(m68000_base_device* mc68kcpu);
588static void m68k_op_cmp_16_al(m68000_base_device* mc68kcpu);
589static void m68k_op_cmp_16_pcdi(m68000_base_device* mc68kcpu);
590static void m68k_op_cmp_16_pcix(m68000_base_device* mc68kcpu);
591static void m68k_op_cmp_16_i(m68000_base_device* mc68kcpu);
592static void m68k_op_cmp_32_d(m68000_base_device* mc68kcpu);
593static void m68k_op_cmp_32_a(m68000_base_device* mc68kcpu);
594static void m68k_op_cmp_32_ai(m68000_base_device* mc68kcpu);
595static void m68k_op_cmp_32_pi(m68000_base_device* mc68kcpu);
596static void m68k_op_cmp_32_pd(m68000_base_device* mc68kcpu);
597static void m68k_op_cmp_32_di(m68000_base_device* mc68kcpu);
598static void m68k_op_cmp_32_ix(m68000_base_device* mc68kcpu);
599static void m68k_op_cmp_32_aw(m68000_base_device* mc68kcpu);
600static void m68k_op_cmp_32_al(m68000_base_device* mc68kcpu);
601static void m68k_op_cmp_32_pcdi(m68000_base_device* mc68kcpu);
602static void m68k_op_cmp_32_pcix(m68000_base_device* mc68kcpu);
603static void m68k_op_cmp_32_i(m68000_base_device* mc68kcpu);
604static void m68k_op_cmpa_16_d(m68000_base_device* mc68kcpu);
605static void m68k_op_cmpa_16_a(m68000_base_device* mc68kcpu);
606static void m68k_op_cmpa_16_ai(m68000_base_device* mc68kcpu);
607static void m68k_op_cmpa_16_pi(m68000_base_device* mc68kcpu);
608static void m68k_op_cmpa_16_pd(m68000_base_device* mc68kcpu);
609static void m68k_op_cmpa_16_di(m68000_base_device* mc68kcpu);
610static void m68k_op_cmpa_16_ix(m68000_base_device* mc68kcpu);
611static void m68k_op_cmpa_16_aw(m68000_base_device* mc68kcpu);
612static void m68k_op_cmpa_16_al(m68000_base_device* mc68kcpu);
613static void m68k_op_cmpa_16_pcdi(m68000_base_device* mc68kcpu);
614static void m68k_op_cmpa_16_pcix(m68000_base_device* mc68kcpu);
615static void m68k_op_cmpa_16_i(m68000_base_device* mc68kcpu);
616static void m68k_op_cmpa_32_d(m68000_base_device* mc68kcpu);
617static void m68k_op_cmpa_32_a(m68000_base_device* mc68kcpu);
618static void m68k_op_cmpa_32_ai(m68000_base_device* mc68kcpu);
619static void m68k_op_cmpa_32_pi(m68000_base_device* mc68kcpu);
620static void m68k_op_cmpa_32_pd(m68000_base_device* mc68kcpu);
621static void m68k_op_cmpa_32_di(m68000_base_device* mc68kcpu);
622static void m68k_op_cmpa_32_ix(m68000_base_device* mc68kcpu);
623static void m68k_op_cmpa_32_aw(m68000_base_device* mc68kcpu);
624static void m68k_op_cmpa_32_al(m68000_base_device* mc68kcpu);
625static void m68k_op_cmpa_32_pcdi(m68000_base_device* mc68kcpu);
626static void m68k_op_cmpa_32_pcix(m68000_base_device* mc68kcpu);
627static void m68k_op_cmpa_32_i(m68000_base_device* mc68kcpu);
628static void m68k_op_cmpi_8_d(m68000_base_device* mc68kcpu);
629static void m68k_op_cmpi_8_ai(m68000_base_device* mc68kcpu);
630static void m68k_op_cmpi_8_pi(m68000_base_device* mc68kcpu);
631static void m68k_op_cmpi_8_pi7(m68000_base_device* mc68kcpu);
632static void m68k_op_cmpi_8_pd(m68000_base_device* mc68kcpu);
633static void m68k_op_cmpi_8_pd7(m68000_base_device* mc68kcpu);
634static void m68k_op_cmpi_8_di(m68000_base_device* mc68kcpu);
635static void m68k_op_cmpi_8_ix(m68000_base_device* mc68kcpu);
636static void m68k_op_cmpi_8_aw(m68000_base_device* mc68kcpu);
637static void m68k_op_cmpi_8_al(m68000_base_device* mc68kcpu);
638static void m68k_op_cmpi_8_pcdi(m68000_base_device* mc68kcpu);
639static void m68k_op_cmpi_8_pcix(m68000_base_device* mc68kcpu);
640static void m68k_op_cmpi_16_d(m68000_base_device* mc68kcpu);
641static void m68k_op_cmpi_16_ai(m68000_base_device* mc68kcpu);
642static void m68k_op_cmpi_16_pi(m68000_base_device* mc68kcpu);
643static void m68k_op_cmpi_16_pd(m68000_base_device* mc68kcpu);
644static void m68k_op_cmpi_16_di(m68000_base_device* mc68kcpu);
645static void m68k_op_cmpi_16_ix(m68000_base_device* mc68kcpu);
646static void m68k_op_cmpi_16_aw(m68000_base_device* mc68kcpu);
647static void m68k_op_cmpi_16_al(m68000_base_device* mc68kcpu);
648static void m68k_op_cmpi_16_pcdi(m68000_base_device* mc68kcpu);
649static void m68k_op_cmpi_16_pcix(m68000_base_device* mc68kcpu);
650static void m68k_op_cmpi_32_d(m68000_base_device* mc68kcpu);
651static void m68k_op_cmpi_32_ai(m68000_base_device* mc68kcpu);
652static void m68k_op_cmpi_32_pi(m68000_base_device* mc68kcpu);
653static void m68k_op_cmpi_32_pd(m68000_base_device* mc68kcpu);
654static void m68k_op_cmpi_32_di(m68000_base_device* mc68kcpu);
655static void m68k_op_cmpi_32_ix(m68000_base_device* mc68kcpu);
656static void m68k_op_cmpi_32_aw(m68000_base_device* mc68kcpu);
657static void m68k_op_cmpi_32_al(m68000_base_device* mc68kcpu);
658static void m68k_op_cmpi_32_pcdi(m68000_base_device* mc68kcpu);
659static void m68k_op_cmpi_32_pcix(m68000_base_device* mc68kcpu);
660static void m68k_op_cmpm_8_ax7(m68000_base_device* mc68kcpu);
661static void m68k_op_cmpm_8_ay7(m68000_base_device* mc68kcpu);
662static void m68k_op_cmpm_8_axy7(m68000_base_device* mc68kcpu);
663static void m68k_op_cmpm_8(m68000_base_device* mc68kcpu);
664static void m68k_op_cmpm_16(m68000_base_device* mc68kcpu);
665static void m68k_op_cmpm_32(m68000_base_device* mc68kcpu);
666static void m68k_op_cpbcc_32(m68000_base_device* mc68kcpu);
667static void m68k_op_cpdbcc_32(m68000_base_device* mc68kcpu);
668static void m68k_op_cpgen_32(m68000_base_device* mc68kcpu);
669static void m68k_op_cpscc_32(m68000_base_device* mc68kcpu);
670static void m68k_op_cptrapcc_32(m68000_base_device* mc68kcpu);
671static void m68k_op_ftrapcc_32(m68000_base_device* mc68kcpu);
672static void m68k_op_dbt_16(m68000_base_device* mc68kcpu);
673static void m68k_op_dbf_16(m68000_base_device* mc68kcpu);
674static void m68k_op_dbhi_16(m68000_base_device* mc68kcpu);
675static void m68k_op_dbls_16(m68000_base_device* mc68kcpu);
676static void m68k_op_dbcc_16(m68000_base_device* mc68kcpu);
677static void m68k_op_dbcs_16(m68000_base_device* mc68kcpu);
678static void m68k_op_dbne_16(m68000_base_device* mc68kcpu);
679static void m68k_op_dbeq_16(m68000_base_device* mc68kcpu);
680static void m68k_op_dbvc_16(m68000_base_device* mc68kcpu);
681static void m68k_op_dbvs_16(m68000_base_device* mc68kcpu);
682static void m68k_op_dbpl_16(m68000_base_device* mc68kcpu);
683static void m68k_op_dbmi_16(m68000_base_device* mc68kcpu);
684static void m68k_op_dbge_16(m68000_base_device* mc68kcpu);
685static void m68k_op_dblt_16(m68000_base_device* mc68kcpu);
686static void m68k_op_dbgt_16(m68000_base_device* mc68kcpu);
687static void m68k_op_dble_16(m68000_base_device* mc68kcpu);
688static void m68k_op_divs_16_d(m68000_base_device* mc68kcpu);
689static void m68k_op_divs_16_ai(m68000_base_device* mc68kcpu);
690static void m68k_op_divs_16_pi(m68000_base_device* mc68kcpu);
691static void m68k_op_divs_16_pd(m68000_base_device* mc68kcpu);
692static void m68k_op_divs_16_di(m68000_base_device* mc68kcpu);
693static void m68k_op_divs_16_ix(m68000_base_device* mc68kcpu);
694static void m68k_op_divs_16_aw(m68000_base_device* mc68kcpu);
695static void m68k_op_divs_16_al(m68000_base_device* mc68kcpu);
696static void m68k_op_divs_16_pcdi(m68000_base_device* mc68kcpu);
697static void m68k_op_divs_16_pcix(m68000_base_device* mc68kcpu);
698static void m68k_op_divs_16_i(m68000_base_device* mc68kcpu);
699static void m68k_op_divu_16_d(m68000_base_device* mc68kcpu);
700static void m68k_op_divu_16_ai(m68000_base_device* mc68kcpu);
701static void m68k_op_divu_16_pi(m68000_base_device* mc68kcpu);
702static void m68k_op_divu_16_pd(m68000_base_device* mc68kcpu);
703static void m68k_op_divu_16_di(m68000_base_device* mc68kcpu);
704static void m68k_op_divu_16_ix(m68000_base_device* mc68kcpu);
705static void m68k_op_divu_16_aw(m68000_base_device* mc68kcpu);
706static void m68k_op_divu_16_al(m68000_base_device* mc68kcpu);
707static void m68k_op_divu_16_pcdi(m68000_base_device* mc68kcpu);
708static void m68k_op_divu_16_pcix(m68000_base_device* mc68kcpu);
709static void m68k_op_divu_16_i(m68000_base_device* mc68kcpu);
710static void m68k_op_divl_32_d(m68000_base_device* mc68kcpu);
711static void m68k_op_divl_32_ai(m68000_base_device* mc68kcpu);
712static void m68k_op_divl_32_pi(m68000_base_device* mc68kcpu);
713static void m68k_op_divl_32_pd(m68000_base_device* mc68kcpu);
714static void m68k_op_divl_32_di(m68000_base_device* mc68kcpu);
715static void m68k_op_divl_32_ix(m68000_base_device* mc68kcpu);
716static void m68k_op_divl_32_aw(m68000_base_device* mc68kcpu);
717static void m68k_op_divl_32_al(m68000_base_device* mc68kcpu);
718static void m68k_op_divl_32_pcdi(m68000_base_device* mc68kcpu);
719static void m68k_op_divl_32_pcix(m68000_base_device* mc68kcpu);
720static void m68k_op_divl_32_i(m68000_base_device* mc68kcpu);
721static void m68k_op_eor_8_d(m68000_base_device* mc68kcpu);
722static void m68k_op_eor_8_ai(m68000_base_device* mc68kcpu);
723static void m68k_op_eor_8_pi(m68000_base_device* mc68kcpu);
724static void m68k_op_eor_8_pi7(m68000_base_device* mc68kcpu);
725static void m68k_op_eor_8_pd(m68000_base_device* mc68kcpu);
726static void m68k_op_eor_8_pd7(m68000_base_device* mc68kcpu);
727static void m68k_op_eor_8_di(m68000_base_device* mc68kcpu);
728static void m68k_op_eor_8_ix(m68000_base_device* mc68kcpu);
729static void m68k_op_eor_8_aw(m68000_base_device* mc68kcpu);
730static void m68k_op_eor_8_al(m68000_base_device* mc68kcpu);
731static void m68k_op_eor_16_d(m68000_base_device* mc68kcpu);
732static void m68k_op_eor_16_ai(m68000_base_device* mc68kcpu);
733static void m68k_op_eor_16_pi(m68000_base_device* mc68kcpu);
734static void m68k_op_eor_16_pd(m68000_base_device* mc68kcpu);
735static void m68k_op_eor_16_di(m68000_base_device* mc68kcpu);
736static void m68k_op_eor_16_ix(m68000_base_device* mc68kcpu);
737static void m68k_op_eor_16_aw(m68000_base_device* mc68kcpu);
738static void m68k_op_eor_16_al(m68000_base_device* mc68kcpu);
739static void m68k_op_eor_32_d(m68000_base_device* mc68kcpu);
740static void m68k_op_eor_32_ai(m68000_base_device* mc68kcpu);
741static void m68k_op_eor_32_pi(m68000_base_device* mc68kcpu);
742static void m68k_op_eor_32_pd(m68000_base_device* mc68kcpu);
743static void m68k_op_eor_32_di(m68000_base_device* mc68kcpu);
744static void m68k_op_eor_32_ix(m68000_base_device* mc68kcpu);
745static void m68k_op_eor_32_aw(m68000_base_device* mc68kcpu);
746static void m68k_op_eor_32_al(m68000_base_device* mc68kcpu);
747static void m68k_op_eori_8_d(m68000_base_device* mc68kcpu);
748static void m68k_op_eori_8_ai(m68000_base_device* mc68kcpu);
749static void m68k_op_eori_8_pi(m68000_base_device* mc68kcpu);
750static void m68k_op_eori_8_pi7(m68000_base_device* mc68kcpu);
751static void m68k_op_eori_8_pd(m68000_base_device* mc68kcpu);
752static void m68k_op_eori_8_pd7(m68000_base_device* mc68kcpu);
753static void m68k_op_eori_8_di(m68000_base_device* mc68kcpu);
754static void m68k_op_eori_8_ix(m68000_base_device* mc68kcpu);
755static void m68k_op_eori_8_aw(m68000_base_device* mc68kcpu);
756static void m68k_op_eori_8_al(m68000_base_device* mc68kcpu);
757static void m68k_op_eori_16_d(m68000_base_device* mc68kcpu);
758static void m68k_op_eori_16_ai(m68000_base_device* mc68kcpu);
759static void m68k_op_eori_16_pi(m68000_base_device* mc68kcpu);
760static void m68k_op_eori_16_pd(m68000_base_device* mc68kcpu);
761static void m68k_op_eori_16_di(m68000_base_device* mc68kcpu);
762static void m68k_op_eori_16_ix(m68000_base_device* mc68kcpu);
763static void m68k_op_eori_16_aw(m68000_base_device* mc68kcpu);
764static void m68k_op_eori_16_al(m68000_base_device* mc68kcpu);
765static void m68k_op_eori_32_d(m68000_base_device* mc68kcpu);
766static void m68k_op_eori_32_ai(m68000_base_device* mc68kcpu);
767static void m68k_op_eori_32_pi(m68000_base_device* mc68kcpu);
768static void m68k_op_eori_32_pd(m68000_base_device* mc68kcpu);
769static void m68k_op_eori_32_di(m68000_base_device* mc68kcpu);
770static void m68k_op_eori_32_ix(m68000_base_device* mc68kcpu);
771static void m68k_op_eori_32_aw(m68000_base_device* mc68kcpu);
772static void m68k_op_eori_32_al(m68000_base_device* mc68kcpu);
773static void m68k_op_eori_16_toc(m68000_base_device* mc68kcpu);
774static void m68k_op_eori_16_tos(m68000_base_device* mc68kcpu);
775static void m68k_op_exg_32_dd(m68000_base_device* mc68kcpu);
776static void m68k_op_exg_32_aa(m68000_base_device* mc68kcpu);
777static void m68k_op_exg_32_da(m68000_base_device* mc68kcpu);
778static void m68k_op_ext_16(m68000_base_device* mc68kcpu);
779static void m68k_op_ext_32(m68000_base_device* mc68kcpu);
780static void m68k_op_extb_32(m68000_base_device* mc68kcpu);
781static void m68k_op_illegal(m68000_base_device* mc68kcpu);
782static void m68k_op_jmp_32_ai(m68000_base_device* mc68kcpu);
783static void m68k_op_jmp_32_di(m68000_base_device* mc68kcpu);
784static void m68k_op_jmp_32_ix(m68000_base_device* mc68kcpu);
785static void m68k_op_jmp_32_aw(m68000_base_device* mc68kcpu);
786static void m68k_op_jmp_32_al(m68000_base_device* mc68kcpu);
787static void m68k_op_jmp_32_pcdi(m68000_base_device* mc68kcpu);
788static void m68k_op_jmp_32_pcix(m68000_base_device* mc68kcpu);
789static void m68k_op_jsr_32_ai(m68000_base_device* mc68kcpu);
790static void m68k_op_jsr_32_di(m68000_base_device* mc68kcpu);
791static void m68k_op_jsr_32_ix(m68000_base_device* mc68kcpu);
792static void m68k_op_jsr_32_aw(m68000_base_device* mc68kcpu);
793static void m68k_op_jsr_32_al(m68000_base_device* mc68kcpu);
794static void m68k_op_jsr_32_pcdi(m68000_base_device* mc68kcpu);
795static void m68k_op_jsr_32_pcix(m68000_base_device* mc68kcpu);
796static void m68k_op_lea_32_ai(m68000_base_device* mc68kcpu);
797static void m68k_op_lea_32_di(m68000_base_device* mc68kcpu);
798static void m68k_op_lea_32_ix(m68000_base_device* mc68kcpu);
799static void m68k_op_lea_32_aw(m68000_base_device* mc68kcpu);
800static void m68k_op_lea_32_al(m68000_base_device* mc68kcpu);
801static void m68k_op_lea_32_pcdi(m68000_base_device* mc68kcpu);
802static void m68k_op_lea_32_pcix(m68000_base_device* mc68kcpu);
803static void m68k_op_link_16_a7(m68000_base_device* mc68kcpu);
804static void m68k_op_link_16(m68000_base_device* mc68kcpu);
805static void m68k_op_link_32_a7(m68000_base_device* mc68kcpu);
806static void m68k_op_link_32(m68000_base_device* mc68kcpu);
807static void m68k_op_lsr_8_s(m68000_base_device* mc68kcpu);
808static void m68k_op_lsr_16_s(m68000_base_device* mc68kcpu);
809static void m68k_op_lsr_32_s(m68000_base_device* mc68kcpu);
810static void m68k_op_lsr_8_r(m68000_base_device* mc68kcpu);
811static void m68k_op_lsr_16_r(m68000_base_device* mc68kcpu);
812static void m68k_op_lsr_32_r(m68000_base_device* mc68kcpu);
813static void m68k_op_lsr_16_ai(m68000_base_device* mc68kcpu);
814static void m68k_op_lsr_16_pi(m68000_base_device* mc68kcpu);
815static void m68k_op_lsr_16_pd(m68000_base_device* mc68kcpu);
816static void m68k_op_lsr_16_di(m68000_base_device* mc68kcpu);
817static void m68k_op_lsr_16_ix(m68000_base_device* mc68kcpu);
818static void m68k_op_lsr_16_aw(m68000_base_device* mc68kcpu);
819static void m68k_op_lsr_16_al(m68000_base_device* mc68kcpu);
820static void m68k_op_lsl_8_s(m68000_base_device* mc68kcpu);
821static void m68k_op_lsl_16_s(m68000_base_device* mc68kcpu);
822static void m68k_op_lsl_32_s(m68000_base_device* mc68kcpu);
823static void m68k_op_lsl_8_r(m68000_base_device* mc68kcpu);
824static void m68k_op_lsl_16_r(m68000_base_device* mc68kcpu);
825static void m68k_op_lsl_32_r(m68000_base_device* mc68kcpu);
826static void m68k_op_lsl_16_ai(m68000_base_device* mc68kcpu);
827static void m68k_op_lsl_16_pi(m68000_base_device* mc68kcpu);
828static void m68k_op_lsl_16_pd(m68000_base_device* mc68kcpu);
829static void m68k_op_lsl_16_di(m68000_base_device* mc68kcpu);
830static void m68k_op_lsl_16_ix(m68000_base_device* mc68kcpu);
831static void m68k_op_lsl_16_aw(m68000_base_device* mc68kcpu);
832static void m68k_op_lsl_16_al(m68000_base_device* mc68kcpu);
833static void m68k_op_move_8_d_d(m68000_base_device* mc68kcpu);
834static void m68k_op_move_8_d_ai(m68000_base_device* mc68kcpu);
835static void m68k_op_move_8_d_pi(m68000_base_device* mc68kcpu);
836static void m68k_op_move_8_d_pi7(m68000_base_device* mc68kcpu);
837static void m68k_op_move_8_d_pd(m68000_base_device* mc68kcpu);
838static void m68k_op_move_8_d_pd7(m68000_base_device* mc68kcpu);
839static void m68k_op_move_8_d_di(m68000_base_device* mc68kcpu);
840static void m68k_op_move_8_d_ix(m68000_base_device* mc68kcpu);
841static void m68k_op_move_8_d_aw(m68000_base_device* mc68kcpu);
842static void m68k_op_move_8_d_al(m68000_base_device* mc68kcpu);
843static void m68k_op_move_8_d_pcdi(m68000_base_device* mc68kcpu);
844static void m68k_op_move_8_d_pcix(m68000_base_device* mc68kcpu);
845static void m68k_op_move_8_d_i(m68000_base_device* mc68kcpu);
846static void m68k_op_move_8_ai_d(m68000_base_device* mc68kcpu);
847static void m68k_op_move_8_ai_ai(m68000_base_device* mc68kcpu);
848static void m68k_op_move_8_ai_pi(m68000_base_device* mc68kcpu);
849static void m68k_op_move_8_ai_pi7(m68000_base_device* mc68kcpu);
850static void m68k_op_move_8_ai_pd(m68000_base_device* mc68kcpu);
851static void m68k_op_move_8_ai_pd7(m68000_base_device* mc68kcpu);
852static void m68k_op_move_8_ai_di(m68000_base_device* mc68kcpu);
853static void m68k_op_move_8_ai_ix(m68000_base_device* mc68kcpu);
854static void m68k_op_move_8_ai_aw(m68000_base_device* mc68kcpu);
855static void m68k_op_move_8_ai_al(m68000_base_device* mc68kcpu);
856static void m68k_op_move_8_ai_pcdi(m68000_base_device* mc68kcpu);
857static void m68k_op_move_8_ai_pcix(m68000_base_device* mc68kcpu);
858static void m68k_op_move_8_ai_i(m68000_base_device* mc68kcpu);
859static void m68k_op_move_8_pi7_d(m68000_base_device* mc68kcpu);
860static void m68k_op_move_8_pi_d(m68000_base_device* mc68kcpu);
861static void m68k_op_move_8_pi7_ai(m68000_base_device* mc68kcpu);
862static void m68k_op_move_8_pi7_pi(m68000_base_device* mc68kcpu);
863static void m68k_op_move_8_pi7_pi7(m68000_base_device* mc68kcpu);
864static void m68k_op_move_8_pi7_pd(m68000_base_device* mc68kcpu);
865static void m68k_op_move_8_pi7_pd7(m68000_base_device* mc68kcpu);
866static void m68k_op_move_8_pi7_di(m68000_base_device* mc68kcpu);
867static void m68k_op_move_8_pi7_ix(m68000_base_device* mc68kcpu);
868static void m68k_op_move_8_pi7_aw(m68000_base_device* mc68kcpu);
869static void m68k_op_move_8_pi7_al(m68000_base_device* mc68kcpu);
870static void m68k_op_move_8_pi7_pcdi(m68000_base_device* mc68kcpu);
871static void m68k_op_move_8_pi7_pcix(m68000_base_device* mc68kcpu);
872static void m68k_op_move_8_pi7_i(m68000_base_device* mc68kcpu);
873static void m68k_op_move_8_pi_ai(m68000_base_device* mc68kcpu);
874static void m68k_op_move_8_pi_pi(m68000_base_device* mc68kcpu);
875static void m68k_op_move_8_pi_pi7(m68000_base_device* mc68kcpu);
876static void m68k_op_move_8_pi_pd(m68000_base_device* mc68kcpu);
877static void m68k_op_move_8_pi_pd7(m68000_base_device* mc68kcpu);
878static void m68k_op_move_8_pi_di(m68000_base_device* mc68kcpu);
879static void m68k_op_move_8_pi_ix(m68000_base_device* mc68kcpu);
880static void m68k_op_move_8_pi_aw(m68000_base_device* mc68kcpu);
881static void m68k_op_move_8_pi_al(m68000_base_device* mc68kcpu);
882static void m68k_op_move_8_pi_pcdi(m68000_base_device* mc68kcpu);
883static void m68k_op_move_8_pi_pcix(m68000_base_device* mc68kcpu);
884static void m68k_op_move_8_pi_i(m68000_base_device* mc68kcpu);
885static void m68k_op_move_8_pd7_d(m68000_base_device* mc68kcpu);
886static void m68k_op_move_8_pd_d(m68000_base_device* mc68kcpu);
887static void m68k_op_move_8_pd7_ai(m68000_base_device* mc68kcpu);
888static void m68k_op_move_8_pd7_pi(m68000_base_device* mc68kcpu);
889static void m68k_op_move_8_pd7_pi7(m68000_base_device* mc68kcpu);
890static void m68k_op_move_8_pd7_pd(m68000_base_device* mc68kcpu);
891static void m68k_op_move_8_pd7_pd7(m68000_base_device* mc68kcpu);
892static void m68k_op_move_8_pd7_di(m68000_base_device* mc68kcpu);
893static void m68k_op_move_8_pd7_ix(m68000_base_device* mc68kcpu);
894static void m68k_op_move_8_pd7_aw(m68000_base_device* mc68kcpu);
895static void m68k_op_move_8_pd7_al(m68000_base_device* mc68kcpu);
896static void m68k_op_move_8_pd7_pcdi(m68000_base_device* mc68kcpu);
897static void m68k_op_move_8_pd7_pcix(m68000_base_device* mc68kcpu);
898static void m68k_op_move_8_pd7_i(m68000_base_device* mc68kcpu);
899static void m68k_op_move_8_pd_ai(m68000_base_device* mc68kcpu);
900static void m68k_op_move_8_pd_pi(m68000_base_device* mc68kcpu);
901static void m68k_op_move_8_pd_pi7(m68000_base_device* mc68kcpu);
902static void m68k_op_move_8_pd_pd(m68000_base_device* mc68kcpu);
903static void m68k_op_move_8_pd_pd7(m68000_base_device* mc68kcpu);
904static void m68k_op_move_8_pd_di(m68000_base_device* mc68kcpu);
905static void m68k_op_move_8_pd_ix(m68000_base_device* mc68kcpu);
906static void m68k_op_move_8_pd_aw(m68000_base_device* mc68kcpu);
907static void m68k_op_move_8_pd_al(m68000_base_device* mc68kcpu);
908static void m68k_op_move_8_pd_pcdi(m68000_base_device* mc68kcpu);
909static void m68k_op_move_8_pd_pcix(m68000_base_device* mc68kcpu);
910static void m68k_op_move_8_pd_i(m68000_base_device* mc68kcpu);
911static void m68k_op_move_8_di_d(m68000_base_device* mc68kcpu);
912static void m68k_op_move_8_di_ai(m68000_base_device* mc68kcpu);
913static void m68k_op_move_8_di_pi(m68000_base_device* mc68kcpu);
914static void m68k_op_move_8_di_pi7(m68000_base_device* mc68kcpu);
915static void m68k_op_move_8_di_pd(m68000_base_device* mc68kcpu);
916static void m68k_op_move_8_di_pd7(m68000_base_device* mc68kcpu);
917static void m68k_op_move_8_di_di(m68000_base_device* mc68kcpu);
918static void m68k_op_move_8_di_ix(m68000_base_device* mc68kcpu);
919static void m68k_op_move_8_di_aw(m68000_base_device* mc68kcpu);
920static void m68k_op_move_8_di_al(m68000_base_device* mc68kcpu);
921static void m68k_op_move_8_di_pcdi(m68000_base_device* mc68kcpu);
922static void m68k_op_move_8_di_pcix(m68000_base_device* mc68kcpu);
923static void m68k_op_move_8_di_i(m68000_base_device* mc68kcpu);
924static void m68k_op_move_8_ix_d(m68000_base_device* mc68kcpu);
925static void m68k_op_move_8_ix_ai(m68000_base_device* mc68kcpu);
926static void m68k_op_move_8_ix_pi(m68000_base_device* mc68kcpu);
927static void m68k_op_move_8_ix_pi7(m68000_base_device* mc68kcpu);
928static void m68k_op_move_8_ix_pd(m68000_base_device* mc68kcpu);
929static void m68k_op_move_8_ix_pd7(m68000_base_device* mc68kcpu);
930static void m68k_op_move_8_ix_di(m68000_base_device* mc68kcpu);
931static void m68k_op_move_8_ix_ix(m68000_base_device* mc68kcpu);
932static void m68k_op_move_8_ix_aw(m68000_base_device* mc68kcpu);
933static void m68k_op_move_8_ix_al(m68000_base_device* mc68kcpu);
934static void m68k_op_move_8_ix_pcdi(m68000_base_device* mc68kcpu);
935static void m68k_op_move_8_ix_pcix(m68000_base_device* mc68kcpu);
936static void m68k_op_move_8_ix_i(m68000_base_device* mc68kcpu);
937static void m68k_op_move_8_aw_d(m68000_base_device* mc68kcpu);
938static void m68k_op_move_8_aw_ai(m68000_base_device* mc68kcpu);
939static void m68k_op_move_8_aw_pi(m68000_base_device* mc68kcpu);
940static void m68k_op_move_8_aw_pi7(m68000_base_device* mc68kcpu);
941static void m68k_op_move_8_aw_pd(m68000_base_device* mc68kcpu);
942static void m68k_op_move_8_aw_pd7(m68000_base_device* mc68kcpu);
943static void m68k_op_move_8_aw_di(m68000_base_device* mc68kcpu);
944static void m68k_op_move_8_aw_ix(m68000_base_device* mc68kcpu);
945static void m68k_op_move_8_aw_aw(m68000_base_device* mc68kcpu);
946static void m68k_op_move_8_aw_al(m68000_base_device* mc68kcpu);
947static void m68k_op_move_8_aw_pcdi(m68000_base_device* mc68kcpu);
948static void m68k_op_move_8_aw_pcix(m68000_base_device* mc68kcpu);
949static void m68k_op_move_8_aw_i(m68000_base_device* mc68kcpu);
950static void m68k_op_move_8_al_d(m68000_base_device* mc68kcpu);
951static void m68k_op_move_8_al_ai(m68000_base_device* mc68kcpu);
952static void m68k_op_move_8_al_pi(m68000_base_device* mc68kcpu);
953static void m68k_op_move_8_al_pi7(m68000_base_device* mc68kcpu);
954static void m68k_op_move_8_al_pd(m68000_base_device* mc68kcpu);
955static void m68k_op_move_8_al_pd7(m68000_base_device* mc68kcpu);
956static void m68k_op_move_8_al_di(m68000_base_device* mc68kcpu);
957static void m68k_op_move_8_al_ix(m68000_base_device* mc68kcpu);
958static void m68k_op_move_8_al_aw(m68000_base_device* mc68kcpu);
959static void m68k_op_move_8_al_al(m68000_base_device* mc68kcpu);
960static void m68k_op_move_8_al_pcdi(m68000_base_device* mc68kcpu);
961static void m68k_op_move_8_al_pcix(m68000_base_device* mc68kcpu);
962static void m68k_op_move_8_al_i(m68000_base_device* mc68kcpu);
963static void m68k_op_move_16_d_d(m68000_base_device* mc68kcpu);
964static void m68k_op_move_16_d_a(m68000_base_device* mc68kcpu);
965static void m68k_op_move_16_d_ai(m68000_base_device* mc68kcpu);
966static void m68k_op_move_16_d_pi(m68000_base_device* mc68kcpu);
967static void m68k_op_move_16_d_pd(m68000_base_device* mc68kcpu);
968static void m68k_op_move_16_d_di(m68000_base_device* mc68kcpu);
969static void m68k_op_move_16_d_ix(m68000_base_device* mc68kcpu);
970static void m68k_op_move_16_d_aw(m68000_base_device* mc68kcpu);
971static void m68k_op_move_16_d_al(m68000_base_device* mc68kcpu);
972static void m68k_op_move_16_d_pcdi(m68000_base_device* mc68kcpu);
973static void m68k_op_move_16_d_pcix(m68000_base_device* mc68kcpu);
974static void m68k_op_move_16_d_i(m68000_base_device* mc68kcpu);
975static void m68k_op_move_16_ai_d(m68000_base_device* mc68kcpu);
976static void m68k_op_move_16_ai_a(m68000_base_device* mc68kcpu);
977static void m68k_op_move_16_ai_ai(m68000_base_device* mc68kcpu);
978static void m68k_op_move_16_ai_pi(m68000_base_device* mc68kcpu);
979static void m68k_op_move_16_ai_pd(m68000_base_device* mc68kcpu);
980static void m68k_op_move_16_ai_di(m68000_base_device* mc68kcpu);
981static void m68k_op_move_16_ai_ix(m68000_base_device* mc68kcpu);
982static void m68k_op_move_16_ai_aw(m68000_base_device* mc68kcpu);
983static void m68k_op_move_16_ai_al(m68000_base_device* mc68kcpu);
984static void m68k_op_move_16_ai_pcdi(m68000_base_device* mc68kcpu);
985static void m68k_op_move_16_ai_pcix(m68000_base_device* mc68kcpu);
986static void m68k_op_move_16_ai_i(m68000_base_device* mc68kcpu);
987static void m68k_op_move_16_pi_d(m68000_base_device* mc68kcpu);
988static void m68k_op_move_16_pi_a(m68000_base_device* mc68kcpu);
989static void m68k_op_move_16_pi_ai(m68000_base_device* mc68kcpu);
990static void m68k_op_move_16_pi_pi(m68000_base_device* mc68kcpu);
991static void m68k_op_move_16_pi_pd(m68000_base_device* mc68kcpu);
992static void m68k_op_move_16_pi_di(m68000_base_device* mc68kcpu);
993static void m68k_op_move_16_pi_ix(m68000_base_device* mc68kcpu);
994static void m68k_op_move_16_pi_aw(m68000_base_device* mc68kcpu);
995static void m68k_op_move_16_pi_al(m68000_base_device* mc68kcpu);
996static void m68k_op_move_16_pi_pcdi(m68000_base_device* mc68kcpu);
997static void m68k_op_move_16_pi_pcix(m68000_base_device* mc68kcpu);
998static void m68k_op_move_16_pi_i(m68000_base_device* mc68kcpu);
999static void m68k_op_move_16_pd_d(m68000_base_device* mc68kcpu);
1000static void m68k_op_move_16_pd_a(m68000_base_device* mc68kcpu);
1001static void m68k_op_move_16_pd_ai(m68000_base_device* mc68kcpu);
1002static void m68k_op_move_16_pd_pi(m68000_base_device* mc68kcpu);
1003static void m68k_op_move_16_pd_pd(m68000_base_device* mc68kcpu);
1004static void m68k_op_move_16_pd_di(m68000_base_device* mc68kcpu);
1005static void m68k_op_move_16_pd_ix(m68000_base_device* mc68kcpu);
1006static void m68k_op_move_16_pd_aw(m68000_base_device* mc68kcpu);
1007static void m68k_op_move_16_pd_al(m68000_base_device* mc68kcpu);
1008static void m68k_op_move_16_pd_pcdi(m68000_base_device* mc68kcpu);
1009static void m68k_op_move_16_pd_pcix(m68000_base_device* mc68kcpu);
1010static void m68k_op_move_16_pd_i(m68000_base_device* mc68kcpu);
1011static void m68k_op_move_16_di_d(m68000_base_device* mc68kcpu);
1012static void m68k_op_move_16_di_a(m68000_base_device* mc68kcpu);
1013static void m68k_op_move_16_di_ai(m68000_base_device* mc68kcpu);
1014static void m68k_op_move_16_di_pi(m68000_base_device* mc68kcpu);
1015static void m68k_op_move_16_di_pd(m68000_base_device* mc68kcpu);
1016static void m68k_op_move_16_di_di(m68000_base_device* mc68kcpu);
1017static void m68k_op_move_16_di_ix(m68000_base_device* mc68kcpu);
1018static void m68k_op_move_16_di_aw(m68000_base_device* mc68kcpu);
1019static void m68k_op_move_16_di_al(m68000_base_device* mc68kcpu);
1020static void m68k_op_move_16_di_pcdi(m68000_base_device* mc68kcpu);
1021static void m68k_op_move_16_di_pcix(m68000_base_device* mc68kcpu);
1022static void m68k_op_move_16_di_i(m68000_base_device* mc68kcpu);
1023static void m68k_op_move_16_ix_d(m68000_base_device* mc68kcpu);
1024static void m68k_op_move_16_ix_a(m68000_base_device* mc68kcpu);
1025static void m68k_op_move_16_ix_ai(m68000_base_device* mc68kcpu);
1026static void m68k_op_move_16_ix_pi(m68000_base_device* mc68kcpu);
1027static void m68k_op_move_16_ix_pd(m68000_base_device* mc68kcpu);
1028static void m68k_op_move_16_ix_di(m68000_base_device* mc68kcpu);
1029static void m68k_op_move_16_ix_ix(m68000_base_device* mc68kcpu);
1030static void m68k_op_move_16_ix_aw(m68000_base_device* mc68kcpu);
1031static void m68k_op_move_16_ix_al(m68000_base_device* mc68kcpu);
1032static void m68k_op_move_16_ix_pcdi(m68000_base_device* mc68kcpu);
1033static void m68k_op_move_16_ix_pcix(m68000_base_device* mc68kcpu);
1034static void m68k_op_move_16_ix_i(m68000_base_device* mc68kcpu);
1035static void m68k_op_move_16_aw_d(m68000_base_device* mc68kcpu);
1036static void m68k_op_move_16_aw_a(m68000_base_device* mc68kcpu);
1037static void m68k_op_move_16_aw_ai(m68000_base_device* mc68kcpu);
1038static void m68k_op_move_16_aw_pi(m68000_base_device* mc68kcpu);
1039static void m68k_op_move_16_aw_pd(m68000_base_device* mc68kcpu);
1040static void m68k_op_move_16_aw_di(m68000_base_device* mc68kcpu);
1041static void m68k_op_move_16_aw_ix(m68000_base_device* mc68kcpu);
1042static void m68k_op_move_16_aw_aw(m68000_base_device* mc68kcpu);
1043static void m68k_op_move_16_aw_al(m68000_base_device* mc68kcpu);
1044static void m68k_op_move_16_aw_pcdi(m68000_base_device* mc68kcpu);
1045static void m68k_op_move_16_aw_pcix(m68000_base_device* mc68kcpu);
1046static void m68k_op_move_16_aw_i(m68000_base_device* mc68kcpu);
1047static void m68k_op_move_16_al_d(m68000_base_device* mc68kcpu);
1048static void m68k_op_move_16_al_a(m68000_base_device* mc68kcpu);
1049static void m68k_op_move_16_al_ai(m68000_base_device* mc68kcpu);
1050static void m68k_op_move_16_al_pi(m68000_base_device* mc68kcpu);
1051static void m68k_op_move_16_al_pd(m68000_base_device* mc68kcpu);
1052static void m68k_op_move_16_al_di(m68000_base_device* mc68kcpu);
1053static void m68k_op_move_16_al_ix(m68000_base_device* mc68kcpu);
1054static void m68k_op_move_16_al_aw(m68000_base_device* mc68kcpu);
1055static void m68k_op_move_16_al_al(m68000_base_device* mc68kcpu);
1056static void m68k_op_move_16_al_pcdi(m68000_base_device* mc68kcpu);
1057static void m68k_op_move_16_al_pcix(m68000_base_device* mc68kcpu);
1058static void m68k_op_move_16_al_i(m68000_base_device* mc68kcpu);
1059static void m68k_op_move_32_d_d(m68000_base_device* mc68kcpu);
1060static void m68k_op_move_32_d_a(m68000_base_device* mc68kcpu);
1061static void m68k_op_move_32_d_ai(m68000_base_device* mc68kcpu);
1062static void m68k_op_move_32_d_pi(m68000_base_device* mc68kcpu);
1063static void m68k_op_move_32_d_pd(m68000_base_device* mc68kcpu);
1064static void m68k_op_move_32_d_di(m68000_base_device* mc68kcpu);
1065static void m68k_op_move_32_d_ix(m68000_base_device* mc68kcpu);
1066static void m68k_op_move_32_d_aw(m68000_base_device* mc68kcpu);
1067static void m68k_op_move_32_d_al(m68000_base_device* mc68kcpu);
1068static void m68k_op_move_32_d_pcdi(m68000_base_device* mc68kcpu);
1069static void m68k_op_move_32_d_pcix(m68000_base_device* mc68kcpu);
1070static void m68k_op_move_32_d_i(m68000_base_device* mc68kcpu);
1071static void m68k_op_move_32_ai_d(m68000_base_device* mc68kcpu);
1072static void m68k_op_move_32_ai_a(m68000_base_device* mc68kcpu);
1073static void m68k_op_move_32_ai_ai(m68000_base_device* mc68kcpu);
1074static void m68k_op_move_32_ai_pi(m68000_base_device* mc68kcpu);
1075static void m68k_op_move_32_ai_pd(m68000_base_device* mc68kcpu);
1076static void m68k_op_move_32_ai_di(m68000_base_device* mc68kcpu);
1077static void m68k_op_move_32_ai_ix(m68000_base_device* mc68kcpu);
1078static void m68k_op_move_32_ai_aw(m68000_base_device* mc68kcpu);
1079static void m68k_op_move_32_ai_al(m68000_base_device* mc68kcpu);
1080static void m68k_op_move_32_ai_pcdi(m68000_base_device* mc68kcpu);
1081static void m68k_op_move_32_ai_pcix(m68000_base_device* mc68kcpu);
1082static void m68k_op_move_32_ai_i(m68000_base_device* mc68kcpu);
1083static void m68k_op_move_32_pi_d(m68000_base_device* mc68kcpu);
1084static void m68k_op_move_32_pi_a(m68000_base_device* mc68kcpu);
1085static void m68k_op_move_32_pi_ai(m68000_base_device* mc68kcpu);
1086static void m68k_op_move_32_pi_pi(m68000_base_device* mc68kcpu);
1087static void m68k_op_move_32_pi_pd(m68000_base_device* mc68kcpu);
1088static void m68k_op_move_32_pi_di(m68000_base_device* mc68kcpu);
1089static void m68k_op_move_32_pi_ix(m68000_base_device* mc68kcpu);
1090static void m68k_op_move_32_pi_aw(m68000_base_device* mc68kcpu);
1091static void m68k_op_move_32_pi_al(m68000_base_device* mc68kcpu);
1092static void m68k_op_move_32_pi_pcdi(m68000_base_device* mc68kcpu);
1093static void m68k_op_move_32_pi_pcix(m68000_base_device* mc68kcpu);
1094static void m68k_op_move_32_pi_i(m68000_base_device* mc68kcpu);
1095static void m68k_op_move_32_pd_d(m68000_base_device* mc68kcpu);
1096static void m68k_op_move_32_pd_a(m68000_base_device* mc68kcpu);
1097static void m68k_op_move_32_pd_ai(m68000_base_device* mc68kcpu);
1098static void m68k_op_move_32_pd_pi(m68000_base_device* mc68kcpu);
1099static void m68k_op_move_32_pd_pd(m68000_base_device* mc68kcpu);
1100static void m68k_op_move_32_pd_di(m68000_base_device* mc68kcpu);
1101static void m68k_op_move_32_pd_ix(m68000_base_device* mc68kcpu);
1102static void m68k_op_move_32_pd_aw(m68000_base_device* mc68kcpu);
1103static void m68k_op_move_32_pd_al(m68000_base_device* mc68kcpu);
1104static void m68k_op_move_32_pd_pcdi(m68000_base_device* mc68kcpu);
1105static void m68k_op_move_32_pd_pcix(m68000_base_device* mc68kcpu);
1106static void m68k_op_move_32_pd_i(m68000_base_device* mc68kcpu);
1107static void m68k_op_move_32_di_d(m68000_base_device* mc68kcpu);
1108static void m68k_op_move_32_di_a(m68000_base_device* mc68kcpu);
1109static void m68k_op_move_32_di_ai(m68000_base_device* mc68kcpu);
1110static void m68k_op_move_32_di_pi(m68000_base_device* mc68kcpu);
1111static void m68k_op_move_32_di_pd(m68000_base_device* mc68kcpu);
1112static void m68k_op_move_32_di_di(m68000_base_device* mc68kcpu);
1113static void m68k_op_move_32_di_ix(m68000_base_device* mc68kcpu);
1114static void m68k_op_move_32_di_aw(m68000_base_device* mc68kcpu);
1115static void m68k_op_move_32_di_al(m68000_base_device* mc68kcpu);
1116static void m68k_op_move_32_di_pcdi(m68000_base_device* mc68kcpu);
1117static void m68k_op_move_32_di_pcix(m68000_base_device* mc68kcpu);
1118static void m68k_op_move_32_di_i(m68000_base_device* mc68kcpu);
1119static void m68k_op_move_32_ix_d(m68000_base_device* mc68kcpu);
1120static void m68k_op_move_32_ix_a(m68000_base_device* mc68kcpu);
1121static void m68k_op_move_32_ix_ai(m68000_base_device* mc68kcpu);
1122static void m68k_op_move_32_ix_pi(m68000_base_device* mc68kcpu);
1123static void m68k_op_move_32_ix_pd(m68000_base_device* mc68kcpu);
1124static void m68k_op_move_32_ix_di(m68000_base_device* mc68kcpu);
1125static void m68k_op_move_32_ix_ix(m68000_base_device* mc68kcpu);
1126static void m68k_op_move_32_ix_aw(m68000_base_device* mc68kcpu);
1127static void m68k_op_move_32_ix_al(m68000_base_device* mc68kcpu);
1128static void m68k_op_move_32_ix_pcdi(m68000_base_device* mc68kcpu);
1129static void m68k_op_move_32_ix_pcix(m68000_base_device* mc68kcpu);
1130static void m68k_op_move_32_ix_i(m68000_base_device* mc68kcpu);
1131static void m68k_op_move_32_aw_d(m68000_base_device* mc68kcpu);
1132static void m68k_op_move_32_aw_a(m68000_base_device* mc68kcpu);
1133static void m68k_op_move_32_aw_ai(m68000_base_device* mc68kcpu);
1134static void m68k_op_move_32_aw_pi(m68000_base_device* mc68kcpu);
1135static void m68k_op_move_32_aw_pd(m68000_base_device* mc68kcpu);
1136static void m68k_op_move_32_aw_di(m68000_base_device* mc68kcpu);
1137static void m68k_op_move_32_aw_ix(m68000_base_device* mc68kcpu);
1138static void m68k_op_move_32_aw_aw(m68000_base_device* mc68kcpu);
1139static void m68k_op_move_32_aw_al(m68000_base_device* mc68kcpu);
1140static void m68k_op_move_32_aw_pcdi(m68000_base_device* mc68kcpu);
1141static void m68k_op_move_32_aw_pcix(m68000_base_device* mc68kcpu);
1142static void m68k_op_move_32_aw_i(m68000_base_device* mc68kcpu);
1143static void m68k_op_move_32_al_d(m68000_base_device* mc68kcpu);
1144static void m68k_op_move_32_al_a(m68000_base_device* mc68kcpu);
1145static void m68k_op_move_32_al_ai(m68000_base_device* mc68kcpu);
1146static void m68k_op_move_32_al_pi(m68000_base_device* mc68kcpu);
1147static void m68k_op_move_32_al_pd(m68000_base_device* mc68kcpu);
1148static void m68k_op_move_32_al_di(m68000_base_device* mc68kcpu);
1149static void m68k_op_move_32_al_ix(m68000_base_device* mc68kcpu);
1150static void m68k_op_move_32_al_aw(m68000_base_device* mc68kcpu);
1151static void m68k_op_move_32_al_al(m68000_base_device* mc68kcpu);
1152static void m68k_op_move_32_al_pcdi(m68000_base_device* mc68kcpu);
1153static void m68k_op_move_32_al_pcix(m68000_base_device* mc68kcpu);
1154static void m68k_op_move_32_al_i(m68000_base_device* mc68kcpu);
1155static void m68k_op_movea_16_d(m68000_base_device* mc68kcpu);
1156static void m68k_op_movea_16_a(m68000_base_device* mc68kcpu);
1157static void m68k_op_movea_16_ai(m68000_base_device* mc68kcpu);
1158static void m68k_op_movea_16_pi(m68000_base_device* mc68kcpu);
1159static void m68k_op_movea_16_pd(m68000_base_device* mc68kcpu);
1160static void m68k_op_movea_16_di(m68000_base_device* mc68kcpu);
1161static void m68k_op_movea_16_ix(m68000_base_device* mc68kcpu);
1162static void m68k_op_movea_16_aw(m68000_base_device* mc68kcpu);
1163static void m68k_op_movea_16_al(m68000_base_device* mc68kcpu);
1164static void m68k_op_movea_16_pcdi(m68000_base_device* mc68kcpu);
1165static void m68k_op_movea_16_pcix(m68000_base_device* mc68kcpu);
1166static void m68k_op_movea_16_i(m68000_base_device* mc68kcpu);
1167static void m68k_op_movea_32_d(m68000_base_device* mc68kcpu);
1168static void m68k_op_movea_32_a(m68000_base_device* mc68kcpu);
1169static void m68k_op_movea_32_ai(m68000_base_device* mc68kcpu);
1170static void m68k_op_movea_32_pi(m68000_base_device* mc68kcpu);
1171static void m68k_op_movea_32_pd(m68000_base_device* mc68kcpu);
1172static void m68k_op_movea_32_di(m68000_base_device* mc68kcpu);
1173static void m68k_op_movea_32_ix(m68000_base_device* mc68kcpu);
1174static void m68k_op_movea_32_aw(m68000_base_device* mc68kcpu);
1175static void m68k_op_movea_32_al(m68000_base_device* mc68kcpu);
1176static void m68k_op_movea_32_pcdi(m68000_base_device* mc68kcpu);
1177static void m68k_op_movea_32_pcix(m68000_base_device* mc68kcpu);
1178static void m68k_op_movea_32_i(m68000_base_device* mc68kcpu);
1179static void m68k_op_move_16_frc_d(m68000_base_device* mc68kcpu);
1180static void m68k_op_move_16_frc_ai(m68000_base_device* mc68kcpu);
1181static void m68k_op_move_16_frc_pi(m68000_base_device* mc68kcpu);
1182static void m68k_op_move_16_frc_pd(m68000_base_device* mc68kcpu);
1183static void m68k_op_move_16_frc_di(m68000_base_device* mc68kcpu);
1184static void m68k_op_move_16_frc_ix(m68000_base_device* mc68kcpu);
1185static void m68k_op_move_16_frc_aw(m68000_base_device* mc68kcpu);
1186static void m68k_op_move_16_frc_al(m68000_base_device* mc68kcpu);
1187static void m68k_op_move_16_toc_d(m68000_base_device* mc68kcpu);
1188static void m68k_op_move_16_toc_ai(m68000_base_device* mc68kcpu);
1189static void m68k_op_move_16_toc_pi(m68000_base_device* mc68kcpu);
1190static void m68k_op_move_16_toc_pd(m68000_base_device* mc68kcpu);
1191static void m68k_op_move_16_toc_di(m68000_base_device* mc68kcpu);
1192static void m68k_op_move_16_toc_ix(m68000_base_device* mc68kcpu);
1193static void m68k_op_move_16_toc_aw(m68000_base_device* mc68kcpu);
1194static void m68k_op_move_16_toc_al(m68000_base_device* mc68kcpu);
1195static void m68k_op_move_16_toc_pcdi(m68000_base_device* mc68kcpu);
1196static void m68k_op_move_16_toc_pcix(m68000_base_device* mc68kcpu);
1197static void m68k_op_move_16_toc_i(m68000_base_device* mc68kcpu);
1198static void m68k_op_move_16_frs_d(m68000_base_device* mc68kcpu);
1199static void m68k_op_move_16_frs_ai(m68000_base_device* mc68kcpu);
1200static void m68k_op_move_16_frs_pi(m68000_base_device* mc68kcpu);
1201static void m68k_op_move_16_frs_pd(m68000_base_device* mc68kcpu);
1202static void m68k_op_move_16_frs_di(m68000_base_device* mc68kcpu);
1203static void m68k_op_move_16_frs_ix(m68000_base_device* mc68kcpu);
1204static void m68k_op_move_16_frs_aw(m68000_base_device* mc68kcpu);
1205static void m68k_op_move_16_frs_al(m68000_base_device* mc68kcpu);
1206static void m68k_op_move_16_tos_d(m68000_base_device* mc68kcpu);
1207static void m68k_op_move_16_tos_ai(m68000_base_device* mc68kcpu);
1208static void m68k_op_move_16_tos_pi(m68000_base_device* mc68kcpu);
1209static void m68k_op_move_16_tos_pd(m68000_base_device* mc68kcpu);
1210static void m68k_op_move_16_tos_di(m68000_base_device* mc68kcpu);
1211static void m68k_op_move_16_tos_ix(m68000_base_device* mc68kcpu);
1212static void m68k_op_move_16_tos_aw(m68000_base_device* mc68kcpu);
1213static void m68k_op_move_16_tos_al(m68000_base_device* mc68kcpu);
1214static void m68k_op_move_16_tos_pcdi(m68000_base_device* mc68kcpu);
1215static void m68k_op_move_16_tos_pcix(m68000_base_device* mc68kcpu);
1216static void m68k_op_move_16_tos_i(m68000_base_device* mc68kcpu);
1217static void m68k_op_move_32_fru(m68000_base_device* mc68kcpu);
1218static void m68k_op_move_32_tou(m68000_base_device* mc68kcpu);
1219static void m68k_op_movec_32_cr(m68000_base_device* mc68kcpu);
1220static void m68k_op_movec_32_rc(m68000_base_device* mc68kcpu);
1221static void m68k_op_movem_16_re_pd(m68000_base_device* mc68kcpu);
1222static void m68k_op_movem_16_re_ai(m68000_base_device* mc68kcpu);
1223static void m68k_op_movem_16_re_di(m68000_base_device* mc68kcpu);
1224static void m68k_op_movem_16_re_ix(m68000_base_device* mc68kcpu);
1225static void m68k_op_movem_16_re_aw(m68000_base_device* mc68kcpu);
1226static void m68k_op_movem_16_re_al(m68000_base_device* mc68kcpu);
1227static void m68k_op_movem_32_re_pd(m68000_base_device* mc68kcpu);
1228static void m68k_op_movem_32_re_ai(m68000_base_device* mc68kcpu);
1229static void m68k_op_movem_32_re_di(m68000_base_device* mc68kcpu);
1230static void m68k_op_movem_32_re_ix(m68000_base_device* mc68kcpu);
1231static void m68k_op_movem_32_re_aw(m68000_base_device* mc68kcpu);
1232static void m68k_op_movem_32_re_al(m68000_base_device* mc68kcpu);
1233static void m68k_op_movem_16_er_pi(m68000_base_device* mc68kcpu);
1234static void m68k_op_movem_16_er_pcdi(m68000_base_device* mc68kcpu);
1235static void m68k_op_movem_16_er_pcix(m68000_base_device* mc68kcpu);
1236static void m68k_op_movem_16_er_ai(m68000_base_device* mc68kcpu);
1237static void m68k_op_movem_16_er_di(m68000_base_device* mc68kcpu);
1238static void m68k_op_movem_16_er_ix(m68000_base_device* mc68kcpu);
1239static void m68k_op_movem_16_er_aw(m68000_base_device* mc68kcpu);
1240static void m68k_op_movem_16_er_al(m68000_base_device* mc68kcpu);
1241static void m68k_op_movem_32_er_pi(m68000_base_device* mc68kcpu);
1242static void m68k_op_movem_32_er_pcdi(m68000_base_device* mc68kcpu);
1243static void m68k_op_movem_32_er_pcix(m68000_base_device* mc68kcpu);
1244static void m68k_op_movem_32_er_ai(m68000_base_device* mc68kcpu);
1245static void m68k_op_movem_32_er_di(m68000_base_device* mc68kcpu);
1246static void m68k_op_movem_32_er_ix(m68000_base_device* mc68kcpu);
1247static void m68k_op_movem_32_er_aw(m68000_base_device* mc68kcpu);
1248static void m68k_op_movem_32_er_al(m68000_base_device* mc68kcpu);
1249static void m68k_op_movep_16_re(m68000_base_device* mc68kcpu);
1250static void m68k_op_movep_32_re(m68000_base_device* mc68kcpu);
1251static void m68k_op_movep_16_er(m68000_base_device* mc68kcpu);
1252static void m68k_op_movep_32_er(m68000_base_device* mc68kcpu);
1253static void m68k_op_moves_8_ai(m68000_base_device* mc68kcpu);
1254static void m68k_op_moves_8_pi(m68000_base_device* mc68kcpu);
1255static void m68k_op_moves_8_pi7(m68000_base_device* mc68kcpu);
1256static void m68k_op_moves_8_pd(m68000_base_device* mc68kcpu);
1257static void m68k_op_moves_8_pd7(m68000_base_device* mc68kcpu);
1258static void m68k_op_moves_8_di(m68000_base_device* mc68kcpu);
1259static void m68k_op_moves_8_ix(m68000_base_device* mc68kcpu);
1260static void m68k_op_moves_8_aw(m68000_base_device* mc68kcpu);
1261static void m68k_op_moves_8_al(m68000_base_device* mc68kcpu);
1262static void m68k_op_moves_16_ai(m68000_base_device* mc68kcpu);
1263static void m68k_op_moves_16_pi(m68000_base_device* mc68kcpu);
1264static void m68k_op_moves_16_pd(m68000_base_device* mc68kcpu);
1265static void m68k_op_moves_16_di(m68000_base_device* mc68kcpu);
1266static void m68k_op_moves_16_ix(m68000_base_device* mc68kcpu);
1267static void m68k_op_moves_16_aw(m68000_base_device* mc68kcpu);
1268static void m68k_op_moves_16_al(m68000_base_device* mc68kcpu);
1269static void m68k_op_moves_32_ai(m68000_base_device* mc68kcpu);
1270static void m68k_op_moves_32_pi(m68000_base_device* mc68kcpu);
1271static void m68k_op_moves_32_pd(m68000_base_device* mc68kcpu);
1272static void m68k_op_moves_32_di(m68000_base_device* mc68kcpu);
1273static void m68k_op_moves_32_ix(m68000_base_device* mc68kcpu);
1274static void m68k_op_moves_32_aw(m68000_base_device* mc68kcpu);
1275static void m68k_op_moves_32_al(m68000_base_device* mc68kcpu);
1276static void m68k_op_moveq_32(m68000_base_device* mc68kcpu);
1277static void m68k_op_move16_32(m68000_base_device* mc68kcpu);
1278static void m68k_op_muls_16_d(m68000_base_device* mc68kcpu);
1279static void m68k_op_muls_16_ai(m68000_base_device* mc68kcpu);
1280static void m68k_op_muls_16_pi(m68000_base_device* mc68kcpu);
1281static void m68k_op_muls_16_pd(m68000_base_device* mc68kcpu);
1282static void m68k_op_muls_16_di(m68000_base_device* mc68kcpu);
1283static void m68k_op_muls_16_ix(m68000_base_device* mc68kcpu);
1284static void m68k_op_muls_16_aw(m68000_base_device* mc68kcpu);
1285static void m68k_op_muls_16_al(m68000_base_device* mc68kcpu);
1286static void m68k_op_muls_16_pcdi(m68000_base_device* mc68kcpu);
1287static void m68k_op_muls_16_pcix(m68000_base_device* mc68kcpu);
1288static void m68k_op_muls_16_i(m68000_base_device* mc68kcpu);
1289static void m68k_op_mulu_16_d(m68000_base_device* mc68kcpu);
1290static void m68k_op_mulu_16_ai(m68000_base_device* mc68kcpu);
1291static void m68k_op_mulu_16_pi(m68000_base_device* mc68kcpu);
1292static void m68k_op_mulu_16_pd(m68000_base_device* mc68kcpu);
1293static void m68k_op_mulu_16_di(m68000_base_device* mc68kcpu);
1294static void m68k_op_mulu_16_ix(m68000_base_device* mc68kcpu);
1295static void m68k_op_mulu_16_aw(m68000_base_device* mc68kcpu);
1296static void m68k_op_mulu_16_al(m68000_base_device* mc68kcpu);
1297static void m68k_op_mulu_16_pcdi(m68000_base_device* mc68kcpu);
1298static void m68k_op_mulu_16_pcix(m68000_base_device* mc68kcpu);
1299static void m68k_op_mulu_16_i(m68000_base_device* mc68kcpu);
1300static void m68k_op_mull_32_d(m68000_base_device* mc68kcpu);
1301static void m68k_op_mull_32_ai(m68000_base_device* mc68kcpu);
1302static void m68k_op_mull_32_pi(m68000_base_device* mc68kcpu);
1303static void m68k_op_mull_32_pd(m68000_base_device* mc68kcpu);
1304static void m68k_op_mull_32_di(m68000_base_device* mc68kcpu);
1305static void m68k_op_mull_32_ix(m68000_base_device* mc68kcpu);
1306static void m68k_op_mull_32_aw(m68000_base_device* mc68kcpu);
1307static void m68k_op_mull_32_al(m68000_base_device* mc68kcpu);
1308static void m68k_op_mull_32_pcdi(m68000_base_device* mc68kcpu);
1309static void m68k_op_mull_32_pcix(m68000_base_device* mc68kcpu);
1310static void m68k_op_mull_32_i(m68000_base_device* mc68kcpu);
1311static void m68k_op_nbcd_8_d(m68000_base_device* mc68kcpu);
1312static void m68k_op_nbcd_8_ai(m68000_base_device* mc68kcpu);
1313static void m68k_op_nbcd_8_pi(m68000_base_device* mc68kcpu);
1314static void m68k_op_nbcd_8_pi7(m68000_base_device* mc68kcpu);
1315static void m68k_op_nbcd_8_pd(m68000_base_device* mc68kcpu);
1316static void m68k_op_nbcd_8_pd7(m68000_base_device* mc68kcpu);
1317static void m68k_op_nbcd_8_di(m68000_base_device* mc68kcpu);
1318static void m68k_op_nbcd_8_ix(m68000_base_device* mc68kcpu);
1319static void m68k_op_nbcd_8_aw(m68000_base_device* mc68kcpu);
1320static void m68k_op_nbcd_8_al(m68000_base_device* mc68kcpu);
1321static void m68k_op_neg_8_d(m68000_base_device* mc68kcpu);
1322static void m68k_op_neg_8_ai(m68000_base_device* mc68kcpu);
1323static void m68k_op_neg_8_pi(m68000_base_device* mc68kcpu);
1324static void m68k_op_neg_8_pi7(m68000_base_device* mc68kcpu);
1325static void m68k_op_neg_8_pd(m68000_base_device* mc68kcpu);
1326static void m68k_op_neg_8_pd7(m68000_base_device* mc68kcpu);
1327static void m68k_op_neg_8_di(m68000_base_device* mc68kcpu);
1328static void m68k_op_neg_8_ix(m68000_base_device* mc68kcpu);
1329static void m68k_op_neg_8_aw(m68000_base_device* mc68kcpu);
1330static void m68k_op_neg_8_al(m68000_base_device* mc68kcpu);
1331static void m68k_op_neg_16_d(m68000_base_device* mc68kcpu);
1332static void m68k_op_neg_16_ai(m68000_base_device* mc68kcpu);
1333static void m68k_op_neg_16_pi(m68000_base_device* mc68kcpu);
1334static void m68k_op_neg_16_pd(m68000_base_device* mc68kcpu);
1335static void m68k_op_neg_16_di(m68000_base_device* mc68kcpu);
1336static void m68k_op_neg_16_ix(m68000_base_device* mc68kcpu);
1337static void m68k_op_neg_16_aw(m68000_base_device* mc68kcpu);
1338static void m68k_op_neg_16_al(m68000_base_device* mc68kcpu);
1339static void m68k_op_neg_32_d(m68000_base_device* mc68kcpu);
1340static void m68k_op_neg_32_ai(m68000_base_device* mc68kcpu);
1341static void m68k_op_neg_32_pi(m68000_base_device* mc68kcpu);
1342static void m68k_op_neg_32_pd(m68000_base_device* mc68kcpu);
1343static void m68k_op_neg_32_di(m68000_base_device* mc68kcpu);
1344static void m68k_op_neg_32_ix(m68000_base_device* mc68kcpu);
1345static void m68k_op_neg_32_aw(m68000_base_device* mc68kcpu);
1346static void m68k_op_neg_32_al(m68000_base_device* mc68kcpu);
1347static void m68k_op_negx_8_d(m68000_base_device* mc68kcpu);
1348static void m68k_op_negx_8_ai(m68000_base_device* mc68kcpu);
1349static void m68k_op_negx_8_pi(m68000_base_device* mc68kcpu);
1350static void m68k_op_negx_8_pi7(m68000_base_device* mc68kcpu);
1351static void m68k_op_negx_8_pd(m68000_base_device* mc68kcpu);
1352static void m68k_op_negx_8_pd7(m68000_base_device* mc68kcpu);
1353static void m68k_op_negx_8_di(m68000_base_device* mc68kcpu);
1354static void m68k_op_negx_8_ix(m68000_base_device* mc68kcpu);
1355static void m68k_op_negx_8_aw(m68000_base_device* mc68kcpu);
1356static void m68k_op_negx_8_al(m68000_base_device* mc68kcpu);
1357static void m68k_op_negx_16_d(m68000_base_device* mc68kcpu);
1358static void m68k_op_negx_16_ai(m68000_base_device* mc68kcpu);
1359static void m68k_op_negx_16_pi(m68000_base_device* mc68kcpu);
1360static void m68k_op_negx_16_pd(m68000_base_device* mc68kcpu);
1361static void m68k_op_negx_16_di(m68000_base_device* mc68kcpu);
1362static void m68k_op_negx_16_ix(m68000_base_device* mc68kcpu);
1363static void m68k_op_negx_16_aw(m68000_base_device* mc68kcpu);
1364static void m68k_op_negx_16_al(m68000_base_device* mc68kcpu);
1365static void m68k_op_negx_32_d(m68000_base_device* mc68kcpu);
1366static void m68k_op_negx_32_ai(m68000_base_device* mc68kcpu);
1367static void m68k_op_negx_32_pi(m68000_base_device* mc68kcpu);
1368static void m68k_op_negx_32_pd(m68000_base_device* mc68kcpu);
1369static void m68k_op_negx_32_di(m68000_base_device* mc68kcpu);
1370static void m68k_op_negx_32_ix(m68000_base_device* mc68kcpu);
1371static void m68k_op_negx_32_aw(m68000_base_device* mc68kcpu);
1372static void m68k_op_negx_32_al(m68000_base_device* mc68kcpu);
1373static void m68k_op_nop(m68000_base_device* mc68kcpu);
1374static void m68k_op_not_8_d(m68000_base_device* mc68kcpu);
1375static void m68k_op_not_8_ai(m68000_base_device* mc68kcpu);
1376static void m68k_op_not_8_pi(m68000_base_device* mc68kcpu);
1377static void m68k_op_not_8_pi7(m68000_base_device* mc68kcpu);
1378static void m68k_op_not_8_pd(m68000_base_device* mc68kcpu);
1379static void m68k_op_not_8_pd7(m68000_base_device* mc68kcpu);
1380static void m68k_op_not_8_di(m68000_base_device* mc68kcpu);
1381static void m68k_op_not_8_ix(m68000_base_device* mc68kcpu);
1382static void m68k_op_not_8_aw(m68000_base_device* mc68kcpu);
1383static void m68k_op_not_8_al(m68000_base_device* mc68kcpu);
1384static void m68k_op_not_16_d(m68000_base_device* mc68kcpu);
1385static void m68k_op_not_16_ai(m68000_base_device* mc68kcpu);
1386static void m68k_op_not_16_pi(m68000_base_device* mc68kcpu);
1387static void m68k_op_not_16_pd(m68000_base_device* mc68kcpu);
1388static void m68k_op_not_16_di(m68000_base_device* mc68kcpu);
1389static void m68k_op_not_16_ix(m68000_base_device* mc68kcpu);
1390static void m68k_op_not_16_aw(m68000_base_device* mc68kcpu);
1391static void m68k_op_not_16_al(m68000_base_device* mc68kcpu);
1392static void m68k_op_not_32_d(m68000_base_device* mc68kcpu);
1393static void m68k_op_not_32_ai(m68000_base_device* mc68kcpu);
1394static void m68k_op_not_32_pi(m68000_base_device* mc68kcpu);
1395static void m68k_op_not_32_pd(m68000_base_device* mc68kcpu);
1396static void m68k_op_not_32_di(m68000_base_device* mc68kcpu);
1397static void m68k_op_not_32_ix(m68000_base_device* mc68kcpu);
1398static void m68k_op_not_32_aw(m68000_base_device* mc68kcpu);
1399static void m68k_op_not_32_al(m68000_base_device* mc68kcpu);
1400static void m68k_op_or_8_er_d(m68000_base_device* mc68kcpu);
1401static void m68k_op_or_8_er_ai(m68000_base_device* mc68kcpu);
1402static void m68k_op_or_8_er_pi(m68000_base_device* mc68kcpu);
1403static void m68k_op_or_8_er_pi7(m68000_base_device* mc68kcpu);
1404static void m68k_op_or_8_er_pd(m68000_base_device* mc68kcpu);
1405static void m68k_op_or_8_er_pd7(m68000_base_device* mc68kcpu);
1406static void m68k_op_or_8_er_di(m68000_base_device* mc68kcpu);
1407static void m68k_op_or_8_er_ix(m68000_base_device* mc68kcpu);
1408static void m68k_op_or_8_er_aw(m68000_base_device* mc68kcpu);
1409static void m68k_op_or_8_er_al(m68000_base_device* mc68kcpu);
1410static void m68k_op_or_8_er_pcdi(m68000_base_device* mc68kcpu);
1411static void m68k_op_or_8_er_pcix(m68000_base_device* mc68kcpu);
1412static void m68k_op_or_8_er_i(m68000_base_device* mc68kcpu);
1413static void m68k_op_or_16_er_d(m68000_base_device* mc68kcpu);
1414static void m68k_op_or_16_er_ai(m68000_base_device* mc68kcpu);
1415static void m68k_op_or_16_er_pi(m68000_base_device* mc68kcpu);
1416static void m68k_op_or_16_er_pd(m68000_base_device* mc68kcpu);
1417static void m68k_op_or_16_er_di(m68000_base_device* mc68kcpu);
1418static void m68k_op_or_16_er_ix(m68000_base_device* mc68kcpu);
1419static void m68k_op_or_16_er_aw(m68000_base_device* mc68kcpu);
1420static void m68k_op_or_16_er_al(m68000_base_device* mc68kcpu);
1421static void m68k_op_or_16_er_pcdi(m68000_base_device* mc68kcpu);
1422static void m68k_op_or_16_er_pcix(m68000_base_device* mc68kcpu);
1423static void m68k_op_or_16_er_i(m68000_base_device* mc68kcpu);
1424static void m68k_op_or_32_er_d(m68000_base_device* mc68kcpu);
1425static void m68k_op_or_32_er_ai(m68000_base_device* mc68kcpu);
1426static void m68k_op_or_32_er_pi(m68000_base_device* mc68kcpu);
1427static void m68k_op_or_32_er_pd(m68000_base_device* mc68kcpu);
1428static void m68k_op_or_32_er_di(m68000_base_device* mc68kcpu);
1429static void m68k_op_or_32_er_ix(m68000_base_device* mc68kcpu);
1430static void m68k_op_or_32_er_aw(m68000_base_device* mc68kcpu);
1431static void m68k_op_or_32_er_al(m68000_base_device* mc68kcpu);
1432static void m68k_op_or_32_er_pcdi(m68000_base_device* mc68kcpu);
1433static void m68k_op_or_32_er_pcix(m68000_base_device* mc68kcpu);
1434static void m68k_op_or_32_er_i(m68000_base_device* mc68kcpu);
1435static void m68k_op_or_8_re_ai(m68000_base_device* mc68kcpu);
1436static void m68k_op_or_8_re_pi(m68000_base_device* mc68kcpu);
1437static void m68k_op_or_8_re_pi7(m68000_base_device* mc68kcpu);
1438static void m68k_op_or_8_re_pd(m68000_base_device* mc68kcpu);
1439static void m68k_op_or_8_re_pd7(m68000_base_device* mc68kcpu);
1440static void m68k_op_or_8_re_di(m68000_base_device* mc68kcpu);
1441static void m68k_op_or_8_re_ix(m68000_base_device* mc68kcpu);
1442static void m68k_op_or_8_re_aw(m68000_base_device* mc68kcpu);
1443static void m68k_op_or_8_re_al(m68000_base_device* mc68kcpu);
1444static void m68k_op_or_16_re_ai(m68000_base_device* mc68kcpu);
1445static void m68k_op_or_16_re_pi(m68000_base_device* mc68kcpu);
1446static void m68k_op_or_16_re_pd(m68000_base_device* mc68kcpu);
1447static void m68k_op_or_16_re_di(m68000_base_device* mc68kcpu);
1448static void m68k_op_or_16_re_ix(m68000_base_device* mc68kcpu);
1449static void m68k_op_or_16_re_aw(m68000_base_device* mc68kcpu);
1450static void m68k_op_or_16_re_al(m68000_base_device* mc68kcpu);
1451static void m68k_op_or_32_re_ai(m68000_base_device* mc68kcpu);
1452static void m68k_op_or_32_re_pi(m68000_base_device* mc68kcpu);
1453static void m68k_op_or_32_re_pd(m68000_base_device* mc68kcpu);
1454static void m68k_op_or_32_re_di(m68000_base_device* mc68kcpu);
1455static void m68k_op_or_32_re_ix(m68000_base_device* mc68kcpu);
1456static void m68k_op_or_32_re_aw(m68000_base_device* mc68kcpu);
1457static void m68k_op_or_32_re_al(m68000_base_device* mc68kcpu);
1458static void m68k_op_ori_8_d(m68000_base_device* mc68kcpu);
1459static void m68k_op_ori_8_ai(m68000_base_device* mc68kcpu);
1460static void m68k_op_ori_8_pi(m68000_base_device* mc68kcpu);
1461static void m68k_op_ori_8_pi7(m68000_base_device* mc68kcpu);
1462static void m68k_op_ori_8_pd(m68000_base_device* mc68kcpu);
1463static void m68k_op_ori_8_pd7(m68000_base_device* mc68kcpu);
1464static void m68k_op_ori_8_di(m68000_base_device* mc68kcpu);
1465static void m68k_op_ori_8_ix(m68000_base_device* mc68kcpu);
1466static void m68k_op_ori_8_aw(m68000_base_device* mc68kcpu);
1467static void m68k_op_ori_8_al(m68000_base_device* mc68kcpu);
1468static void m68k_op_ori_16_d(m68000_base_device* mc68kcpu);
1469static void m68k_op_ori_16_ai(m68000_base_device* mc68kcpu);
1470static void m68k_op_ori_16_pi(m68000_base_device* mc68kcpu);
1471static void m68k_op_ori_16_pd(m68000_base_device* mc68kcpu);
1472static void m68k_op_ori_16_di(m68000_base_device* mc68kcpu);
1473static void m68k_op_ori_16_ix(m68000_base_device* mc68kcpu);
1474static void m68k_op_ori_16_aw(m68000_base_device* mc68kcpu);
1475static void m68k_op_ori_16_al(m68000_base_device* mc68kcpu);
1476static void m68k_op_ori_32_d(m68000_base_device* mc68kcpu);
1477static void m68k_op_ori_32_ai(m68000_base_device* mc68kcpu);
1478static void m68k_op_ori_32_pi(m68000_base_device* mc68kcpu);
1479static void m68k_op_ori_32_pd(m68000_base_device* mc68kcpu);
1480static void m68k_op_ori_32_di(m68000_base_device* mc68kcpu);
1481static void m68k_op_ori_32_ix(m68000_base_device* mc68kcpu);
1482static void m68k_op_ori_32_aw(m68000_base_device* mc68kcpu);
1483static void m68k_op_ori_32_al(m68000_base_device* mc68kcpu);
1484static void m68k_op_ori_16_toc(m68000_base_device* mc68kcpu);
1485static void m68k_op_ori_16_tos(m68000_base_device* mc68kcpu);
1486static void m68k_op_pack_16_rr(m68000_base_device* mc68kcpu);
1487static void m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu);
1488static void m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu);
1489static void m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcpu);
1490static void m68k_op_pack_16_mm(m68000_base_device* mc68kcpu);
1491static void m68k_op_pea_32_ai(m68000_base_device* mc68kcpu);
1492static void m68k_op_pea_32_di(m68000_base_device* mc68kcpu);
1493static void m68k_op_pea_32_ix(m68000_base_device* mc68kcpu);
1494static void m68k_op_pea_32_aw(m68000_base_device* mc68kcpu);
1495static void m68k_op_pea_32_al(m68000_base_device* mc68kcpu);
1496static void m68k_op_pea_32_pcdi(m68000_base_device* mc68kcpu);
1497static void m68k_op_pea_32_pcix(m68000_base_device* mc68kcpu);
1498static void m68k_op_pflusha_32(m68000_base_device* mc68kcpu);
1499static void m68k_op_pflushan_32(m68000_base_device* mc68kcpu);
1500static void m68k_op_pmmu_32(m68000_base_device* mc68kcpu);
1501static void m68k_op_ptest_32(m68000_base_device* mc68kcpu);
1502static void m68k_op_reset(m68000_base_device* mc68kcpu);
1503static void m68k_op_ror_8_s(m68000_base_device* mc68kcpu);
1504static void m68k_op_ror_16_s(m68000_base_device* mc68kcpu);
1505static void m68k_op_ror_32_s(m68000_base_device* mc68kcpu);
1506static void m68k_op_ror_8_r(m68000_base_device* mc68kcpu);
1507static void m68k_op_ror_16_r(m68000_base_device* mc68kcpu);
1508static void m68k_op_ror_32_r(m68000_base_device* mc68kcpu);
1509static void m68k_op_ror_16_ai(m68000_base_device* mc68kcpu);
1510static void m68k_op_ror_16_pi(m68000_base_device* mc68kcpu);
1511static void m68k_op_ror_16_pd(m68000_base_device* mc68kcpu);
1512static void m68k_op_ror_16_di(m68000_base_device* mc68kcpu);
1513static void m68k_op_ror_16_ix(m68000_base_device* mc68kcpu);
1514static void m68k_op_ror_16_aw(m68000_base_device* mc68kcpu);
1515static void m68k_op_ror_16_al(m68000_base_device* mc68kcpu);
1516static void m68k_op_rol_8_s(m68000_base_device* mc68kcpu);
1517static void m68k_op_rol_16_s(m68000_base_device* mc68kcpu);
1518static void m68k_op_rol_32_s(m68000_base_device* mc68kcpu);
1519static void m68k_op_rol_8_r(m68000_base_device* mc68kcpu);
1520static void m68k_op_rol_16_r(m68000_base_device* mc68kcpu);
1521static void m68k_op_rol_32_r(m68000_base_device* mc68kcpu);
1522static void m68k_op_rol_16_ai(m68000_base_device* mc68kcpu);
1523static void m68k_op_rol_16_pi(m68000_base_device* mc68kcpu);
1524static void m68k_op_rol_16_pd(m68000_base_device* mc68kcpu);
1525static void m68k_op_rol_16_di(m68000_base_device* mc68kcpu);
1526static void m68k_op_rol_16_ix(m68000_base_device* mc68kcpu);
1527static void m68k_op_rol_16_aw(m68000_base_device* mc68kcpu);
1528static void m68k_op_rol_16_al(m68000_base_device* mc68kcpu);
1529static void m68k_op_roxr_8_s(m68000_base_device* mc68kcpu);
1530static void m68k_op_roxr_16_s(m68000_base_device* mc68kcpu);
1531static void m68k_op_roxr_32_s(m68000_base_device* mc68kcpu);
1532static void m68k_op_roxr_8_r(m68000_base_device* mc68kcpu);
1533static void m68k_op_roxr_16_r(m68000_base_device* mc68kcpu);
1534static void m68k_op_roxr_32_r(m68000_base_device* mc68kcpu);
1535static void m68k_op_roxr_16_ai(m68000_base_device* mc68kcpu);
1536static void m68k_op_roxr_16_pi(m68000_base_device* mc68kcpu);
1537static void m68k_op_roxr_16_pd(m68000_base_device* mc68kcpu);
1538static void m68k_op_roxr_16_di(m68000_base_device* mc68kcpu);
1539static void m68k_op_roxr_16_ix(m68000_base_device* mc68kcpu);
1540static void m68k_op_roxr_16_aw(m68000_base_device* mc68kcpu);
1541static void m68k_op_roxr_16_al(m68000_base_device* mc68kcpu);
1542static void m68k_op_roxl_8_s(m68000_base_device* mc68kcpu);
1543static void m68k_op_roxl_16_s(m68000_base_device* mc68kcpu);
1544static void m68k_op_roxl_32_s(m68000_base_device* mc68kcpu);
1545static void m68k_op_roxl_8_r(m68000_base_device* mc68kcpu);
1546static void m68k_op_roxl_16_r(m68000_base_device* mc68kcpu);
1547static void m68k_op_roxl_32_r(m68000_base_device* mc68kcpu);
1548static void m68k_op_roxl_16_ai(m68000_base_device* mc68kcpu);
1549static void m68k_op_roxl_16_pi(m68000_base_device* mc68kcpu);
1550static void m68k_op_roxl_16_pd(m68000_base_device* mc68kcpu);
1551static void m68k_op_roxl_16_di(m68000_base_device* mc68kcpu);
1552static void m68k_op_roxl_16_ix(m68000_base_device* mc68kcpu);
1553static void m68k_op_roxl_16_aw(m68000_base_device* mc68kcpu);
1554static void m68k_op_roxl_16_al(m68000_base_device* mc68kcpu);
1555static void m68k_op_rtd_32(m68000_base_device* mc68kcpu);
1556static void m68k_op_rte_32(m68000_base_device* mc68kcpu);
1557static void m68k_op_rtm_32(m68000_base_device* mc68kcpu);
1558static void m68k_op_rtr_32(m68000_base_device* mc68kcpu);
1559static void m68k_op_rts_32(m68000_base_device* mc68kcpu);
1560static void m68k_op_sbcd_8_rr(m68000_base_device* mc68kcpu);
1561static void m68k_op_sbcd_8_mm_ax7(m68000_base_device* mc68kcpu);
1562static void m68k_op_sbcd_8_mm_ay7(m68000_base_device* mc68kcpu);
1563static void m68k_op_sbcd_8_mm_axy7(m68000_base_device* mc68kcpu);
1564static void m68k_op_sbcd_8_mm(m68000_base_device* mc68kcpu);
1565static void m68k_op_st_8_d(m68000_base_device* mc68kcpu);
1566static void m68k_op_st_8_ai(m68000_base_device* mc68kcpu);
1567static void m68k_op_st_8_pi(m68000_base_device* mc68kcpu);
1568static void m68k_op_st_8_pi7(m68000_base_device* mc68kcpu);
1569static void m68k_op_st_8_pd(m68000_base_device* mc68kcpu);
1570static void m68k_op_st_8_pd7(m68000_base_device* mc68kcpu);
1571static void m68k_op_st_8_di(m68000_base_device* mc68kcpu);
1572static void m68k_op_st_8_ix(m68000_base_device* mc68kcpu);
1573static void m68k_op_st_8_aw(m68000_base_device* mc68kcpu);
1574static void m68k_op_st_8_al(m68000_base_device* mc68kcpu);
1575static void m68k_op_sf_8_d(m68000_base_device* mc68kcpu);
1576static void m68k_op_sf_8_ai(m68000_base_device* mc68kcpu);
1577static void m68k_op_sf_8_pi(m68000_base_device* mc68kcpu);
1578static void m68k_op_sf_8_pi7(m68000_base_device* mc68kcpu);
1579static void m68k_op_sf_8_pd(m68000_base_device* mc68kcpu);
1580static void m68k_op_sf_8_pd7(m68000_base_device* mc68kcpu);
1581static void m68k_op_sf_8_di(m68000_base_device* mc68kcpu);
1582static void m68k_op_sf_8_ix(m68000_base_device* mc68kcpu);
1583static void m68k_op_sf_8_aw(m68000_base_device* mc68kcpu);
1584static void m68k_op_sf_8_al(m68000_base_device* mc68kcpu);
1585static void m68k_op_shi_8_d(m68000_base_device* mc68kcpu);
1586static void m68k_op_sls_8_d(m68000_base_device* mc68kcpu);
1587static void m68k_op_scc_8_d(m68000_base_device* mc68kcpu);
1588static void m68k_op_scs_8_d(m68000_base_device* mc68kcpu);
1589static void m68k_op_sne_8_d(m68000_base_device* mc68kcpu);
1590static void m68k_op_seq_8_d(m68000_base_device* mc68kcpu);
1591static void m68k_op_svc_8_d(m68000_base_device* mc68kcpu);
1592static void m68k_op_svs_8_d(m68000_base_device* mc68kcpu);
1593static void m68k_op_spl_8_d(m68000_base_device* mc68kcpu);
1594static void m68k_op_smi_8_d(m68000_base_device* mc68kcpu);
1595static void m68k_op_sge_8_d(m68000_base_device* mc68kcpu);
1596static void m68k_op_slt_8_d(m68000_base_device* mc68kcpu);
1597static void m68k_op_sgt_8_d(m68000_base_device* mc68kcpu);
1598static void m68k_op_sle_8_d(m68000_base_device* mc68kcpu);
1599static void m68k_op_shi_8_ai(m68000_base_device* mc68kcpu);
1600static void m68k_op_shi_8_pi(m68000_base_device* mc68kcpu);
1601static void m68k_op_shi_8_pi7(m68000_base_device* mc68kcpu);
1602static void m68k_op_shi_8_pd(m68000_base_device* mc68kcpu);
1603static void m68k_op_shi_8_pd7(m68000_base_device* mc68kcpu);
1604static void m68k_op_shi_8_di(m68000_base_device* mc68kcpu);
1605static void m68k_op_shi_8_ix(m68000_base_device* mc68kcpu);
1606static void m68k_op_shi_8_aw(m68000_base_device* mc68kcpu);
1607static void m68k_op_shi_8_al(m68000_base_device* mc68kcpu);
1608static void m68k_op_sls_8_ai(m68000_base_device* mc68kcpu);
1609static void m68k_op_sls_8_pi(m68000_base_device* mc68kcpu);
1610static void m68k_op_sls_8_pi7(m68000_base_device* mc68kcpu);
1611static void m68k_op_sls_8_pd(m68000_base_device* mc68kcpu);
1612static void m68k_op_sls_8_pd7(m68000_base_device* mc68kcpu);
1613static void m68k_op_sls_8_di(m68000_base_device* mc68kcpu);
1614static void m68k_op_sls_8_ix(m68000_base_device* mc68kcpu);
1615static void m68k_op_sls_8_aw(m68000_base_device* mc68kcpu);
1616static void m68k_op_sls_8_al(m68000_base_device* mc68kcpu);
1617static void m68k_op_scc_8_ai(m68000_base_device* mc68kcpu);
1618static void m68k_op_scc_8_pi(m68000_base_device* mc68kcpu);
1619static void m68k_op_scc_8_pi7(m68000_base_device* mc68kcpu);
1620static void m68k_op_scc_8_pd(m68000_base_device* mc68kcpu);
1621static void m68k_op_scc_8_pd7(m68000_base_device* mc68kcpu);
1622static void m68k_op_scc_8_di(m68000_base_device* mc68kcpu);
1623static void m68k_op_scc_8_ix(m68000_base_device* mc68kcpu);
1624static void m68k_op_scc_8_aw(m68000_base_device* mc68kcpu);
1625static void m68k_op_scc_8_al(m68000_base_device* mc68kcpu);
1626static void m68k_op_scs_8_ai(m68000_base_device* mc68kcpu);
1627static void m68k_op_scs_8_pi(m68000_base_device* mc68kcpu);
1628static void m68k_op_scs_8_pi7(m68000_base_device* mc68kcpu);
1629static void m68k_op_scs_8_pd(m68000_base_device* mc68kcpu);
1630static void m68k_op_scs_8_pd7(m68000_base_device* mc68kcpu);
1631static void m68k_op_scs_8_di(m68000_base_device* mc68kcpu);
1632static void m68k_op_scs_8_ix(m68000_base_device* mc68kcpu);
1633static void m68k_op_scs_8_aw(m68000_base_device* mc68kcpu);
1634static void m68k_op_scs_8_al(m68000_base_device* mc68kcpu);
1635static void m68k_op_sne_8_ai(m68000_base_device* mc68kcpu);
1636static void m68k_op_sne_8_pi(m68000_base_device* mc68kcpu);
1637static void m68k_op_sne_8_pi7(m68000_base_device* mc68kcpu);
1638static void m68k_op_sne_8_pd(m68000_base_device* mc68kcpu);
1639static void m68k_op_sne_8_pd7(m68000_base_device* mc68kcpu);
1640static void m68k_op_sne_8_di(m68000_base_device* mc68kcpu);
1641static void m68k_op_sne_8_ix(m68000_base_device* mc68kcpu);
1642static void m68k_op_sne_8_aw(m68000_base_device* mc68kcpu);
1643static void m68k_op_sne_8_al(m68000_base_device* mc68kcpu);
1644static void m68k_op_seq_8_ai(m68000_base_device* mc68kcpu);
1645static void m68k_op_seq_8_pi(m68000_base_device* mc68kcpu);
1646static void m68k_op_seq_8_pi7(m68000_base_device* mc68kcpu);
1647static void m68k_op_seq_8_pd(m68000_base_device* mc68kcpu);
1648static void m68k_op_seq_8_pd7(m68000_base_device* mc68kcpu);
1649static void m68k_op_seq_8_di(m68000_base_device* mc68kcpu);
1650static void m68k_op_seq_8_ix(m68000_base_device* mc68kcpu);
1651static void m68k_op_seq_8_aw(m68000_base_device* mc68kcpu);
1652static void m68k_op_seq_8_al(m68000_base_device* mc68kcpu);
1653static void m68k_op_svc_8_ai(m68000_base_device* mc68kcpu);
1654static void m68k_op_svc_8_pi(m68000_base_device* mc68kcpu);
1655static void m68k_op_svc_8_pi7(m68000_base_device* mc68kcpu);
1656static void m68k_op_svc_8_pd(m68000_base_device* mc68kcpu);
1657static void m68k_op_svc_8_pd7(m68000_base_device* mc68kcpu);
1658static void m68k_op_svc_8_di(m68000_base_device* mc68kcpu);
1659static void m68k_op_svc_8_ix(m68000_base_device* mc68kcpu);
1660static void m68k_op_svc_8_aw(m68000_base_device* mc68kcpu);
1661static void m68k_op_svc_8_al(m68000_base_device* mc68kcpu);
1662static void m68k_op_svs_8_ai(m68000_base_device* mc68kcpu);
1663static void m68k_op_svs_8_pi(m68000_base_device* mc68kcpu);
1664static void m68k_op_svs_8_pi7(m68000_base_device* mc68kcpu);
1665static void m68k_op_svs_8_pd(m68000_base_device* mc68kcpu);
1666static void m68k_op_svs_8_pd7(m68000_base_device* mc68kcpu);
1667static void m68k_op_svs_8_di(m68000_base_device* mc68kcpu);
1668static void m68k_op_svs_8_ix(m68000_base_device* mc68kcpu);
1669static void m68k_op_svs_8_aw(m68000_base_device* mc68kcpu);
1670static void m68k_op_svs_8_al(m68000_base_device* mc68kcpu);
1671static void m68k_op_spl_8_ai(m68000_base_device* mc68kcpu);
1672static void m68k_op_spl_8_pi(m68000_base_device* mc68kcpu);
1673static void m68k_op_spl_8_pi7(m68000_base_device* mc68kcpu);
1674static void m68k_op_spl_8_pd(m68000_base_device* mc68kcpu);
1675static void m68k_op_spl_8_pd7(m68000_base_device* mc68kcpu);
1676static void m68k_op_spl_8_di(m68000_base_device* mc68kcpu);
1677static void m68k_op_spl_8_ix(m68000_base_device* mc68kcpu);
1678static void m68k_op_spl_8_aw(m68000_base_device* mc68kcpu);
1679static void m68k_op_spl_8_al(m68000_base_device* mc68kcpu);
1680static void m68k_op_smi_8_ai(m68000_base_device* mc68kcpu);
1681static void m68k_op_smi_8_pi(m68000_base_device* mc68kcpu);
1682static void m68k_op_smi_8_pi7(m68000_base_device* mc68kcpu);
1683static void m68k_op_smi_8_pd(m68000_base_device* mc68kcpu);
1684static void m68k_op_smi_8_pd7(m68000_base_device* mc68kcpu);
1685static void m68k_op_smi_8_di(m68000_base_device* mc68kcpu);
1686static void m68k_op_smi_8_ix(m68000_base_device* mc68kcpu);
1687static void m68k_op_smi_8_aw(m68000_base_device* mc68kcpu);
1688static void m68k_op_smi_8_al(m68000_base_device* mc68kcpu);
1689static void m68k_op_sge_8_ai(m68000_base_device* mc68kcpu);
1690static void m68k_op_sge_8_pi(m68000_base_device* mc68kcpu);
1691static void m68k_op_sge_8_pi7(m68000_base_device* mc68kcpu);
1692static void m68k_op_sge_8_pd(m68000_base_device* mc68kcpu);
1693static void m68k_op_sge_8_pd7(m68000_base_device* mc68kcpu);
1694static void m68k_op_sge_8_di(m68000_base_device* mc68kcpu);
1695static void m68k_op_sge_8_ix(m68000_base_device* mc68kcpu);
1696static void m68k_op_sge_8_aw(m68000_base_device* mc68kcpu);
1697static void m68k_op_sge_8_al(m68000_base_device* mc68kcpu);
1698static void m68k_op_slt_8_ai(m68000_base_device* mc68kcpu);
1699static void m68k_op_slt_8_pi(m68000_base_device* mc68kcpu);
1700static void m68k_op_slt_8_pi7(m68000_base_device* mc68kcpu);
1701static void m68k_op_slt_8_pd(m68000_base_device* mc68kcpu);
1702static void m68k_op_slt_8_pd7(m68000_base_device* mc68kcpu);
1703static void m68k_op_slt_8_di(m68000_base_device* mc68kcpu);
1704static void m68k_op_slt_8_ix(m68000_base_device* mc68kcpu);
1705static void m68k_op_slt_8_aw(m68000_base_device* mc68kcpu);
1706static void m68k_op_slt_8_al(m68000_base_device* mc68kcpu);
1707static void m68k_op_sgt_8_ai(m68000_base_device* mc68kcpu);
1708static void m68k_op_sgt_8_pi(m68000_base_device* mc68kcpu);
1709static void m68k_op_sgt_8_pi7(m68000_base_device* mc68kcpu);
1710static void m68k_op_sgt_8_pd(m68000_base_device* mc68kcpu);
1711static void m68k_op_sgt_8_pd7(m68000_base_device* mc68kcpu);
1712static void m68k_op_sgt_8_di(m68000_base_device* mc68kcpu);
1713static void m68k_op_sgt_8_ix(m68000_base_device* mc68kcpu);
1714static void m68k_op_sgt_8_aw(m68000_base_device* mc68kcpu);
1715static void m68k_op_sgt_8_al(m68000_base_device* mc68kcpu);
1716static void m68k_op_sle_8_ai(m68000_base_device* mc68kcpu);
1717static void m68k_op_sle_8_pi(m68000_base_device* mc68kcpu);
1718static void m68k_op_sle_8_pi7(m68000_base_device* mc68kcpu);
1719static void m68k_op_sle_8_pd(m68000_base_device* mc68kcpu);
1720static void m68k_op_sle_8_pd7(m68000_base_device* mc68kcpu);
1721static void m68k_op_sle_8_di(m68000_base_device* mc68kcpu);
1722static void m68k_op_sle_8_ix(m68000_base_device* mc68kcpu);
1723static void m68k_op_sle_8_aw(m68000_base_device* mc68kcpu);
1724static void m68k_op_sle_8_al(m68000_base_device* mc68kcpu);
1725static void m68k_op_stop(m68000_base_device* mc68kcpu);
1726static void m68k_op_sub_8_er_d(m68000_base_device* mc68kcpu);
1727static void m68k_op_sub_8_er_ai(m68000_base_device* mc68kcpu);
1728static void m68k_op_sub_8_er_pi(m68000_base_device* mc68kcpu);
1729static void m68k_op_sub_8_er_pi7(m68000_base_device* mc68kcpu);
1730static void m68k_op_sub_8_er_pd(m68000_base_device* mc68kcpu);
1731static void m68k_op_sub_8_er_pd7(m68000_base_device* mc68kcpu);
1732static void m68k_op_sub_8_er_di(m68000_base_device* mc68kcpu);
1733static void m68k_op_sub_8_er_ix(m68000_base_device* mc68kcpu);
1734static void m68k_op_sub_8_er_aw(m68000_base_device* mc68kcpu);
1735static void m68k_op_sub_8_er_al(m68000_base_device* mc68kcpu);
1736static void m68k_op_sub_8_er_pcdi(m68000_base_device* mc68kcpu);
1737static void m68k_op_sub_8_er_pcix(m68000_base_device* mc68kcpu);
1738static void m68k_op_sub_8_er_i(m68000_base_device* mc68kcpu);
1739static void m68k_op_sub_16_er_d(m68000_base_device* mc68kcpu);
1740static void m68k_op_sub_16_er_a(m68000_base_device* mc68kcpu);
1741static void m68k_op_sub_16_er_ai(m68000_base_device* mc68kcpu);
1742static void m68k_op_sub_16_er_pi(m68000_base_device* mc68kcpu);
1743static void m68k_op_sub_16_er_pd(m68000_base_device* mc68kcpu);
1744static void m68k_op_sub_16_er_di(m68000_base_device* mc68kcpu);
1745static void m68k_op_sub_16_er_ix(m68000_base_device* mc68kcpu);
1746static void m68k_op_sub_16_er_aw(m68000_base_device* mc68kcpu);
1747static void m68k_op_sub_16_er_al(m68000_base_device* mc68kcpu);
1748static void m68k_op_sub_16_er_pcdi(m68000_base_device* mc68kcpu);
1749static void m68k_op_sub_16_er_pcix(m68000_base_device* mc68kcpu);
1750static void m68k_op_sub_16_er_i(m68000_base_device* mc68kcpu);
1751static void m68k_op_sub_32_er_d(m68000_base_device* mc68kcpu);
1752static void m68k_op_sub_32_er_a(m68000_base_device* mc68kcpu);
1753static void m68k_op_sub_32_er_ai(m68000_base_device* mc68kcpu);
1754static void m68k_op_sub_32_er_pi(m68000_base_device* mc68kcpu);
1755static void m68k_op_sub_32_er_pd(m68000_base_device* mc68kcpu);
1756static void m68k_op_sub_32_er_di(m68000_base_device* mc68kcpu);
1757static void m68k_op_sub_32_er_ix(m68000_base_device* mc68kcpu);
1758static void m68k_op_sub_32_er_aw(m68000_base_device* mc68kcpu);
1759static void m68k_op_sub_32_er_al(m68000_base_device* mc68kcpu);
1760static void m68k_op_sub_32_er_pcdi(m68000_base_device* mc68kcpu);
1761static void m68k_op_sub_32_er_pcix(m68000_base_device* mc68kcpu);
1762static void m68k_op_sub_32_er_i(m68000_base_device* mc68kcpu);
1763static void m68k_op_sub_8_re_ai(m68000_base_device* mc68kcpu);
1764static void m68k_op_sub_8_re_pi(m68000_base_device* mc68kcpu);
1765static void m68k_op_sub_8_re_pi7(m68000_base_device* mc68kcpu);
1766static void m68k_op_sub_8_re_pd(m68000_base_device* mc68kcpu);
1767static void m68k_op_sub_8_re_pd7(m68000_base_device* mc68kcpu);
1768static void m68k_op_sub_8_re_di(m68000_base_device* mc68kcpu);
1769static void m68k_op_sub_8_re_ix(m68000_base_device* mc68kcpu);
1770static void m68k_op_sub_8_re_aw(m68000_base_device* mc68kcpu);
1771static void m68k_op_sub_8_re_al(m68000_base_device* mc68kcpu);
1772static void m68k_op_sub_16_re_ai(m68000_base_device* mc68kcpu);
1773static void m68k_op_sub_16_re_pi(m68000_base_device* mc68kcpu);
1774static void m68k_op_sub_16_re_pd(m68000_base_device* mc68kcpu);
1775static void m68k_op_sub_16_re_di(m68000_base_device* mc68kcpu);
1776static void m68k_op_sub_16_re_ix(m68000_base_device* mc68kcpu);
1777static void m68k_op_sub_16_re_aw(m68000_base_device* mc68kcpu);
1778static void m68k_op_sub_16_re_al(m68000_base_device* mc68kcpu);
1779static void m68k_op_sub_32_re_ai(m68000_base_device* mc68kcpu);
1780static void m68k_op_sub_32_re_pi(m68000_base_device* mc68kcpu);
1781static void m68k_op_sub_32_re_pd(m68000_base_device* mc68kcpu);
1782static void m68k_op_sub_32_re_di(m68000_base_device* mc68kcpu);
1783static void m68k_op_sub_32_re_ix(m68000_base_device* mc68kcpu);
1784static void m68k_op_sub_32_re_aw(m68000_base_device* mc68kcpu);
1785static void m68k_op_sub_32_re_al(m68000_base_device* mc68kcpu);
1786static void m68k_op_suba_16_d(m68000_base_device* mc68kcpu);
1787static void m68k_op_suba_16_a(m68000_base_device* mc68kcpu);
1788static void m68k_op_suba_16_ai(m68000_base_device* mc68kcpu);
1789static void m68k_op_suba_16_pi(m68000_base_device* mc68kcpu);
1790static void m68k_op_suba_16_pd(m68000_base_device* mc68kcpu);
1791static void m68k_op_suba_16_di(m68000_base_device* mc68kcpu);
1792static void m68k_op_suba_16_ix(m68000_base_device* mc68kcpu);
1793static void m68k_op_suba_16_aw(m68000_base_device* mc68kcpu);
1794static void m68k_op_suba_16_al(m68000_base_device* mc68kcpu);
1795static void m68k_op_suba_16_pcdi(m68000_base_device* mc68kcpu);
1796static void m68k_op_suba_16_pcix(m68000_base_device* mc68kcpu);
1797static void m68k_op_suba_16_i(m68000_base_device* mc68kcpu);
1798static void m68k_op_suba_32_d(m68000_base_device* mc68kcpu);
1799static void m68k_op_suba_32_a(m68000_base_device* mc68kcpu);
1800static void m68k_op_suba_32_ai(m68000_base_device* mc68kcpu);
1801static void m68k_op_suba_32_pi(m68000_base_device* mc68kcpu);
1802static void m68k_op_suba_32_pd(m68000_base_device* mc68kcpu);
1803static void m68k_op_suba_32_di(m68000_base_device* mc68kcpu);
1804static void m68k_op_suba_32_ix(m68000_base_device* mc68kcpu);
1805static void m68k_op_suba_32_aw(m68000_base_device* mc68kcpu);
1806static void m68k_op_suba_32_al(m68000_base_device* mc68kcpu);
1807static void m68k_op_suba_32_pcdi(m68000_base_device* mc68kcpu);
1808static void m68k_op_suba_32_pcix(m68000_base_device* mc68kcpu);
1809static void m68k_op_suba_32_i(m68000_base_device* mc68kcpu);
1810static void m68k_op_subi_8_d(m68000_base_device* mc68kcpu);
1811static void m68k_op_subi_8_ai(m68000_base_device* mc68kcpu);
1812static void m68k_op_subi_8_pi(m68000_base_device* mc68kcpu);
1813static void m68k_op_subi_8_pi7(m68000_base_device* mc68kcpu);
1814static void m68k_op_subi_8_pd(m68000_base_device* mc68kcpu);
1815static void m68k_op_subi_8_pd7(m68000_base_device* mc68kcpu);
1816static void m68k_op_subi_8_di(m68000_base_device* mc68kcpu);
1817static void m68k_op_subi_8_ix(m68000_base_device* mc68kcpu);
1818static void m68k_op_subi_8_aw(m68000_base_device* mc68kcpu);
1819static void m68k_op_subi_8_al(m68000_base_device* mc68kcpu);
1820static void m68k_op_subi_16_d(m68000_base_device* mc68kcpu);
1821static void m68k_op_subi_16_ai(m68000_base_device* mc68kcpu);
1822static void m68k_op_subi_16_pi(m68000_base_device* mc68kcpu);
1823static void m68k_op_subi_16_pd(m68000_base_device* mc68kcpu);
1824static void m68k_op_subi_16_di(m68000_base_device* mc68kcpu);
1825static void m68k_op_subi_16_ix(m68000_base_device* mc68kcpu);
1826static void m68k_op_subi_16_aw(m68000_base_device* mc68kcpu);
1827static void m68k_op_subi_16_al(m68000_base_device* mc68kcpu);
1828static void m68k_op_subi_32_d(m68000_base_device* mc68kcpu);
1829static void m68k_op_subi_32_ai(m68000_base_device* mc68kcpu);
1830static void m68k_op_subi_32_pi(m68000_base_device* mc68kcpu);
1831static void m68k_op_subi_32_pd(m68000_base_device* mc68kcpu);
1832static void m68k_op_subi_32_di(m68000_base_device* mc68kcpu);
1833static void m68k_op_subi_32_ix(m68000_base_device* mc68kcpu);
1834static void m68k_op_subi_32_aw(m68000_base_device* mc68kcpu);
1835static void m68k_op_subi_32_al(m68000_base_device* mc68kcpu);
1836static void m68k_op_subq_8_d(m68000_base_device* mc68kcpu);
1837static void m68k_op_subq_8_ai(m68000_base_device* mc68kcpu);
1838static void m68k_op_subq_8_pi(m68000_base_device* mc68kcpu);
1839static void m68k_op_subq_8_pi7(m68000_base_device* mc68kcpu);
1840static void m68k_op_subq_8_pd(m68000_base_device* mc68kcpu);
1841static void m68k_op_subq_8_pd7(m68000_base_device* mc68kcpu);
1842static void m68k_op_subq_8_di(m68000_base_device* mc68kcpu);
1843static void m68k_op_subq_8_ix(m68000_base_device* mc68kcpu);
1844static void m68k_op_subq_8_aw(m68000_base_device* mc68kcpu);
1845static void m68k_op_subq_8_al(m68000_base_device* mc68kcpu);
1846static void m68k_op_subq_16_d(m68000_base_device* mc68kcpu);
1847static void m68k_op_subq_16_a(m68000_base_device* mc68kcpu);
1848static void m68k_op_subq_16_ai(m68000_base_device* mc68kcpu);
1849static void m68k_op_subq_16_pi(m68000_base_device* mc68kcpu);
1850static void m68k_op_subq_16_pd(m68000_base_device* mc68kcpu);
1851static void m68k_op_subq_16_di(m68000_base_device* mc68kcpu);
1852static void m68k_op_subq_16_ix(m68000_base_device* mc68kcpu);
1853static void m68k_op_subq_16_aw(m68000_base_device* mc68kcpu);
1854static void m68k_op_subq_16_al(m68000_base_device* mc68kcpu);
1855static void m68k_op_subq_32_d(m68000_base_device* mc68kcpu);
1856static void m68k_op_subq_32_a(m68000_base_device* mc68kcpu);
1857static void m68k_op_subq_32_ai(m68000_base_device* mc68kcpu);
1858static void m68k_op_subq_32_pi(m68000_base_device* mc68kcpu);
1859static void m68k_op_subq_32_pd(m68000_base_device* mc68kcpu);
1860static void m68k_op_subq_32_di(m68000_base_device* mc68kcpu);
1861static void m68k_op_subq_32_ix(m68000_base_device* mc68kcpu);
1862static void m68k_op_subq_32_aw(m68000_base_device* mc68kcpu);
1863static void m68k_op_subq_32_al(m68000_base_device* mc68kcpu);
1864static void m68k_op_subx_8_rr(m68000_base_device* mc68kcpu);
1865static void m68k_op_subx_16_rr(m68000_base_device* mc68kcpu);
1866static void m68k_op_subx_32_rr(m68000_base_device* mc68kcpu);
1867static void m68k_op_subx_8_mm_ax7(m68000_base_device* mc68kcpu);
1868static void m68k_op_subx_8_mm_ay7(m68000_base_device* mc68kcpu);
1869static void m68k_op_subx_8_mm_axy7(m68000_base_device* mc68kcpu);
1870static void m68k_op_subx_8_mm(m68000_base_device* mc68kcpu);
1871static void m68k_op_subx_16_mm(m68000_base_device* mc68kcpu);
1872static void m68k_op_subx_32_mm(m68000_base_device* mc68kcpu);
1873static void m68k_op_swap_32(m68000_base_device* mc68kcpu);
1874static void m68k_op_tas_8_d(m68000_base_device* mc68kcpu);
1875static void m68k_op_tas_8_ai(m68000_base_device* mc68kcpu);
1876static void m68k_op_tas_8_pi(m68000_base_device* mc68kcpu);
1877static void m68k_op_tas_8_pi7(m68000_base_device* mc68kcpu);
1878static void m68k_op_tas_8_pd(m68000_base_device* mc68kcpu);
1879static void m68k_op_tas_8_pd7(m68000_base_device* mc68kcpu);
1880static void m68k_op_tas_8_di(m68000_base_device* mc68kcpu);
1881static void m68k_op_tas_8_ix(m68000_base_device* mc68kcpu);
1882static void m68k_op_tas_8_aw(m68000_base_device* mc68kcpu);
1883static void m68k_op_tas_8_al(m68000_base_device* mc68kcpu);
1884static void m68k_op_trap(m68000_base_device* mc68kcpu);
1885static void m68k_op_trapt(m68000_base_device* mc68kcpu);
1886static void m68k_op_trapt_16(m68000_base_device* mc68kcpu);
1887static void m68k_op_trapt_32(m68000_base_device* mc68kcpu);
1888static void m68k_op_trapf(m68000_base_device* mc68kcpu);
1889static void m68k_op_trapf_16(m68000_base_device* mc68kcpu);
1890static void m68k_op_trapf_32(m68000_base_device* mc68kcpu);
1891static void m68k_op_traphi(m68000_base_device* mc68kcpu);
1892static void m68k_op_trapls(m68000_base_device* mc68kcpu);
1893static void m68k_op_trapcc(m68000_base_device* mc68kcpu);
1894static void m68k_op_trapcs(m68000_base_device* mc68kcpu);
1895static void m68k_op_trapne(m68000_base_device* mc68kcpu);
1896static void m68k_op_trapeq(m68000_base_device* mc68kcpu);
1897static void m68k_op_trapvc(m68000_base_device* mc68kcpu);
1898static void m68k_op_trapvs(m68000_base_device* mc68kcpu);
1899static void m68k_op_trappl(m68000_base_device* mc68kcpu);
1900static void m68k_op_trapmi(m68000_base_device* mc68kcpu);
1901static void m68k_op_trapge(m68000_base_device* mc68kcpu);
1902static void m68k_op_traplt(m68000_base_device* mc68kcpu);
1903static void m68k_op_trapgt(m68000_base_device* mc68kcpu);
1904static void m68k_op_traple(m68000_base_device* mc68kcpu);
1905static void m68k_op_traphi_16(m68000_base_device* mc68kcpu);
1906static void m68k_op_trapls_16(m68000_base_device* mc68kcpu);
1907static void m68k_op_trapcc_16(m68000_base_device* mc68kcpu);
1908static void m68k_op_trapcs_16(m68000_base_device* mc68kcpu);
1909static void m68k_op_trapne_16(m68000_base_device* mc68kcpu);
1910static void m68k_op_trapeq_16(m68000_base_device* mc68kcpu);
1911static void m68k_op_trapvc_16(m68000_base_device* mc68kcpu);
1912static void m68k_op_trapvs_16(m68000_base_device* mc68kcpu);
1913static void m68k_op_trappl_16(m68000_base_device* mc68kcpu);
1914static void m68k_op_trapmi_16(m68000_base_device* mc68kcpu);
1915static void m68k_op_trapge_16(m68000_base_device* mc68kcpu);
1916static void m68k_op_traplt_16(m68000_base_device* mc68kcpu);
1917static void m68k_op_trapgt_16(m68000_base_device* mc68kcpu);
1918static void m68k_op_traple_16(m68000_base_device* mc68kcpu);
1919static void m68k_op_traphi_32(m68000_base_device* mc68kcpu);
1920static void m68k_op_trapls_32(m68000_base_device* mc68kcpu);
1921static void m68k_op_trapcc_32(m68000_base_device* mc68kcpu);
1922static void m68k_op_trapcs_32(m68000_base_device* mc68kcpu);
1923static void m68k_op_trapne_32(m68000_base_device* mc68kcpu);
1924static void m68k_op_trapeq_32(m68000_base_device* mc68kcpu);
1925static void m68k_op_trapvc_32(m68000_base_device* mc68kcpu);
1926static void m68k_op_trapvs_32(m68000_base_device* mc68kcpu);
1927static void m68k_op_trappl_32(m68000_base_device* mc68kcpu);
1928static void m68k_op_trapmi_32(m68000_base_device* mc68kcpu);
1929static void m68k_op_trapge_32(m68000_base_device* mc68kcpu);
1930static void m68k_op_traplt_32(m68000_base_device* mc68kcpu);
1931static void m68k_op_trapgt_32(m68000_base_device* mc68kcpu);
1932static void m68k_op_traple_32(m68000_base_device* mc68kcpu);
1933static void m68k_op_trapv(m68000_base_device* mc68kcpu);
1934static void m68k_op_tst_8_d(m68000_base_device* mc68kcpu);
1935static void m68k_op_tst_8_ai(m68000_base_device* mc68kcpu);
1936static void m68k_op_tst_8_pi(m68000_base_device* mc68kcpu);
1937static void m68k_op_tst_8_pi7(m68000_base_device* mc68kcpu);
1938static void m68k_op_tst_8_pd(m68000_base_device* mc68kcpu);
1939static void m68k_op_tst_8_pd7(m68000_base_device* mc68kcpu);
1940static void m68k_op_tst_8_di(m68000_base_device* mc68kcpu);
1941static void m68k_op_tst_8_ix(m68000_base_device* mc68kcpu);
1942static void m68k_op_tst_8_aw(m68000_base_device* mc68kcpu);
1943static void m68k_op_tst_8_al(m68000_base_device* mc68kcpu);
1944static void m68k_op_tst_8_pcdi(m68000_base_device* mc68kcpu);
1945static void m68k_op_tst_8_pcix(m68000_base_device* mc68kcpu);
1946static void m68k_op_tst_8_i(m68000_base_device* mc68kcpu);
1947static void m68k_op_tst_16_d(m68000_base_device* mc68kcpu);
1948static void m68k_op_tst_16_a(m68000_base_device* mc68kcpu);
1949static void m68k_op_tst_16_ai(m68000_base_device* mc68kcpu);
1950static void m68k_op_tst_16_pi(m68000_base_device* mc68kcpu);
1951static void m68k_op_tst_16_pd(m68000_base_device* mc68kcpu);
1952static void m68k_op_tst_16_di(m68000_base_device* mc68kcpu);
1953static void m68k_op_tst_16_ix(m68000_base_device* mc68kcpu);
1954static void m68k_op_tst_16_aw(m68000_base_device* mc68kcpu);
1955static void m68k_op_tst_16_al(m68000_base_device* mc68kcpu);
1956static void m68k_op_tst_16_pcdi(m68000_base_device* mc68kcpu);
1957static void m68k_op_tst_16_pcix(m68000_base_device* mc68kcpu);
1958static void m68k_op_tst_16_i(m68000_base_device* mc68kcpu);
1959static void m68k_op_tst_32_d(m68000_base_device* mc68kcpu);
1960static void m68k_op_tst_32_a(m68000_base_device* mc68kcpu);
1961static void m68k_op_tst_32_ai(m68000_base_device* mc68kcpu);
1962static void m68k_op_tst_32_pi(m68000_base_device* mc68kcpu);
1963static void m68k_op_tst_32_pd(m68000_base_device* mc68kcpu);
1964static void m68k_op_tst_32_di(m68000_base_device* mc68kcpu);
1965static void m68k_op_tst_32_ix(m68000_base_device* mc68kcpu);
1966static void m68k_op_tst_32_aw(m68000_base_device* mc68kcpu);
1967static void m68k_op_tst_32_al(m68000_base_device* mc68kcpu);
1968static void m68k_op_tst_32_pcdi(m68000_base_device* mc68kcpu);
1969static void m68k_op_tst_32_pcix(m68000_base_device* mc68kcpu);
1970static void m68k_op_tst_32_i(m68000_base_device* mc68kcpu);
1971static void m68k_op_unlk_32_a7(m68000_base_device* mc68kcpu);
1972static void m68k_op_unlk_32(m68000_base_device* mc68kcpu);
1973static void m68k_op_unpk_16_rr(m68000_base_device* mc68kcpu);
1974static void m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu);
1975static void m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu);
1976static void m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcpu);
1977static void m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu);
1978static void m68k_op_cinv_32(m68000_base_device* mc68kcpu);
1979static void m68k_op_cpush_32(m68000_base_device* mc68kcpu);
1980#else
1981/* Build the opcode handler table */
1982void m68ki_build_opcode_table(void);
1983
1984extern void (*m68ki_instruction_jump_table[][0x10000])(m68000_base_device *m68k); /* opcode handler jump table */
1985extern unsigned char m68ki_cycles[][0x10000];
1986
1987
1988/* ======================================================================== */
1989/* ============================== END OF FILE ============================= */
1990/* ======================================================================== */
1991
1992
1993#endif
trunk/src/emu/cpu/m68000/makefile
r0r245578
1# extension for executables
2EXE :=
3
4ifeq ($(OS),Windows_NT)
5EXE := .exe
6endif
7ifeq ($(OS),os2)
8EXE := .exe
9endif
10
11.PHONY: all clean
12
13all : m68kmake$(EXE) m68kops.c clean
14
15clean:
16   @echo Cleaning...
17   -@rm -f m68kmake$(EXE)
18   -@rm -f m68kmake.o
19   
20m68kmake.o: m68kmake.c
21   @echo $(notdir $<)
22   @gcc -x c++ -std=gnu++98 -o "$@" -c "$<"
23
24m68kmake$(EXE) : m68kmake.o
25   @echo Linking $@...
26   @g++ -lstdc++ $^ -o $@
27
28m68kops.c: m68kmake$(EXE)    m68k_in.c
29   @echo Generating M68K source files...
30   @m68kmake$(EXE) . m68k_in.c
31
trunk/src/emu/machine.c
r245577r245578
8585
8686#include <time.h>
8787
88#ifdef SDLMAME_EMSCRIPTEN
88#if defined(EMSCRIPTEN)
8989#include <emscripten.h>
9090
9191void js_set_main_loop(running_machine * machine);
r245577r245578
385385      {
386386         g_profiler.start(PROFILER_EXTRA);
387387
388         #if defined(EMSCRIPTEN)
388#if defined(EMSCRIPTEN)
389389         //break out to our async javascript loop and halt
390390         js_set_main_loop(this);
391         #endif
391#endif
392392
393393         manager().web()->serve();
394394
trunk/src/emu/machine/pci.c
r245577r245578
8181   status = 0x0000;
8282
8383   for(int i=0; i<6; i++) {
84      bank_infos[i].adr = 0;
84      bank_infos[i].adr = -1;
8585      bank_infos[i].size = 0;
8686      bank_infos[i].flags = 0;
8787      bank_reg_infos[i].bank = -1;
r245577r245578
257257{
258258   for(int i=0; i<bank_count; i++) {
259259      bank_info &bi = bank_infos[i];
260      if(!bi.adr)
260      if(bi.adr==-1)
261261         continue;
262262      if(UINT32(bi.adr) == UINT32(~(bi.size - 1)))
263263         continue;
trunk/src/emu/machine/vrc4373.c
r245577r245578
11#include "vrc4373.h"
22
3#define LOG_NILE            (1)
3#define LOG_NILE            (0)
44#define LOG_NILE_MASTER     (0)
5#define LOG_NILE_TARGET     (1)
5#define LOG_NILE_TARGET     (0)
66
77const device_type VRC4373      = &device_creator<vrc4373_device>;
88
r245577r245578
217217{
218218   UINT32 result = m_cpu->space(AS_PROGRAM).read_dword(m_target1_laddr | (offset*4), mem_mask);
219219   if (LOG_NILE_TARGET)
220      logerror("%06X:nile target1 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
220      logerror("%08X:nile target1 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
221221   return result;
222222}
223223WRITE32_MEMBER (vrc4373_device::target1_w)
224224{
225225   m_cpu->space(AS_PROGRAM).write_dword(m_target1_laddr | (offset*4), data, mem_mask);
226226   if (LOG_NILE_TARGET)
227      logerror("%06X:nile target1 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
227      logerror("%08X:nile target1 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
228228}
229229
230230// PCI Target Window 2
r245577r245578
232232{
233233   UINT32 result = m_cpu->space(AS_PROGRAM).read_dword(m_target2_laddr | (offset*4), mem_mask);
234234   if (LOG_NILE_TARGET)
235      logerror("%06X:nile target2 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
235      logerror("%08X:nile target2 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask);
236236   return result;
237237}
238238WRITE32_MEMBER (vrc4373_device::target2_w)
239239{
240240   m_cpu->space(AS_PROGRAM).write_dword(m_target2_laddr | (offset*4), data, mem_mask);
241241   if (LOG_NILE_TARGET)
242      logerror("%06X:nile target2 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
242      logerror("%08X:nile target2 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask);
243243}
244244
245// DMA Transfer
246void vrc4373_device::dma_transfer(int which)
247{
248   if (LOG_NILE)
249      logerror("%08X:nile Start dma PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
250   int pciSel = (m_cpu_regs[NREG_DMACR1+which*0xC] & DMA_MIO) ? AS_DATA : AS_IO;
251   UINT32 mem_mask = 0xffffffff;
252   while (m_cpu_regs[NREG_DMA_REM]>0) {
253      if (0 && LOG_NILE)
254         logerror("dma_transfer PCI: %08X Mem: %08X Words Remaining: %X\n", m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]);
255      if (m_cpu_regs[NREG_DMACR1+which*0xC]&DMA_RW) {
256         // Read data from PCI and write to local
257         m_cpu->space(AS_PROGRAM).write_dword(m_cpu_regs[NREG_DMA_CMAR], this->space(pciSel).read_dword(m_cpu_regs[NREG_DMA_CPAR], mem_mask), mem_mask);
258      } else {
259         // Read data from local and write to PCI
260         this->space(pciSel).write_dword(m_cpu_regs[NREG_DMA_CPAR], m_cpu->space(AS_PROGRAM).read_dword(m_cpu_regs[NREG_DMA_CMAR], mem_mask), mem_mask);
261      }
262      m_cpu_regs[NREG_DMA_CMAR] += 0x4;
263      m_cpu_regs[NREG_DMA_CPAR] += 0x4;
264      m_cpu_regs[NREG_DMA_REM]--;
265   }
266}   
245267// CPU I/F
246268READ32_MEMBER (vrc4373_device::cpu_if_r)
247269{
r245577r245578
253275      case NREG_PCICDR:
254276         result = config_data_r(space, offset);
255277         break;
278      case NREG_DMACR1:
279      case NREG_DMACR2:
280         // Clear busy and go on read
281         if (m_cpu_regs[NREG_DMA_REM]==0) {
282               int which = (offset-NREG_DMACR1)>>3;
283               m_cpu_regs[NREG_DMACR1+which*0xc] &= ~DMA_BUSY;
284               m_cpu_regs[NREG_DMACR1+which*0xc] &= ~DMA_GO;
285         }
286         break;
256287      default:
257288         break;
258289   }
r245577r245578
266297   if (LOG_NILE)
267298      logerror("%06X:nile write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
268299
269   UINT32 modData;
300   UINT32 modData, oldData;
301   oldData = m_cpu_regs[offset];
270302   COMBINE_DATA(&m_cpu_regs[offset]);
271303   switch (offset) {
272304      case NREG_PCIMW1:
r245577r245578
312344      case NREG_PCICDR:
313345         pci_host_device::config_data_w(space, offset, data);
314346         break;
347      case NREG_DMACR1:
348      case NREG_DMACR2:
349         // Start when DMA_GO bit is set
350         if (!(oldData & DMA_GO) && (data & DMA_GO)) {           
351            int which = (offset-NREG_DMACR1)>>3;
352            // Check to see DMA is not already started
353            if (!(data&DMA_BUSY)) {
354               // Set counts and address
355               m_cpu_regs[NREG_DMA_CPAR] = m_cpu_regs[NREG_DMAPCI1+which*0xC];
356               m_cpu_regs[NREG_DMA_CMAR] = m_cpu_regs[NREG_DMAMAR1+which*0xC];               
357               m_cpu_regs[NREG_DMA_REM] = (data & DMA_BLK_SIZE)>>2;
358               m_cpu_regs[NREG_DMACR1+which*0xc] |= DMA_BUSY;
359               // Start the transfer
360               dma_transfer(which);
361            }
362         }
363         break;
315364      case NREG_BMCR:
316365         if ((data>>3)&0x1) {
317366            m_ram_size = 1<<22;  // 4MB
trunk/src/emu/machine/vrc4373.h
r245577r245578
3838#define NREG_DRAMRCR        (0x058/4)
3939#define NREG_BOOTWP         (0x05C/4)
4040#define NREG_PCIEAR         (0x060/4)
41#define NREG_DMA_WR         (0x064/4)
41#define NREG_DMA_REM        (0x064/4)
4242#define NREG_DMA_CMAR       (0x068/4)
4343#define NREG_DMA_CPAR       (0x06C/4)
4444#define NREG_PCIRC          (0x070/4)
4545#define NREG_PCIEN          (0x074/4)
4646#define NREG_PMIR           (0x078/4)
4747
48#define DMA_BUSY            0x80000000
49#define DMA_INT_EN         0x40000000
50#define DMA_RW               0x20000000
51#define DMA_GO               0x10000000
52#define DMA_SUS               0x08000000
53#define DMA_INC             0x04000000
54#define DMA_MIO               0x02000000
55#define DMA_RST               0x01000000
56#define DMA_BLK_SIZE      0x000fffff
57
58
4859class vrc4373_device : public pci_host_device {
4960public:
5061   vrc4373_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
r245577r245578
8697   virtual const address_space_config *memory_space_config(address_spacenum spacenum) const;
8798   virtual void device_start();
8899   virtual void device_reset();
100   void dma_transfer(int which);
89101
90102private:
91103   cpu_device *m_cpu;
r245577r245578
108120
109121   UINT32 m_pci1_laddr, m_pci2_laddr, m_pci_io_laddr;
110122   UINT32 m_target1_laddr, m_target2_laddr;
123   
111124};
112125
113126
trunk/src/emu/sound/es1373.c
r245577r245578
11#include "es1373.h"
22
33#define LOG_ES            (1)
4#define LOG_ES_REG        (0)
45
6static MACHINE_CONFIG_FRAGMENT( es1373 )
7   MCFG_TIMER_DRIVER_ADD_PERIODIC("sound_timer", es1373_device, es_timer_callback,  attotime::from_hz(44100/16384))
8MACHINE_CONFIG_END
9
10machine_config_constructor es1373_device::device_mconfig_additions() const
11{
12   return MACHINE_CONFIG_NAME( es1373 );
13}
14
515const device_type ES1373 = &device_creator<es1373_device>;
616
717DEVICE_ADDRESS_MAP_START(map, 32, es1373_device)
r245577r245578
919ADDRESS_MAP_END
1020
1121es1373_device::es1373_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
12   : pci_device(mconfig, ES1373, "Creative Labs Ensoniq AudioPCI97 ES1373", tag, owner, clock, "es1373", __FILE__)
22   : pci_device(mconfig, ES1373, "Creative Labs Ensoniq AudioPCI97 ES1373", tag, owner, clock, "es1373", __FILE__),
23      m_irq_num(-1)
1324{
1425}
1526
27void es1373_device::set_irq_info(const char *tag, const int irq_num)
28{
29   m_cpu_tag = tag;
30   m_irq_num = irq_num;
31}
32
1633void es1373_device::device_start()
1734{
35   //m_cpu = machine().device<cpu_device>(":maincpu");
36   m_cpu = machine().device<cpu_device>(m_cpu_tag);
1837   pci_device::device_start();
1938   add_map(0x40, M_IO, FUNC(es1373_device::map));
2039}
r245577r245578
2544   memset(m_es_regs, 0, sizeof(m_es_regs));
2645   memset(m_ac97_regs, 0, sizeof(m_ac97_regs));
2746   m_ac97_regs[0] = 0x0800;
47   // Reset ADC channel info
48   m_adc.enable = false;
49   m_adc.int_en = false;
50   m_adc.loop_en = false;
51   m_adc.initialized = false;
52   m_adc.buf_count = 0;
53   m_adc.buf_size = 0;
54   m_adc.buf_rptr = 0x20;
55   m_adc.buf_wptr = 0x20;
56   // Reset DAC1 channel info
57   m_dac1.enable = false;
58   m_dac1.int_en = false;
59   m_dac1.loop_en = false;
60   m_dac1.initialized = false;
61   m_dac1.buf_count = 0;
62   m_dac1.buf_size = 0;
63   m_dac1.buf_rptr = 0x0;
64   m_dac1.buf_wptr = 0x0;
65   // Reset DAC2 channel info
66   m_dac2.enable = false;
67   m_dac2.int_en = false;
68   m_dac2.loop_en = false;
69   m_dac2.initialized = false;
70   m_dac2.buf_count = 0;
71   m_dac2.buf_size = 0;
72   m_dac2.buf_rptr = 0x10;
73   m_dac2.buf_wptr = 0x10;
2874}
2975
76void es1373_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
77                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
78{
79   m_memory_space = memory_space;
80}
81
82TIMER_DEVICE_CALLBACK_MEMBER(es1373_device::es_timer_callback)
83{
84   // Only transfer PCI data if bus mastering is enabled
85   if (command & 0x4) {
86      if (m_dac2.enable && (!(m_dac2.buf_rptr&0x7))) {
87         transfer_pci_audio(m_dac2, ES_PCI_READ);
88      }
89      if (m_dac2.pci_count>8) {
90         m_dac2.initialized = true;
91      }
92   }
93   if (m_dac2.enable) {
94      // The initalized is to signal that inital buffer has been written
95      if (m_dac2.buf_count<=m_dac2.buf_size && m_dac2.initialized) {
96         // Send data to sound???
97         // sound = m_sound_cache[chan.buf_rptr]
98         if (0 && LOG_ES)
99            logerror("%X: DAC2 buf_count: %i buf_size: %X buf_rptr: %X buf_wptr: %X\n", machine().device("maincpu")->safe_pc(),
100               m_dac2.buf_count, m_dac2.buf_size, m_dac2.buf_rptr, m_dac2.buf_wptr);
101         if (m_dac2.buf_count==m_dac2.buf_size) {
102            if (m_dac2.int_en) {
103               m_es_regs[ES_INT_CS_STATUS] |= ICSTATUS_DAC2_INT_MASK;
104               if (LOG_ES)
105                  logerror("%X: es_timer_callback Setting DAC2 interrupt\n", machine().device("maincpu")->safe_pc());
106            }
107            if (m_dac2.loop_en) {
108               // Keep playing
109               m_dac2.buf_count = m_dac2.buf_count + 1 - 4;  // Should check SCTRL_P2_END_MASK
110            } else {
111               // Stop
112               //m_dac2.enable = false;
113            }
114         } else {
115            m_dac2.buf_count++;
116         }
117         m_dac2.buf_rptr++;
118         if (!(m_dac2.buf_rptr&0xf)) {
119            m_dac2.buf_rptr -= 0x10;
120         }
121      }
122   }
123   if (m_adc.enable) {
124      if (m_adc.buf_count<=m_adc.buf_size) {
125         if (LOG_ES)
126            logerror("%s: ADC buf_count: %i buf_size: %i buf_rptr: %i buf_wptr: %i\n", machine().describe_context(),
127               m_adc.buf_count, m_adc.buf_size, m_adc.buf_rptr, m_adc.buf_wptr);
128         if (m_adc.int_en && m_adc.buf_count==m_adc.buf_size) {
129            m_es_regs[ES_INT_CS_STATUS] |= ICSTATUS_ADC_INT_MASK;
130            if (LOG_ES)
131               logerror("%s: es_timer_callback Setting ADC interrupt\n", tag());
132         }
133         m_adc.buf_count++;
134         m_adc.buf_wptr++;
135         if (!(m_adc.buf_wptr&0xf)) {
136            m_adc.buf_wptr -= 0x10;
137         }
138      }
139   }
140   // PCI Write Transfer
141   if (command & 0x4) {
142      if (m_adc.enable && (!(m_adc.buf_wptr&0x7))) {
143         transfer_pci_audio(m_adc, ES_PCI_WRITE);
144      }
145   }
146   if (m_es_regs[ES_INT_CS_STATUS]&(ICSTATUS_DAC1_INT_MASK|ICSTATUS_DAC2_INT_MASK|ICSTATUS_ADC_INT_MASK)) {
147      m_es_regs[ES_INT_CS_STATUS] |= ICSTATUS_INTR_MASK;
148      // Assert interrupt
149      //m_cpu->set_input_line(ES_IRQ_NUM, ASSERT_LINE);
150      if (m_irq_num!=-1) {
151         m_cpu->set_input_line(m_irq_num, ASSERT_LINE);
152      }
153   }
154}
155
156void es1373_device::transfer_pci_audio(chan_info& chan, int type)
157{
158   UINT32 pci_addr, data;
159   pci_addr = chan.pci_addr + (chan.pci_count<<2);
160   if (type==ES_PCI_READ) {
161      // Transfer from PCI to sound cache
162      // Always transfer 8 longwords
163      for (int i=0; i<8 && (chan.pci_count<=chan.pci_size); i++) {
164         data = m_memory_space->read_dword(pci_addr, 0xffffffff);
165         m_sound_cache[chan.buf_wptr++] = data;
166         if (!(chan.buf_wptr&0xf)) {
167            chan.buf_wptr -= 0x10;
168         }
169         chan.pci_count++;
170         pci_addr += 4;
171      }
172   } else {
173      // Transfer from sound cache to PCI
174      // Always transfer 8 longwords
175      for (int i=0; i<8 && chan.pci_count<=chan.pci_size; i++) {
176         data = m_sound_cache[chan.buf_rptr++];
177         m_memory_space->write_dword(pci_addr, data);
178         if (!(chan.buf_rptr&0xf)) {
179            chan.buf_rptr -= 0x10;
180         }
181         chan.pci_count++;
182         pci_addr += 4;
183      }
184   }
185}
186
30187READ32_MEMBER (es1373_device::reg_r)
31188{
32189   UINT32 result = m_es_regs[offset];
33190   switch (offset) {
34191      case ES_CODEC:
35192         break;
193      case ES_DAC2_CNT:
194            result = ((m_dac2.buf_size-m_dac2.buf_count)<<16) | m_dac2.buf_size;
195         break;
36196      case ES_HOST_IF0: // 0x30
197         result = m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x0];
37198         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
38199            case 0xc:
39               result = m_dac1_fr.pci_addr;
200               result = m_dac1.pci_addr;
40201               break;
41202            case 0xd:
42               result = m_adc_fr.pci_addr;
203               result = m_adc.pci_addr;
43204               break;
44            case 0xe:
45            case 0xf:
46               logerror("%06X:ES1373 Read UART offset %02X & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
47205            default:
48206               break;
49207         }
50208         break;
51209      case ES_HOST_IF1: // 0x34
210         result = m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x1];
52211         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
53212            case 0xc:
54               result = (m_dac1_fr.curr_count<<16) | m_dac1_fr.buff_size;
213               result = (m_dac1.pci_count<<16) | m_dac1.pci_size;
55214               break;
56215            case 0xd:
57               result = (m_adc_fr.curr_count<<16) | m_adc_fr.buff_size;
216               result = (m_adc.pci_count<<16) | m_adc.pci_size;
58217               break;
59            case 0xe:
60            case 0xf:
61               logerror("%06X:ES1373 write UART offset %02X & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
62218            default:
63219               break;
64220         }
65221         break;
66222      case ES_HOST_IF2: // 0x38
223         result = m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x2];
67224         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
68225            case 0xc:
69               result = m_dac2_fr.pci_addr;
226               result = m_dac2.pci_addr;
70227               break;
71            case 0xd:
72               logerror("%06X:ES1373 read Unknown place offset %02X & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
73               break;
74            case 0xe:
75            case 0xf:
76               logerror("%06X:ES1373 read UART offset %02X  & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
77228            default:
78229               break;
79230         }
80231         break;
81232      case ES_HOST_IF3: // 0x3C
233         result = m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x3];
82234         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
83235            case 0xc:
84               result = (m_dac2_fr.curr_count<<16) | m_dac2_fr.buff_size;
236               result = ((m_dac2.pci_count)<<16) | m_dac2.pci_size;
85237               break;
86            case 0xd:
87               logerror("%06X:ES1373 read Unknown place offset %02X & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
88               break;
89            case 0xe:
90            case 0xf:
91               logerror("%06X:ES1373 read UART offset %02X & %08X\n", space.device().safe_pc(), offset*4, mem_mask);
92238            default:
93239               break;
94240         }
r245577r245578
96242      default:
97243         break;
98244   }
99   if (LOG_ES)
100      logerror("%06X:ES1373 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask);
245   if (LOG_ES_REG)
246      logerror("%08X:ES1373 read from offset %02X = %08X & %08X\n", machine().device("maincpu")->safe_pc(), offset*4, result, mem_mask);
101247   return result;
102248}
103249
r245577r245578
105251{
106252   COMBINE_DATA(&m_es_regs[offset]);
107253   switch (offset) {
254      case ES_INT_CS_CTRL:
255            m_dac1.enable = (m_es_regs[ES_INT_CS_CTRL] & ICCTRL_DAC1_EN_MASK);
256            m_dac2.enable = (m_es_regs[ES_INT_CS_CTRL] & ICCTRL_DAC2_EN_MASK);
257            m_adc.enable = (m_es_regs[ES_INT_CS_CTRL] & ICCTRL_ADC_EN_MASK);
258         break;
108259      case ES_SRC_IF:
109260         if (data&(1<<24)) {
110261            // Write to Sample Rate Converter Ram
r245577r245578
123274            m_ac97_regs[(data>>16)&0x7f] = data&0xFFFF;
124275         }
125276         break;
277      case ES_SERIAL_CTRL:
278            m_adc.loop_en  = !(m_es_regs[ES_SERIAL_CTRL] & SCTRL_R1_LOOP_MASK);
279            m_dac2.loop_en = !(m_es_regs[ES_SERIAL_CTRL] & SCTRL_P2_LOOP_MASK);
280            m_dac1.loop_en = !(m_es_regs[ES_SERIAL_CTRL] & SCTRL_P1_LOOP_MASK);
281            m_adc.int_en  = m_es_regs[ES_SERIAL_CTRL] & SCTRL_R1_INT_EN_MASK;
282            m_dac2.int_en = m_es_regs[ES_SERIAL_CTRL] & SCTRL_P2_INT_EN_MASK;
283            m_dac1.int_en = m_es_regs[ES_SERIAL_CTRL] & SCTRL_P1_INT_EN_MASK;
284            if (!m_adc.int_en) m_es_regs[ES_INT_CS_STATUS]  &= ~ICSTATUS_ADC_INT_MASK;
285            if (!m_dac1.int_en) m_es_regs[ES_INT_CS_STATUS] &= ~ICSTATUS_DAC1_INT_MASK;
286            if (!m_dac2.int_en) m_es_regs[ES_INT_CS_STATUS] &= ~ICSTATUS_DAC2_INT_MASK;
287            // Clear the summary interrupt and irq line
288            if (!(m_es_regs[ES_INT_CS_STATUS]&(ICSTATUS_DAC1_INT_MASK|ICSTATUS_DAC2_INT_MASK|ICSTATUS_ADC_INT_MASK))) {
289               // Deassert interrupt
290               if (m_es_regs[ES_INT_CS_STATUS]&ICSTATUS_INTR_MASK && m_irq_num!=-1) {
291                  m_cpu->set_input_line(m_irq_num, CLEAR_LINE);
292                  m_es_regs[ES_INT_CS_STATUS] &= ~ICSTATUS_INTR_MASK;
293                  if (LOG_ES)
294                     logerror("%X: es1373_device::reg_w Clearing interrupt\n", machine().device("maincpu")->safe_pc());
295               }
296            }
297            if (LOG_ES_REG)
298               logerror("%s: es1373_device::reg_w adc_int_en: %i dac1_int_en: %i dac2_int_en: %i\n", tag(), m_adc.int_en, m_dac1.int_en, m_dac2.int_en);
299         break;
300      case ES_DAC2_CNT:
301            m_dac2.buf_count = 0;
302            m_dac2.buf_size = data&0xffff;
303         break;
126304      case ES_HOST_IF0: // 0x30
305         m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x0] = data;
127306         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
128307            case 0xc:
129               m_dac1_fr.pci_addr = data;
308               m_dac1.pci_addr = data;
130309               break;
131310            case 0xd:
132               m_adc_fr.pci_addr = data;
311               m_adc.pci_addr = data;
133312               break;
134            case 0xe:
135            case 0xf:
136               logerror("%06X:ES1373 write UART offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
137313            default:
138314               break;
139315         }
140316         break;
141317      case ES_HOST_IF1: // 0x34
318         m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x1] = data;
142319         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
143320            case 0xc:
144               m_dac1_fr.curr_count = (data>>16)&0xffff;
145               m_dac1_fr.buff_size = data&0xffff;
321               m_dac1.pci_count = (data>>16)&0xffff;
322               m_dac1.pci_size = data&0xffff;
146323               break;
147324            case 0xd:
148               m_adc_fr.curr_count = (data>>16)&0xffff;
149               m_adc_fr.buff_size = data&0xffff;
325               m_adc.pci_count = (data>>16)&0xffff;
326               m_adc.pci_size = data&0xffff;
150327               break;
151            case 0xe:
152            case 0xf:
153               logerror("%06X:ES1373 write UART offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
154328            default:
155329               break;
156330         }
157331         break;
158332      case ES_HOST_IF2: // 0x38
333         m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x2] = data;
159334         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
160335            case 0xc:
161               m_dac2_fr.pci_addr = data;
336               m_dac2.pci_addr = data;
162337               break;
163            case 0xd:
164               logerror("%06X:ES1373 write Unknown place offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
165               break;
166            case 0xe:
167            case 0xf:
168               logerror("%06X:ES1373 write UART offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
169338            default:
170339               break;
171340         }
172341         break;
173342      case ES_HOST_IF3: // 0x3C
343         m_sound_cache[(m_es_regs[ES_MEM_PAGE]<<2) | 0x3] = data;
174344         switch (m_es_regs[ES_MEM_PAGE]&0xf) {
175345            case 0xc:
176               m_dac2_fr.curr_count = (data>>16)&0xffff;
177               m_dac2_fr.buff_size = data&0xffff;
346               m_dac2.pci_count = (data>>16)&0xffff;
347               m_dac2.pci_size = data&0xffff;
178348               break;
179            case 0xd:
180               logerror("%06X:ES1373 write Unknown place offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
181               break;
182            case 0xe:
183            case 0xf:
184               logerror("%06X:ES1373 write UART offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
185349            default:
186350               break;
187351         }
r245577r245578
190354         break;
191355   }
192356
193   if (LOG_ES)
194      logerror("%06X:ES1373 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
357   if (LOG_ES_REG)
358      logerror("%08X:ES1373 write to offset %02X = %08X & %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask);
195359
196360}
trunk/src/emu/sound/es1373.h
r245577r245578
55
66#include "machine/pci.h"
77
8// No interrupts
89#define MCFG_ES1373_ADD(_tag) \
910   MCFG_PCI_DEVICE_ADD(_tag, ES1373, 0x12741371, 0x04, 0x040100, 0x12741371)
1011
12#define MCFG_ES1373_IRQ_ADD(_cpu_tag, _irq_num) \
13   downcast<es1373_device *>(device)->set_irq_info(_cpu_tag, _irq_num);
14
1115/* Ensonic ES1373 registers 0x00-0x3f */
1216#define ES_INT_CS_CTRL          (0x00/4)
1317#define ES_INT_CS_STATUS        (0x04/4)
14#define ES_UART_DATA              (0x08/4)
15#define ES_UART_STATUS            (0x09/4)
16#define ES_UART_CTRL              (0x09/4)
17#define ES_UART_RSVD              (0x0A/4)
18#define ES_MEM_PAGE               (0x0C/4)
18#define ES_UART_DATA            (0x08/4)
19#define ES_UART_STATUS          (0x09/4)
20#define ES_UART_CTRL            (0x09/4)
21#define ES_UART_RSVD            (0x0A/4)
22#define ES_MEM_PAGE             (0x0C/4)
1923#define ES_SRC_IF               (0x10/4)
20#define ES_CODEC                  (0x14/4)
21#define ES_LEGACY                 (0x18/4)
22#define ES_CHAN_CTRL              (0x1C/4)
24#define ES_CODEC                (0x14/4)
25#define ES_LEGACY               (0x18/4)
26#define ES_CHAN_CTRL            (0x1C/4)
2327#define ES_SERIAL_CTRL          (0x20/4)
2428#define ES_DAC1_CNT             (0x24/4)
2529#define ES_DAC2_CNT             (0x28/4)
2630#define ES_ADC_CNT              (0x2C/4)
27#define ES_ADC_CNT              (0x2C/4)
2831#define ES_HOST_IF0             (0x30/4)
2932#define ES_HOST_IF1             (0x34/4)
3033#define ES_HOST_IF2             (0x38/4)
3134#define ES_HOST_IF3             (0x3C/4)
3235
33struct frame_reg {
34   UINT32 pci_addr;
35   UINT16 curr_count;
36   UINT16 buff_size;
37   frame_reg() : pci_addr(0), curr_count(0), buff_size(0) {}
36// Interrupt/Chip Select Control Register (ES_INT_CS_CTRL) bits
37#define ICCTRL_ADC_STOP_MASK   0x00002000
38#define ICCTRL_DAC1_EN_MASK    0x00000040
39#define ICCTRL_DAC2_EN_MASK    0x00000020
40#define ICCTRL_ADC_EN_MASK     0x00000010
41#define ICCTRL_UART_EN_MASK    0x00000008
42#define ICCTRL_JYSTK_EN_MASK   0x00000004
43
44// Interrupt/Chip Select Status Register (ES_INT_CS_STATUS) bits
45#define ICSTATUS_INTR_MASK        0x80000000
46#define ICSTATUS_DAC1_INT_MASK    0x00000004
47#define ICSTATUS_DAC2_INT_MASK    0x00000002
48#define ICSTATUS_ADC_INT_MASK     0x00000001
49
50// Serial Interface Control Register (ES_SERIAL_CTRL) bits
51#define SCTRL_P2_END_MASK     0x00380000
52#define SCTRL_P2_START_MASK   0x00070000
53#define SCTRL_R1_LOOP_MASK    0x00008000
54#define SCTRL_P2_LOOP_MASK    0x00004000
55#define SCTRL_P1_LOOP_MASK    0x00002000
56#define SCTRL_P2_PAUSE_MASK   0x00001000
57#define SCTRL_P1_PAUSE_MASK   0x00000800
58#define SCTRL_R1_INT_EN_MASK  0x00000400
59#define SCTRL_P2_INT_EN_MASK  0x00000200
60#define SCTRL_P1_INT_EN_MASK  0x00000100
61#define SCTRL_P1_RELOAD_MASK  0x00000080
62#define SCTRL_P2_STOP_MASK    0x00000040
63#define SCTRL_R1_S_MASK       0x00000030
64#define SCTRL_P2_S_MASK       0x0000000C
65#define SCTRL_P1_S_MASK       0x00000003
66
67#define ES_PCI_READ 0
68#define ES_PCI_WRITE 1
69
70struct chan_info {
71   bool enable;
72   bool int_en;
73   bool loop_en;
74   bool initialized;
75   UINT32 samp_size;    // Size of one sample in log2(bytes)
76   UINT32 buf_wptr;     // Address to sample cache memory
77   UINT32 buf_rptr;     // Address to sample cache memory
78   UINT16 buf_count;    // Number of samples that have been played
79   UINT16 buf_size;     // Number of samples minus one to play
80   UINT32 pci_addr;     // PCI Addresss for system memory accesses
81   UINT16 pci_count;    // Number of 32 bits transfered
82   UINT16 pci_size;     // Total number of words (32 bits) minus one in system memory
3883};
3984
4085class es1373_device : public pci_device {
4186public:
4287   es1373_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
88   virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
89                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
4390
91   void set_irq_info(const char *tag, const int irq_num);
92
4493   DECLARE_READ32_MEMBER (reg_r);
4594   DECLARE_WRITE32_MEMBER(reg_w);
46
95   TIMER_DEVICE_CALLBACK_MEMBER(es_timer_callback);
96   // optional information overrides
97   virtual machine_config_constructor device_mconfig_additions() const;
4798protected:
4899   virtual void device_start();
49100   virtual void device_reset();
101   address_space *m_memory_space;
102   //virtual const address_space_config *memory_space_config(address_spacenum spacenum) const;
50103
51104private:
105   const char *m_cpu_tag;
106   cpu_device *m_cpu;
107   int m_irq_num;
52108   DECLARE_ADDRESS_MAP(map, 32);
53109   UINT16 m_ac97_regs[0x80];
54110   UINT32 m_es_regs[0x10];
111   UINT32 m_sound_cache[0x40];
55112   UINT16 m_src_ram[0x80];
56   frame_reg m_dac1_fr;
57   frame_reg m_dac2_fr;
58   frame_reg m_adc_fr;
113   chan_info m_dac1;
114   chan_info m_dac2;
115   chan_info m_adc;
116   void transfer_pci_audio(chan_info& chan, int type);
117   
59118};
60119
61120extern const device_type ES1373;
trunk/src/emu/sound/fm.h
r245577r245578
7171   #define ym2612_update_req(chip) ym2612_update_request(chip);
7272#endif /* (BUILD_YM2612||BUILD_YM3438) */
7373
74/* compiler dependence */
75#if 0
76#ifndef OSD_CPU_H
77#define OSD_CPU_H
78typedef unsigned char   UINT8;   /* unsigned  8bit */
79typedef unsigned short  UINT16;  /* unsigned 16bit */
80typedef unsigned int    UINT32;  /* unsigned 32bit */
81typedef signed char     INT8;    /* signed  8bit   */
82typedef signed short    INT16;   /* signed 16bit   */
83typedef signed int      INT32;   /* signed 32bit   */
84#endif /* OSD_CPU_H */
85#endif
8674
87
88
8975typedef stream_sample_t FMSAMPLE;
9076/*
9177#if (FM_SAMPLE_BITS==16)
trunk/src/emu/sound/l7a1045_l6028_dsp_a.c
r245577r245578
4242
4343   6  ----------------   ----------------   ----------------
4444
45   7  ----------------   ----------------   ----------------
45   7  ----------------   ----------------   llllllllrrrrrrrr left/right volume
4646
4747   8  ----------------   ----------------   ---------------- (read only?)                                                       
4848
r245577r245578
6969
7070   Some of the other ports on the HNG64 sound CPU may also be tied
7171   to this chip, this isn't yet clear.
72   Port $8 bit 8 is keyon, low byte is sound status related (masked with 0x7f)
7273
7374   Sample data format TBA
7475
r245577r245578
9394l7a1045_sound_device::l7a1045_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9495   : device_t(mconfig, L7A1045, "L7A1045 L6028 DSP-A", tag, owner, clock, "l7a1045_custom", __FILE__),
9596      device_sound_interface(mconfig, *this),
96      m_stream(NULL)
97      /*m_key(0),
98      m_base(NULL)*/
97      m_stream(NULL),
98      m_key(0),
99      m_rom(NULL),
100      m_rom_size(0)
99101{
100102}
101103
r245577r245578
107109void l7a1045_sound_device::device_start()
108110{
109111   /* Allocate the stream */
110   m_stream = stream_alloc(0, 2, clock() / 384);
112   m_stream = stream_alloc(0, 2, 44100/4); //clock() / 384);
113
114   m_rom = m_region->base();
115   m_rom_size = m_region->bytes();
111116}
112117
113118
r245577r245578
120125   /* Clear the buffers */
121126   memset(outputs[0], 0, samples*sizeof(*outputs[0]));
122127   memset(outputs[1], 0, samples*sizeof(*outputs[1]));
128
129   for (int i = 0; i < 32; i++)
130   {
131      if (m_key & (1 << i))
132      {
133         l7a1045_voice *vptr = &m_voice[i];
134
135         UINT32 start = vptr->start;
136         UINT32 end = vptr->start+0x002000;
137         UINT32 step  = 0x0400;
138
139         UINT32 pos = vptr->pos;
140         UINT32 frac = vptr->frac;
141
142         for (int j = 0; j < samples; j++)
143         {
144            INT32 sample;
145
146            pos += 1;//(frac >> 12);
147            frac &= 0xfff;
148
149            if ((start + pos) >= end)
150            {
151               m_key &= ~(1 << i);
152           
153            }
154
155            sample = (INT8)m_rom[(start + pos) & (m_rom_size-1)];
156            frac += step;
157
158            outputs[0][j] += ((sample * 0x8000) >> 8);
159            outputs[1][j] += ((sample * 0x8000) >> 8);
160         }
161
162         vptr->pos = pos;
163         vptr->frac = frac;
164      }
165   }
123166}
124167
125168
r245577r245578
196239      printf("%08x: unexpected write port 0x0002 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
197240      break;
198241
199   case 0x00:
242//   case 0x00:
200243   case 0x01:
201244   case 0x04:
202245   case 0x06:
r245577r245578
209252   //   printf("%08x: write port 0x0002 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
210253      break;
211254
255   case 0x00:
256      // hack
257      l7a1045_voice *vptr = &m_voice[m_audiochannel];   
258
259      m_key |= 1 << m_audiochannel;
260
261      vptr->frac = 0;
262      vptr->pos = 0;
263
264      vptr->start = (m_audiodat[0][m_audiochannel].dat[0] & 0x000f) << (16 + 4);
265      vptr->start |=   (m_audiodat[0][m_audiochannel].dat[1] & 0xffff) << (4);
266      vptr->start |=   (m_audiodat[0][m_audiochannel].dat[2] & 0xf000) >> (12);
267
268      vptr->start &= m_rom_size - 1;
269
270      //printf("%08x: REGISTER 00 write port 0x0002 chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
271      break;
212272   }
213273
214274}
r245577r245578
231291      printf("%08x: unexpected write port 0x0004 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
232292      break;
233293
234   case 0x00:
294//   case 0x00:
235295   case 0x04:
236296   case 0x06:
237297   case 0x05:
r245577r245578
243303   case 0x0a:
244304      //printf("%08x: write port 0x0004 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
245305      break;
306
307   case 0x00:
308      //printf("%08x: REGISTER 00 write port 0x0004 chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
309      break;
246310   }
247311
248312}
r245577r245578
268332      printf("%08x: unexpected write port 0x0006 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
269333      break;
270334
271   case 0x00:
335//   case 0x00:
272336   case 0x01:
273337      //printf("%08x: unexpected write port 0x0006 register %02x chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audioregister, m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
274338      break;
275339
340   case 0x00:
341
342      // it writes 2 values here for each sample
343      // the 2nd one seems to contain the upper 4 bits of the sample address
344      // so why does it write different data first?
345      //printf("%08x: REGISTER 00 write port 0x0006 chansel %02x data %04x (%04x%04x%04x)\n", space.device().safe_pc(), m_audiochannel, data, m_audiodat[m_audioregister][m_audiochannel].dat[0], m_audiodat[m_audioregister][m_audiochannel].dat[1], m_audiodat[m_audioregister][m_audiochannel].dat[2]);
346      break;
347
276348   }
277349}
278350
trunk/src/emu/sound/l7a1045_l6028_dsp_a.h
r245577r245578
44
55struct l7a1045_voice
66{
7   /*
87   l7a1045_voice() :
98      pos(0),
109      frac(0)
1110   {
12      memset(regs, 0, sizeof(UINT32)*8);
11      //memset(regs, 0, sizeof(UINT32)*8);
12      start = 0;
1313   }
1414
15   UINT32 regs[8];
15   UINT32 start;
1616   UINT32 pos;
1717   UINT32 frac;
18   */
18   
1919};
2020
2121// ======================> l7a1045_sound_device
r245577r245578
4141
4242private:
4343   sound_stream *m_stream;
44//   l7a1045_voice m_voice[32];
45//   UINT16     m_key;
46//   INT8*      m_base;
44   l7a1045_voice m_voice[32];
45   UINT32    m_key;
46   UINT8 *m_rom;
47   INT32 m_rom_size;
4748
4849   UINT8 m_audiochannel;
4950   UINT8 m_audioregister;
trunk/src/emu/sound/segapcm.c
r245577r245578
122122            v = rom[(addr >> 8) & m_rom.mask()] - 0x80;
123123
124124            /* apply panning and advance */
125            outputs[0][i] += v * regs[2];
126            outputs[1][i] += v * regs[3];
125            outputs[0][i] += v * (regs[2] & 0x7f);
126            outputs[1][i] += v * (regs[3] & 0x7f);
127127            addr = (addr + regs[7]) & 0xffffff;
128128         }
129129
trunk/src/emu/video/rgbvmx.h
r245577r245578
435435}
436436
437437// altivec.h somehow redefines "bool" in a bad way on PowerPC Mac OS X.  really.
438#ifdef SDLMAME_MACOSX
438#ifdef OSX_PPC
439439#undef vector
440440#undef pixel
441441#undef bool
trunk/src/lib/util/delegate.h
r245577r245578
9494// select which one we will be using
9595#if defined(__GNUC__)
9696   /* does not work in versions over 4.7.x of 32bit MINGW  */
97   #if ((defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && (__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
97   #if defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
9898      #define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
99   #elif defined(SDLMAME_EMSCRIPTEN)
99   #elif defined(EMSCRIPTEN)
100100      #define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
101   #elif defined(SDLMAME_ARM)
101   #elif defined(__arm__) || defined(__ARMEL__)
102102      #define USE_DELEGATE_TYPE DELEGATE_TYPE_COMPATIBLE
103103   #else
104104      #define USE_DELEGATE_TYPE DELEGATE_TYPE_INTERNAL
trunk/src/mame/audio/hng64.c
r245577r245578
194194//  logerror("hng64_sound_port_0008_w %04x %04x\n", data, mem_mask);
195195   // seems to one or more of the DMARQ on the V53, writes here when it expects DMA channel 3 to transfer ~0x20 bytes just after startup
196196
197   printf("transfer\n");
198197   m_audiocpu->dreq3_w(data&1);
199198//  m_audiocpu->hack_w(1);
200199
trunk/src/mame/drivers/berzerk.c
r245577r245578
779779   PORT_BIT( 0xf0, IP_ACTIVE_LOW,  IPT_UNUSED )
780780INPUT_PORTS_END
781781
782// this set has French speech roms, so default the language to French
783static INPUT_PORTS_START( berzerkf )
784   PORT_INCLUDE( berzerk )
785
786   PORT_MODIFY("F3")
787   PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Language ) ) PORT_DIPLOCATION("F3:7,8")
788   PORT_DIPSETTING(    0x00, DEF_STR( English ) )
789   PORT_DIPSETTING(    0x40, DEF_STR( German ) )
790   PORT_DIPSETTING(    0x80, DEF_STR( French ) )
791   PORT_DIPSETTING(    0xc0, DEF_STR( Spanish ) )
792INPUT_PORTS_END
793
782794// this set has German speech roms, so default the language to German
783795static INPUT_PORTS_START( berzerkg )
784796   PORT_INCLUDE( berzerk )
r245577r245578
11771189   ROM_LOAD( "berzerk_r_vo_2c.2c", 0x0800, 0x0800, CRC(d2b6324e) SHA1(20a6611ad6ec19409ac138bdae7bdfaeab6c47cf) )  /* ditto */
11781190ROM_END
11791191
1192ROM_START( berzerkf )
1193   ROM_REGION( 0x10000, "maincpu", 0 )
1194   ROM_LOAD( "rc31f.1c", 0x0000, 0x0800, CRC(3ba6e56e) SHA1(f2b02dcdc3fe1de28cace39055a88f6aa0798fd1) )
1195   ROM_LOAD( "rc31f.1d", 0x1000, 0x0800, CRC(a1de2a3e) SHA1(86ac3717ec26aeb2632583a65de6a0c2e7ea7419) )
1196   ROM_LOAD( "rc31f.3d", 0x1800, 0x0800, CRC(bc31c478) SHA1(906d0acdee208a0bf714bd06be99321722b531c6) )
1197   ROM_LOAD( "rc31f.5d", 0x2000, 0x0800, CRC(316192b5) SHA1(50f4ba2b59423a48c1d51fc6e4d9ea098d6f3743) )
1198   ROM_LOAD( "rc31f.6d", 0x2800, 0x0800, CRC(cd51238c) SHA1(f0b65bdd1f225c151a93ea62812b4bb64969acac) )
1199   ROM_LOAD( "rc31f.5c", 0x3000, 0x0800, CRC(563b13b6) SHA1(f8d137cd26535efe92780560d2f69f12d3f0fa42) )
1200   ROM_FILL(             0x3800, 0x0800, 0xff )
1201
1202   ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
1203   ROM_LOAD( "rvof.1c", 0x0000, 0x0800, CRC(d7bfaca2) SHA1(b8c22db0f6e86d90f3c2ac9ff9e9d0ccff314919) )    /* VSU-1000 board */
1204   ROM_LOAD( "rvof.2c", 0x0800, 0x0800, CRC(7bdc3573) SHA1(f346f0ac9813812f2e3fe68ebbf79151975babcb) )    /* ditto */
1205ROM_END
1206
11801207ROM_START( berzerkg )
11811208   ROM_REGION( 0x10000, "maincpu", 0 )
11821209   ROM_LOAD( "cpu rom 00.1c", 0x0000, 0x0800, CRC(77923a9e) SHA1(3760800b7aa1245f2141897b2406f0f5af5a8d71) )
r245577r245578
12501277 *
12511278 *************************************/
12521279
1253GAME( 1980, berzerk,  0,       berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 1)", 0 )
1254GAME( 1980, berzerk1, berzerk, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 2)", 0 )
1255GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, driver_device,0, ROT0, "Stern Electronics", "Berzerk (German Speech)", 0 )
1256GAME( 1981, frenzy,   0,       frenzy,  frenzy, driver_device,  0, ROT0, "Stern Electronics", "Frenzy", 0 )
1257GAME( 1981, moonwarp, 0,       frenzy,  moonwarp, berzerk_state,moonwarp, ROT0, "Stern Electronics", "Moon War (prototype on Frenzy hardware)", 0)
1280GAME( 1980, berzerk,  0,       berzerk, berzerk,  driver_device,        0, ROT0, "Stern Electronics", "Berzerk (set 1)", 0 )
1281GAME( 1980, berzerk1, berzerk, berzerk, berzerk,  driver_device,        0, ROT0, "Stern Electronics", "Berzerk (set 2)", 0 )
1282GAME( 1980, berzerkf, berzerk, berzerk, berzerkf, driver_device,        0, ROT0, "Stern Electronics", "Berzerk (French Speech)", 0 )
1283GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, driver_device,        0, ROT0, "Stern Electronics", "Berzerk (German Speech)", 0 )
1284GAME( 1981, frenzy,   0,       frenzy,  frenzy,   driver_device,        0, ROT0, "Stern Electronics", "Frenzy", 0 )
1285GAME( 1981, moonwarp, 0,       frenzy,  moonwarp, berzerk_state, moonwarp, ROT0, "Stern Electronics", "Moon War (prototype on Frenzy hardware)", 0)
trunk/src/mame/drivers/bigstrkb.c
r245577r245578
4848
4949   AM_RANGE(0x0D0000, 0x0dffff) AM_RAM  // 0xd2000 - 0xd3fff?   0xd8000?
5050
51   AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(bsb_videoram2_w) AM_SHARE("videoram2")
52   AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(bsb_videoram3_w) AM_SHARE("videoram3")
53   AM_RANGE(0x0ec000, 0x0effff) AM_RAM_WRITE(bsb_videoram_w) AM_SHARE("videoram")
51   AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
52   AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(videoram3_w) AM_SHARE("videoram3")
53   AM_RANGE(0x0ec000, 0x0effff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
5454
5555   AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM
5656   AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r245577r245578
207207   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
208208   MCFG_SCREEN_SIZE(32*8, 32*8)
209209   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
210   MCFG_SCREEN_UPDATE_DRIVER(bigstrkb_state, screen_update_bigstrkb)
210   MCFG_SCREEN_UPDATE_DRIVER(bigstrkb_state, screen_update)
211211   MCFG_SCREEN_PALETTE("palette")
212212
213213   MCFG_PALETTE_ADD("palette", 0x400)
r245577r245578
292292
293293/* GAME drivers */
294294
295GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
296GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
295GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
296GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/cps1.c
r245577r245578
53735373   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
53745374
53755375   ROM_REGION( 0x0200, "bboardplds", 0 )
5376   ROM_LOAD( "ck24b.1a",     0x0000, 0x0117, NO_DUMP )
5376   ROM_LOAD( "ck24b.1a",     0x0000, 0x0117, CRC(bd99c448) SHA1(2692c158f76769b0743103cc3a6d1c5d1f4f52ec) )
53775377   ROM_LOAD( "iob1.11e",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
53785378ROM_END
53795379
trunk/src/mame/drivers/cv1k.c
r245577r245578
809809   ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(3b673326) SHA1(1ae847eb4e752fef1d72081d82344f0ad0537c31) )
810810ROM_END
811811
812ROM_START( dfkbl )
813   ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
814   ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x400000, CRC(8092ca9d) SHA1(75e16cd7c8d0f9c715115ce12da5c245fbcd2416) ) /* (2010/1/18 BLACK LABEL) */
812815
816   ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
817   ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(29f9d73a) SHA1(ed978ab5e3ad8c05e7778a91bfb5aaa17b0f72d9) )
813818
819   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
820   ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(36d4093b) SHA1(4aed7e2f7c0d2c9bceeb110a9907d8d99d55f4c3) )
821   ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) )
822ROM_END
823
824
825
814826READ64_MEMBER( cv1k_state::mushisam_speedup_r )
815827{
816828   if (m_maincpu->pc()== 0xc04a2aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam / mushisamb
r245577r245578
923935GAME( 2006, futari15a,  futari15, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)",       0 )
924936GAME( 2006, futari10,   futari15, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)",          0 )
925937
938// CA015B Mushihime-Sama Futari Black Label
939GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label - Another Ver (2009/11/27 INTERNATIONAL BL)", 0 )
940GAME( 2007, futariblj,  futaribl, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)",  0 )
941
926942// CA016  Muchi Muchi Pork!
927943GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                      0 )
928944
929// CA015B Mushihime-Sama Futari Black Label
930GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 )
931GAME( 2007, futariblj,  futaribl, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)",  0 )
932
933945// CA017  Deathsmiles
934946GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, deathsml,  ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                             0 )
935947
r245577r245578
940952GAME( 2008, ddpdfk,     0,        cv1k_d, cv1k, cv1k_state, dpddfk,    ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23  MASTER VER 1.5)",    0 )
941953GAME( 2008, ddpdfk10,   ddpdfk,   cv1k_d, cv1k, cv1k_state, dpddfk,    ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16  MASTER VER)",        0 )
942954
955// CA019B Do-Don-Pachi Dai-Fukkatsu Black Label
956GAME( 2010, dfkbl,      0,        cv1k_d, cv1k, cv1k_state, dpddfk,    ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Black Label (2010/1/18 BLACK LABEL)",     0 )
957
943958// CMDL01 Medal Mahjong Moukari Bancho
944959GAME( 2007, mmmbanc,    0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT0,   "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)",            GAME_NOT_WORKING )
trunk/src/mame/drivers/goldstar.c
r245577r245578
11961196   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
11971197   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
11981198   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
1199   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
1199   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")  //  on some sets a DSW must be on/off to access this menu
12001200INPUT_PORTS_END
12011201
12021202static INPUT_PORTS_START( cmv4_dsw1 )
r245577r245578
34673467   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
34683468INPUT_PORTS_END
34693469
3470INPUT_PORTS_START( bingownga )
3470static INPUT_PORTS_START( bingownga )
34713471   PORT_INCLUDE( bingowng )
34723472
34733473   PORT_MODIFY("DSW4")
r245577r245578
39953995   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
39963996INPUT_PORTS_END
39973997
3998/* Displays tkt info on screen but has no settings or hopper controls */
3998
3999/* Displays tkt info on screen but has no settings or hopper controls other than "Ticket Out By" DSW */
4000/* All marked as "Unknown" until a manual or more information is found */
39994001static INPUT_PORTS_START( nfb96tx )
40004002   PORT_START("IN0")
40014003   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
4002   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    // unused coin switch
4004   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused coin switch */
40034005   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL ) PORT_NAME("Stop All / Big")
40044006   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1 / D-UP")
40054007   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Take / Select Card")
40064008   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet)")
4007   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Small")
4009   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Small / Info")
40084010   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start")
40094011
40104012   PORT_START("IN1")
r245577r245578
40144016   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
40154017   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
40164018   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_NAME("Ticket In")
4017   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) /* Key In shows in test mode but not used by game */
4019   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused keyin? - causes counter errors */
40184020   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
40194021
40204022   PORT_START("IN2")
40214023   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
40224024   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
4023   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused coin switch */
4025   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused coin switch */
40244026   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
4025   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
4027   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused keyout? */
40264028   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
40274029   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
40284030   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
r245577r245578
40714073   PORT_DIPSETTING(    0x28, "125" )
40724074   PORT_DIPSETTING(    0x30, "250" )
40734075   PORT_DIPSETTING(    0x38, "500" )
4074   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW2:7")  /* unknown */
4076   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW2:7")  /* unknown */
40754077   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
40764078   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
40774079   PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" )       PORT_DIPLOCATION("DSW2:8")  /* Listed that way in other manuals */
r245577r245578
40794081   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
40804082
40814083   PORT_START("DSW3")
4082   PORT_DIPNAME( 0x03, 0x02, "Minimum Play to Start" )         PORT_DIPLOCATION("DSW3:1,2")    /* OK */
4084   PORT_DIPNAME( 0x03, 0x00, "Minimum Play to Start" )         PORT_DIPLOCATION("DSW3:1,2")    /* OK */
40834085   PORT_DIPSETTING(    0x00, "1" )
40844086   PORT_DIPSETTING(    0x01, "8" )
40854087   PORT_DIPSETTING(    0x02, "16" )
40864088   PORT_DIPSETTING(    0x03, "24" )
4087   PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Points" )  PORT_DIPLOCATION("DSW3:3,4")    /* OK */
4089   PORT_DIPNAME( 0x0c, 0x08, "Coin In Limit" )                 PORT_DIPLOCATION("DSW3:3,4")    /* OK */
40884090   PORT_DIPSETTING(    0x00, "1000" )
40894091   PORT_DIPSETTING(    0x04, "5000" )
40904092   PORT_DIPSETTING(    0x08, "10000" )
40914093   PORT_DIPSETTING(    0x0c, "90000" )
4092   PORT_DIPNAME( 0xf0, 0x00, "Clear / Ticket Unit" )           PORT_DIPLOCATION("DSW3:5,6,7,8")    /* OK */
4093   PORT_DIPSETTING(    0x00, "1" )
4094   PORT_DIPSETTING(    0x10, "4" )
4095   PORT_DIPSETTING(    0x20, "5" )
4096   PORT_DIPSETTING(    0x30, "10" )
4097   PORT_DIPSETTING(    0x40, "15" )
4098   PORT_DIPSETTING(    0x50, "20" )
4099   PORT_DIPSETTING(    0x60, "25" )
4100   PORT_DIPSETTING(    0x70, "30" )
4101   PORT_DIPSETTING(    0x80, "40" )
4102   PORT_DIPSETTING(    0x90, "50" )
4103   PORT_DIPSETTING(    0xa0, "60" )
4104   PORT_DIPSETTING(    0xb0, "75" )
4105   PORT_DIPSETTING(    0xc0, "80" )
4106   PORT_DIPSETTING(    0xd0, "100" )
4107   PORT_DIPSETTING(    0xe0, "200" )
4108   PORT_DIPSETTING(    0xf0, "500" )
4094   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )              PORT_DIPLOCATION("DSW3:5")      /* unknown */
4095   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4096   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
4097   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )              PORT_DIPLOCATION("DSW3:6")      /* unknown */
4098   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4099   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
4100   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )              PORT_DIPLOCATION("DSW3:7")      /* unknown */
4101   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4102   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
4103   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )              PORT_DIPLOCATION("DSW3:8")      /* unknown */
4104   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4105   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
41094106
41104107   PORT_START("DSW4")
41114108   PORT_DIPNAME( 0x01, 0x01, "Check Account" )                         PORT_DIPLOCATION("DSW4:1")  /* OK */
41124109   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
41134110   PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
4114   PORT_DIPNAME( 0x02, 0x00, "Show In Confirm Screen" )                PORT_DIPLOCATION("DSW4:2")  /* OK */
4115   PORT_DIPSETTING(    0x00, "Level of Difficulty" )   /* percentage in the manual */
4116   PORT_DIPSETTING(    0x02, "Percentage" )            /* level of difficulty in the manual */
4111   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:2")  /* unknown */
4112   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4113   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
41174114   PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" )    PORT_DIPLOCATION("DSW4:3")  /* OK (need a reset after change) */
41184115   PORT_DIPSETTING(    0x00, "Type 1" )
41194116   PORT_DIPSETTING(    0x04, "Type 2" )
41204117   PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" )                    PORT_DIPLOCATION("DSW4:4")  /* OK (need a reset after change) */
41214118   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
41224119   PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
4123   PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" )                  PORT_DIPLOCATION("DSW4:5")  /* OK (need a reset after change) */
4124   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4125   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
4126   PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" )                  PORT_DIPLOCATION("DSW4:6,7,8")  /* OK */
4127   PORT_DIPSETTING(    0xe0, "Continuous" )
4128   PORT_DIPSETTING(    0xc0, "Max 1 Ticket Per Game" )
4129   PORT_DIPSETTING(    0xa0, "Max 2 Ticket Per Game" )
4130   PORT_DIPSETTING(    0x80, "Max 3 Ticket Per Game" )
4131   PORT_DIPSETTING(    0x60, "Max 4 Ticket Per Game" )
4132   PORT_DIPSETTING(    0x40, "Max 5 Ticket Per Game" )
4133   PORT_DIPSETTING(    0x20, "Max 8 Ticket Per Game" )
4134   PORT_DIPSETTING(    0x00, "Max 10 Ticket Per Game" )
4120   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:5")  /* unknown */
4121   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4122   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
4123   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:6")  /* unknown */
4124   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4125   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
4126   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:7")  /* unknown */
4127   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4128   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
4129   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:8")  /* unknown */
4130   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4131   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
41354132
41364133   PORT_START("DSW5")
4137   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )                                   PORT_DIPLOCATION("DSW5:1")  /* OK */
4134   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )           PORT_DIPLOCATION("DSW5:1")  /* OK */
41384135   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
41394136   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
4140   PORT_DIPNAME( 0x02, 0x00, "Limit Score of Each Game to Max 10x Bet or $5.00" )  PORT_DIPLOCATION("DSW5:2")  /* OK */
4141   PORT_DIPSETTING(    0x00, DEF_STR( No ) )       PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4142   PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )      PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4143   PORT_DIPSETTING(    0x00, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4144   PORT_DIPSETTING(    0x02, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4145   PORT_DIPNAME( 0x04, 0x00, "Use Printer" )                                       PORT_DIPLOCATION("DSW5:3")  /* OK */
4146   PORT_DIPSETTING(    0x00, "Interfase" )
4147   PORT_DIPSETTING(    0x04, "Direct Driver" )
4148   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )                                  PORT_DIPLOCATION("DSW5:4")  /* OK */
4149   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
4150   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4151   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )                                  PORT_DIPLOCATION("DSW5:5")  /* OK */
4152   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
4153   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4154   PORT_DIPNAME( 0x20, 0x20, "Play Score when no point left" )                     PORT_DIPLOCATION("DSW5:6")  /* OK (turn the machine off/on after change) */
4155   PORT_DIPSETTING(    0x20, DEF_STR( No ) )       PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4156   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )      PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4157   PORT_DIPSETTING(    0x20, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4158   PORT_DIPSETTING(    0x00, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4159   PORT_DIPNAME( 0x40, 0x00, "Reset Remaining Score when Game Over" )              PORT_DIPLOCATION("DSW5:7")  /* OK (turn the machine off/on after change) */
4160   PORT_DIPSETTING(    0x40, DEF_STR( No ) )       PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4161   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )      PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
4162   PORT_DIPSETTING(    0x40, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4163   PORT_DIPSETTING(    0x00, DEF_STR( Unused ) )   PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
4164   PORT_DIPNAME( 0x80, 0x00, "Advanced Count Game" )                               PORT_DIPLOCATION("DSW5:8")  /* OK (turn the machine off/on after change) */
4165   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4166   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
4137   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:2")  /* unknown */
4138   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4139   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
4140   PORT_DIPNAME( 0x04, 0x00, "Ticket Out By" )             PORT_DIPLOCATION("DSW5:3")  /* OK */
4141   PORT_DIPSETTING(    0x00, "Interface" )
4142   PORT_DIPSETTING(    0x04, "Direct Drive" )
4143   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:4")  /* unknown */
4144   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4145   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
4146   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:5")  /* unknown */
4147   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4148   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
4149   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:6")  /* unknown */
4150   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4151   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
4152   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:7")  /* unknown */
4153   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4154   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
4155   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW5:8")  /* unknown */
4156   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4157   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
41674158INPUT_PORTS_END
41684159
41694160static INPUT_PORTS_START( roypok96 )
r245577r245578
46904681   PORT_DIPSETTING(    0xc0, "32" )
46914682
46924683   PORT_START("DSW2")
4693   PORT_DIPNAME( 0x01, 0x01, "Double-Up Game" )            PORT_DIPLOCATION("DSW2:1")  /* OK */
4684   PORT_DIPNAME( 0x01, 0x01, "Double-Up Game" )            PORT_DIPLOCATION("DSW2:1")      /* OK */
46944685   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
46954686   PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
4696   PORT_DIPNAME( 0x02, 0x02, "Skill Spinning" )            PORT_DIPLOCATION("DSW2:2")  /* OK */
4687   PORT_DIPNAME( 0x02, 0x02, "Skill Spinning" )            PORT_DIPLOCATION("DSW2:2")      /* OK */
46974688   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
46984689   PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
46994690   PORT_DIPNAME( 0x1c, 0x10, "Coin In" )                   PORT_DIPLOCATION("DSW2:3,4,5")  /* OK */
r245577r245578
47054696   PORT_DIPSETTING(    0x14, "1 Coin/20 Credits" )
47064697   PORT_DIPSETTING(    0x18, "1 Coin/25 Credits" )
47074698   PORT_DIPSETTING(    0x1c, "1 Coin/100 Credits" )
4708   PORT_DIPNAME( 0x60, 0x00, "Note In Value" )                 PORT_DIPLOCATION("DSW2:6,7")    /* OK */
4699   PORT_DIPNAME( 0x60, 0x00, "Note In Value" )             PORT_DIPLOCATION("DSW2:6,7")    /* OK */
47094700   PORT_DIPSETTING(    0x00, "100" )
47104701   PORT_DIPSETTING(    0x20, "200" )
47114702   PORT_DIPSETTING(    0x40, "500" )
47124703   PORT_DIPSETTING(    0x60, "1000" )
4713   PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" )       PORT_DIPLOCATION("DSW2:8")  /* Listed that way in the manual */
4704   PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" )       PORT_DIPLOCATION("DSW2:8")      /* Listed that way in the manual */
47144705   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
47154706   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
47164707
r245577r245578
47204711   PORT_DIPSETTING(    0x01, "8" )
47214712   PORT_DIPSETTING(    0x02, "16" )
47224713   PORT_DIPSETTING(    0x03, "24" )
4723   PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Point" )   PORT_DIPLOCATION("DSW3:3,4")    /* OK */
4714   PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Points" )  PORT_DIPLOCATION("DSW3:3,4")    /* OK */
47244715   PORT_DIPSETTING(    0x00, "1000" )
47254716   PORT_DIPSETTING(    0x04, "5000" )
47264717   PORT_DIPSETTING(    0x08, "10000" )
r245577r245578
47444735   PORT_DIPSETTING(    0xf0, "500" )
47454736
47464737   PORT_START("DSW4")
4747   PORT_DIPNAME( 0x01, 0x01, "Check Account" )                         PORT_DIPLOCATION("DSW4:1")  /* OK */
4748   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4749   PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
4750   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )                      PORT_DIPLOCATION("DSW4:2")  /* unknown */
4751   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4752   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
4753   PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" )    PORT_DIPLOCATION("DSW4:3")  /* not checked */
4738   PORT_DIPNAME( 0x01, 0x01, "Check Account" )                         PORT_DIPLOCATION("DSW4:1")      /* OK */
4739   PORT_DIPSETTING(    0x01, DEF_STR( No ) )
4740   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4741   PORT_DIPNAME( 0x02, 0x00, "Show Coin In Limit On Screen" )          PORT_DIPLOCATION("DSW4:2")      /* OK */
4742   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4743   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
4744   PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" )    PORT_DIPLOCATION("DSW4:3")      /* OK (need a reset after change) */
47544745   PORT_DIPSETTING(    0x00, "Type 1" )
47554746   PORT_DIPSETTING(    0x04, "Type 2" )
4756   PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" )                    PORT_DIPLOCATION("DSW4:4")  /* not checked */
4747   PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" )                    PORT_DIPLOCATION("DSW4:4")      /* OK (need a reset after change) */
47574748   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
47584749   PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
4759   PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" )                  PORT_DIPLOCATION("DSW4:5")  /* not checked */
4750   PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" )                  PORT_DIPLOCATION("DSW4:5")      /* OK (need a reset after change) */
47604751   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
47614752   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
4762   PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" )                  PORT_DIPLOCATION("DSW4:6,7,8")  /* OK */
4763   PORT_DIPSETTING(    0xe0, "Continuous" )
4764   PORT_DIPSETTING(    0xc0, "Max 1 Ticket Per Game" )
4765   PORT_DIPSETTING(    0xa0, "Max 2 Ticket Per Game" )
4766   PORT_DIPSETTING(    0x80, "Max 3 Ticket Per Game" )
4767   PORT_DIPSETTING(    0x60, "Max 4 Ticket Per Game" )
4768   PORT_DIPSETTING(    0x40, "Max 5 Ticket Per Game" )
4769   PORT_DIPSETTING(    0x20, "Max 8 Ticket Per Game" )
4770   PORT_DIPSETTING(    0x00, "Max 10 Ticket Per Game" )
4753   PORT_DIPNAME( 0x60, 0x00, "Ticket Dispense Mode" )                  PORT_DIPLOCATION("DSW4:6,7")    /* OK */
4754   PORT_DIPSETTING(    0x60, "Continuous" )
4755   PORT_DIPSETTING(    0x40, "Max 1 Ticket Per Game" )
4756   PORT_DIPSETTING(    0x20, "Max 5 Tickets Per Game" )
4757   PORT_DIPSETTING(    0x00, "Max 10 Tickets Per Game" )
4758   PORT_DIPNAME( 0x80, 0x00, "Show In Confirm Screen" )                PORT_DIPLOCATION("DSW4:8")      /* OK */
4759   PORT_DIPSETTING(    0x00, "Level of Difficulty" )
4760   PORT_DIPSETTING(    0x80, "Percentage" )
47714761
47724762   PORT_START("DSW5")
47734763   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
47744764INPUT_PORTS_END
47754765
4766/* no manual - similiar to nfb96 sets */
4767static INPUT_PORTS_START( nfm )
4768   PORT_INCLUDE( nfb96bl )
47764769
4770   PORT_MODIFY( "IN2")
4771   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
4772   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
4773   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )                           /* tied to hopper somehow?  fill/empty switch? */
4774   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )                           /* display ticket value? */
4775   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
4776   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                           /* keyin?  tied to ticket clear value */
4777   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
4778   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")    /* DSW4-1 must be on to access account menu */
4779
4780   PORT_MODIFY( "DSW2" )
4781   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )      PORT_DIPLOCATION("DSW2:2")  /* unknown */
4782   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
4783   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
4784   PORT_DIPNAME( 0x80, 0x00, "Spin Length" )           PORT_DIPLOCATION("DSW2:8")  /* OK */
4785   PORT_DIPSETTING(    0x00, "Long" )
4786   PORT_DIPSETTING(    0x80, "Short" )
4787INPUT_PORTS_END
4788
4789
47774790static INPUT_PORTS_START( unkch_controls )
47784791   PORT_START("IN0")
47794792   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Bet A / Stop 2")
r245577r245578
1313513148GAME( 2002, carb2002,  nfb96,    amcoe2,   nfb96bl,   driver_device,  0,         ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)",                         GAME_WRONG_COLORS )
1313613149GAME( 2003, carb2003,  nfb96,    amcoe2,   nfb96bl,   driver_device,  0,         ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)",                         GAME_WRONG_COLORS )
1313713150
13138GAME( 2003, nfm,       0,        nfm,      nfb96bl,   driver_device,  0,         ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
13151GAME( 2003, nfm,       0,        nfm,      nfm,       driver_device,  0,         ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
1313913152
1314013153// these have 'cherry 1994' in the program roms, but also "Super Cherry / New Cherry Gold '99" probably hacks of a 1994 version of Cherry Bonus / Cherry Master (Super Cherry Master?)
1314113154GAMEL(1999, unkch1,   0,         unkch,    unkch,     unkch_state,    unkch1,    ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", 0,    layout_unkch )
trunk/src/mame/drivers/hng64.c
r245577r245578
132132|             CONN10                                           |
133133|                                                              |
134134|                                                              |
135|   PSRAM4  ASIC9                   SRAM4     CPU1  Y1         |
135|   PSRAM4  ASIC9                   SRAM4     CPU2  Y1         |
136136|   PSRAM3         SRAM1            SRAM3                      |
137137|                  SRAM2                                       |
138138|                                                              |
r245577r245578
16716716   SRAM2      TC55257DFL-85L            SOP28
16816817   SRAM3      TC551001BFL-70L           SOP32
16916918   SRAM4      TC551001BFL-70L           SOP32
17019   Y1         D320L7                    XTAL
17019   Y1         D320L7                    XTAL (32MHz)
171171
172172
173173INTERFACE PCB
r245577r245578
948948         COMBINE_DATA(&main_latch[1]);
949949         break;
950950      case 0x08:
951         m_audiocpu->set_input_line(5, ASSERT_LINE);
952         if(data != 1)
951         m_audiocpu->set_input_line(5, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
952         if(data & 0xfe)
953953            printf("IRQ send %02x?\n",data);
954954         break;
955955      default:
r245577r245578
10401040
10411041   PORT_START("SYSTEM")
10421042   PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1043   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_COIN1 )
1044   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_COIN2 )
1043   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
1044   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
10451045   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
10461046   PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
10471047   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
r245577r245578
12341234
12351235   PORT_START("D_IN")
12361236   PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNUSED )
1237   PORT_BIT( 0x00000100, IP_ACTIVE_HIGH, IPT_COIN1 )
1238   PORT_BIT( 0x00000200, IP_ACTIVE_HIGH, IPT_COIN2 )
1239   PORT_BIT( 0x00000400, IP_ACTIVE_HIGH, IPT_COIN3 )
1237   PORT_BIT( 0x00000100, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
1238   PORT_BIT( 0x00000200, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
1239   PORT_BIT( 0x00000400, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(1)
12401240   PORT_BIT( 0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED )
12411241   PORT_BIT( 0x00001000, IP_ACTIVE_HIGH, IPT_SERVICE1 )
12421242   PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SERVICE2 )
r245577r245578
16161616   ROM_REGION( 0x4000, "sprtile", ROMREGION_ERASEFF )
16171617   ROM_REGION( 0x1000000, "textures", ROMREGION_ERASEFF )
16181618   ROM_REGION16_BE( 0x0c00000, "verts", ROMREGION_ERASEFF )
1619   ROM_REGION( 0x1000000, "samples", ROMREGION_ERASEFF ) /* Sound Samples */
1619   ROM_REGION( 0x1000000, "l7a1045", ROMREGION_ERASEFF ) /* Sound Samples */
16201620ROM_END
16211621
16221622
r245577r245578
16671667   ROMX_LOAD( "001vt02a.18", 0x0000002, 0x400000, CRC(449f94d0) SHA1(2228690532d82d2661285aeb4260689b027597cb), ROM_GROUPWORD | ROM_SKIP(4) )
16681668   ROMX_LOAD( "001vt03a.19", 0x0000004, 0x400000, CRC(50ac8639) SHA1(dd2d3689466990a7c479bb8f11bd930ea45e47b5), ROM_GROUPWORD | ROM_SKIP(4) )
16691669
1670   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1670   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
16711671   ROM_LOAD( "001sd01a.77", 0x0000000, 0x400000, CRC(a851da99) SHA1(2ba24feddafc5fadec155cdb7af305fdffcf6690) )
16721672   ROM_LOAD( "001sd02a.78", 0x0400000, 0x400000, CRC(ca5cec15) SHA1(05e91a602728a048d61bf86aa8d43bb4186aeac1) )
16731673ROM_END
r245577r245578
17211721   ROMX_LOAD( "002-vt05a.21", 0x0c00002, 0x400000, CRC(d32ee9cb) SHA1(a768dfc15899924eb05eccbf8e85cb29c7b60396), ROM_GROUPWORD | ROM_SKIP(4) )
17221722   ROMX_LOAD( "002-vt06a.22", 0x0c00004, 0x400000, CRC(13bf3636) SHA1(7c704bf66b571350207bccc7a2d6ed1ec9de4cd5), ROM_GROUPWORD | ROM_SKIP(4) )
17231723
1724   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1724   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
17251725   ROM_LOAD( "002-sd01a.77", 0x0000000, 0x400000, CRC(6215036b) SHA1(ded71dce98b7f7ef78ef32d966a292bbf0d15332) )
17261726   ROM_LOAD( "002-sd02a.78", 0x0400000, 0x400000, CRC(32b28310) SHA1(5b80750a66c12b035b493d06e3842741a3334d0f) )
17271727   ROM_LOAD( "002-sd03a.79", 0x0800000, 0x400000, CRC(53591413) SHA1(36c7efa1aced0ca38b3ce7b95af28755973698f3) )
r245577r245578
17631763   ROMX_LOAD( "003-vt02a.18", 0x0000002, 0x400000, CRC(da7b956e) SHA1(c57cbb8c51145ae224faba5b6a1a7e61cb2bee64), ROM_GROUPWORD | ROM_SKIP(4) )
17641764   ROMX_LOAD( "003-vt03a.19", 0x0000004, 0x400000, CRC(4fe72cb7) SHA1(9f8e662f0656f201924834d1ee78498d4223745e), ROM_GROUPWORD | ROM_SKIP(4) )
17651765
1766   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1766   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
17671767   ROM_LOAD( "003-sd01a.77", 0x0000000, 0x400000, CRC(c43898ff) SHA1(0e49b87181b56c62a674d255d326f761942b99b1) )
17681768   ROM_LOAD( "003-sd02a.78", 0x0400000, 0x400000, CRC(079a3d5a) SHA1(a97b052de69fee7d605cae30f5a228e6ffeabb26) )
17691769   ROM_LOAD( "003-sd03a.79", 0x0800000, 0x400000, CRC(96c0991a) SHA1(01be872b3e307258236fe96a544417dd8a0bc8bd) )
r245577r245578
18111811   ROMX_LOAD( "004-vt02a.18", 0x0000002, 0x400000, CRC(279fc216) SHA1(eb90cc347745491c1d1b1fb611fd6e227310731c), ROM_GROUPWORD | ROM_SKIP(4) )
18121812   ROMX_LOAD( "004-vt03a.19", 0x0000004, 0x400000, CRC(e0cf6a42) SHA1(dd09b3d05739cf030c820cd7dbaea2e7262764ab), ROM_GROUPWORD | ROM_SKIP(4) )
18131813
1814   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1814   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
18151815   ROM_LOAD( "004-sd01a.77", 0x0000000, 0x400000, CRC(2ef868bd) SHA1(0a1ef002efe6738698ebe98a1c3695b151fdd282) )
18161816   ROM_LOAD( "004-sd02a.78", 0x0400000, 0x400000, CRC(07fb3135) SHA1(56cc8e29ba9b13f82a4c9248bff02e2b7a0c49b0) )
18171817   ROM_LOAD( "004-sd03a.79", 0x0800000, 0x400000, CRC(42571f1d) SHA1(425cbd3f7c8aea1c0f057ea8f186acffb0091dc0) )
r245577r245578
18821882   ROMX_LOAD( "005vt05a.21", 0x0c00002, 0x400000, CRC(49c82bec) SHA1(09255279edb9a204bbe1cce8cef58d5c81e86d1f), ROM_GROUPWORD | ROM_SKIP(4) )
18831883   ROMX_LOAD( "005vt06a.22", 0x0c00004, 0x400000, CRC(7ba05b6c) SHA1(729c1d182d74998dd904b587a2405f55af9825e0), ROM_GROUPWORD | ROM_SKIP(4) )
18841884
1885   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1885   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
18861886   ROM_LOAD( "005sd01a.77", 0x0000000, 0x400000, CRC(8f68150f) SHA1(a1e5efdfd1ed29f81e25c8da669851ddb7b0c826) )
18871887   ROM_LOAD( "005sd02a.78", 0x0400000, 0x400000, CRC(6b4da6a0) SHA1(8606c413c129635bdaaa37254edbfd19b10426bb) )
18881888   ROM_LOAD( "005sd03a.79", 0x0800000, 0x400000, CRC(a529fab3) SHA1(8559d402c8f66f638590b8b57ec9efa775010c96) )
r245577r245578
19471947   ROMX_LOAD( "006vt02a.18", 0x0000002, 0x400000, CRC(150eb717) SHA1(9acb067346eb386256047c0f1d24dc8fcc2118ca), ROM_GROUPWORD | ROM_SKIP(4) )
19481948   ROMX_LOAD( "006vt03a.19", 0x0000004, 0x400000, CRC(021cfcaf) SHA1(fb8b5f50d3490b31f0a4c3e6d3ae1b98bae41c97), ROM_GROUPWORD | ROM_SKIP(4) )
19491949
1950   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
1950   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
19511951   ROM_LOAD( "006sd01a.77", 0x0000000, 0x400000, CRC(790efb6d) SHA1(23ddd3ee8ae808e58cbcaf92a9ef56d3ca6289b5) )
19521952   ROM_LOAD( "006sd02a.78", 0x0400000, 0x400000, CRC(f7f020c7) SHA1(b72fde4ff6384b80166a3cb67d31bf7afda750bc) )
19531953   ROM_LOAD( "006sd03a.79", 0x0800000, 0x400000, CRC(1a678084) SHA1(f52efb6145102d289f332d8341d89a5d231ba003) )
r245577r245578
20142014   ROMX_LOAD( "007vt02a.18", 0x0000002, 0x400000, CRC(f365f608) SHA1(035fd9b829b7720c4aee6fdf204c080e6157994f), ROM_GROUPWORD | ROM_SKIP(4) )
20152015   ROMX_LOAD( "007vt03a.19", 0x0000004, 0x400000, CRC(ba05654d) SHA1(b7fe532732c0af7860c8eded3c5abd304d74e08e), ROM_GROUPWORD | ROM_SKIP(4) )
20162016
2017   ROM_REGION( 0x1000000, "samples", 0 ) /* Sound Samples */
2017   ROM_REGION( 0x1000000, "l7a1045", 0 ) /* Sound Samples */
20182018   ROM_LOAD( "007sd01a.77", 0x0000000, 0x400000, CRC(1afb48c6) SHA1(b072d4fe72d6c5267864818d300b32e85b426213) )
20192019   ROM_LOAD( "007sd02a.78", 0x0400000, 0x400000, CRC(c65f1dd5) SHA1(7f504c585a10c1090dbd1ac31a3a0db920c992a0) )
20202020   ROM_LOAD( "007sd03a.79", 0x0800000, 0x400000, CRC(356f25c8) SHA1(5250865900894232960686f40c5da35b3868b78c) )
trunk/src/mame/drivers/iteagle.c
r245577r245578
135135   MCFG_ITEAGLE_FPGA_ADD(            ":pci:06.0")
136136   MCFG_ITEAGLE_IDE_ADD(             ":pci:06.1")
137137   MCFG_ES1373_ADD(                  ":pci:07.0")
138   MCFG_ES1373_IRQ_ADD(              ":maincpu", MIPS3_IRQ3)
138139   MCFG_VOODOO_ADD(                  ":pci:09.0")
139140   MCFG_ITEAGLE_EEPROM_ADD(          ":pci:0a.0")
140141
r245577r245578
161162   PORT_DIPSETTING(0x1, "Medium" )
162163   PORT_DIPSETTING(0x0, "Low" )
163164   PORT_DIPSETTING(0x2, "Low_Alt" )
164   PORT_DIPNAME( 0xC, 0x0, "Always" )
165165
166   PORT_START("SW51")
167   PORT_DIPNAME( 0x3, 0x0, "Mode" )
168   PORT_DIPSETTING(0x0, "Normal" )
169   PORT_DIPSETTING(0x1, "Operator" )
170
171   PORT_START("IN1")
172   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
173   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
174   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Left" )
175   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Right" )
176   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Fly By" )
177   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Backspin" )
178   PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED )
179   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 )
180   PORT_BIT( 0xfe00, IP_ACTIVE_HIGH, IPT_UNUSED )
181
182   PORT_START("SYSTEM")
183   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE )
184   PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_HIGH )
185   PORT_BIT( 0x00fc, IP_ACTIVE_HIGH, IPT_UNUSED )
186   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_VOLUME_UP )
187   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
188   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BILL1 )
189   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNUSED )
190   PORT_BIT( 0x3000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
191   PORT_DIPNAME( 0xC000, 0xC000, "Voltage" )
192   PORT_DIPSETTING(0xC000, "OK" )
193   PORT_DIPSETTING(0x8000, "Low" )
194   PORT_DIPSETTING(0x4000, "High" )
195   PORT_DIPSETTING(0x0000, "Not Detected" )
196
197   PORT_START("TRACKX1")
198   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1)
199
200   PORT_START("TRACKY1")
201   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1)
202
166203   PORT_START("VERSION")
167204   PORT_DIPNAME( 0x0F00, 0x0000, "GAME" )
168205   PORT_DIPNAME( 0x00F0, 0x0000, "MAJOR" )
r245577r245578
243280   ROM_LOAD( "17s20lpc_sb4.u26", 0x000000, 0x008000, CRC(62c4af8a) SHA1(6eca277b9c66a401990599e98fdca64a9e38cc9a) ) \
244281   ROM_LOAD( "17s20lpc_sb5.u26", 0x008000, 0x008000, CRC(c88b9d42) SHA1(b912d0fc50ecdc6a198c626f6e1644e8405fac6e) ) \
245282   ROM_LOAD( "17s50a_red1.u26", 0x010000, 0x020000, CRC(f5cf3187) SHA1(83b4a14de9959e5a776d97d424945d43501bda7f) ) \
246   ROM_REGION( 0x80, "eeprom", 0 ) \
247   ROM_COPY( "fpga", 0x0, 0x0, 0x80 ) \
248283   ROM_REGION( 0x2000, "pals", 0 ) \
249284   ROM_LOAD( "e2-card1.u22.jed", 0x000000, 0x000bd1, CRC(9d1e1ace) SHA1(287d6a30e9f32137ef4eba54f0effa092c97a6eb) ) \
250285   ROM_LOAD( "e2-res3.u117.jed", 0x001000, 0x000bd1, CRC(4f1ff45a) SHA1(213cbdd6cd37ad9b5bfc9545084892a68d29f5ff) )
251286
287
252288ROM_START( iteagle )
253289   EAGLE_BIOS
254290
trunk/src/mame/drivers/peplus.c
r245577r245578
146146             XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Multi-Poker Data
147147             XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
148148             XMP00013, XMP00022 & XMP00026 Use the WING Board add-on & CG2346 + CAPX2346 for Spanish paytables
149             XMP00025 Uses the Wing Board add-on and is for the International markets. Auto Hold always enabled.
149             XMP00025 Uses the XM000xxP Multi-Poker Data roms and is for the International markets. Auto Hold always enabled.
150150   XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom
151151  XKnnnnnn  Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms
152   XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267
152   XnnnnnnK Spot Keno Data. Uses CG2120 with CAPX1267
153153  XSnnnnnn  Slot Programs. Different options for each set, but all use the same XnnnnnnS data roms
154154  XnnnnnnT  Tournament Slot Programs? Different options for each set, but all use the same XnnnnnnS data roms
155155   XnnnnnnS Slot Data. Each set requires specific CG graphics + CAP color prom
r245577r245578
97239723GAMEL(1995, pex0054p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker",   0, layout_pe_poker )
97249724GAMEL(1995, pex0055p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker",   0, layout_pe_poker )
97259725GAMEL(1995, pex0055pa, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
9726GAMEL(1995, pex0055pb, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAP2399 not dumped */
9726GAMEL(1995, pex0055pb, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
97279727GAMEL(1995, pex0055pc, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker (Horseshoe)", 0, layout_pe_poker )
9728GAMEL(1995, pex0055pd, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAP2389 not dumped */
9728GAMEL(1995, pex0055pd, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAPX2389 not dumped */
97299729GAMEL(1995, pex0055pe, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker",   0, layout_pe_poker )
97309730GAMEL(1995, pex0055pf, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker",   0, layout_pe_poker )
97319731GAMEL(1995, pex0055pg, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker",   0, layout_pe_poker )
r245577r245578
98219821GAMEL(1995, pex2272p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002272P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
98229822GAMEL(1995, pex2275p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002275P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
98239823GAMEL(1995, pex2276p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
9824GAMEL(1995, pex2283p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
9825GAMEL(1995, pex2284p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
9824GAMEL(1995, pex2283p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX but should have correct colors anyways */
9825GAMEL(1995, pex2284p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX but should have correct colors anyways */
98269826GAMEL(1995, pex2302p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe",  0, layout_pe_poker )
98279827GAMEL(1995, pex2303p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
98289828GAMEL(1995, pex2306p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
trunk/src/mame/drivers/vicdual.c
r245577r245578
10441044   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
10451045}
10461046
1047WRITE8_MEMBER(vicdual_state::carhntds_io_w)
1048{
1049   if (offset & 0x01) { /* invinco_audio_w(space, 0, data); */ }
1050   if (offset & 0x02) { /* deepscan_audio_w(0, data) */ }
1051   if (offset & 0x08)  assert_coin_status();
1052   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
1053}
10471054
1055
10481056WRITE8_MEMBER(vicdual_state::sspacaho_io_w)
10491057{
10501058   if (offset & 0x01)  invho2_audio_w(space, 0, data);
r245577r245578
11151123
11161124
11171125static ADDRESS_MAP_START( vicdual_dualgame_map, AS_PROGRAM, 8, vicdual_state )
1118   AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
1126    AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
11191127   AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_videoram_w) AM_SHARE("videoram")
11201128   AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
11211129   AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_characterram_w) AM_SHARE("characterram")
11221130ADDRESS_MAP_END
11231131
1132static ADDRESS_MAP_START( carhntds_dualgame_map, AS_PROGRAM, 8, vicdual_state )
1133   AM_RANGE(0x0000, 0x7fff) AM_ROM // also has part of a rom mapped at 0x4000
1134   AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_videoram_w) AM_SHARE("videoram")
1135   AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
1136   AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_characterram_w) AM_SHARE("characterram")
1137ADDRESS_MAP_END
11241138
11251139static ADDRESS_MAP_START( invho2_io_map, AS_IO, 8, vicdual_state )
11261140   ADDRESS_MAP_GLOBAL_MASK(0x7f)
r245577r245578
11491163   AM_RANGE(0x00, 0x7f) AM_WRITE(invds_io_w)
11501164ADDRESS_MAP_END
11511165
1166static ADDRESS_MAP_START( carhntds_io_map, AS_IO, 8, vicdual_state )
1167   ADDRESS_MAP_GLOBAL_MASK(0x7f)
11521168
1169   AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
1170   AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
1171   AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
1172   AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
1173
1174   /* no decoder, just logic gates, so in theory the
1175      game can write to multiple locations at once */
1176   AM_RANGE(0x00, 0x7f) AM_WRITE(carhntds_io_w)
1177ADDRESS_MAP_END
1178
11531179static ADDRESS_MAP_START( sspacaho_io_map, AS_IO, 8, vicdual_state )
11541180   ADDRESS_MAP_GLOBAL_MASK(0x7f)
11551181
r245577r245578
13391365INPUT_PORTS_END
13401366
13411367
1368static INPUT_PORTS_START( carhntds )
1369   PORT_START("IN0")
1370   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1371   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1372   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001)
1373   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW1:5") // SW1 @ C1, 6-pos (is #6 unconnected?)
1374   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1375   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1376   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
1377   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_4WAY PORT_NAME("P1 Up / Fire Left") // it's UP on Car Hunt but Fire Left on Deep Scan, what was it on the control panel??
1378   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1379
1380   PORT_START("IN1")
1381   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1382   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1383   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002)
1384   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL)
1385   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_4WAY
1386   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
1387   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1388
1389   PORT_START("IN2")
1390   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1391   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1392   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x101)
1393   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_timer_value, NULL)
1394   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
1395   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
1396   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1397
1398   PORT_START("IN3")
1399   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1400   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
1401   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x102)
1402   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_read_coin_status, NULL)
1403   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Game Select") PORT_TOGGLE
1404   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
1405   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1406
1407   PORT_COIN_DEFAULT
1408
1409   PORT_START("FAKE_LIVES1")
1410   PORT_DIPNAME( 0x03, 0x01, "Car Hunt Lives" )   PORT_DIPLOCATION("SW1:1,2")
1411   PORT_DIPSETTING(    0x03, "1" )
1412   PORT_DIPSETTING(    0x02, "2" )
1413   PORT_DIPSETTING(    0x01, "3" )
1414   PORT_DIPSETTING(    0x00, "4" )
1415
1416   PORT_START("FAKE_LIVES2")
1417   PORT_DIPNAME( 0x03, 0x03, "Deep Scan Lives" )     PORT_DIPLOCATION("SW1:3,4")
1418   PORT_DIPSETTING(    0x02, "1" )
1419   PORT_DIPSETTING(    0x01, "2" )
1420   PORT_DIPSETTING(    0x00, "3" )
1421   PORT_DIPSETTING(    0x03, "4" )
1422INPUT_PORTS_END
1423
1424
13421425static INPUT_PORTS_START( invds )
13431426   PORT_START("IN0")
13441427   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
r245577r245578
18831966MACHINE_CONFIG_END
18841967
18851968
1969
18861970static MACHINE_CONFIG_DERIVED( invho2, vicdual_dualgame_root )
18871971
18881972   /* basic machine hardware */
r245577r245578
18961980MACHINE_CONFIG_END
18971981
18981982
1983
18991984static MACHINE_CONFIG_DERIVED( invds, vicdual_dualgame_root )
19001985
19011986   /* basic machine hardware */
r245577r245578
19071992   MCFG_FRAGMENT_ADD(invinco_audio)
19081993MACHINE_CONFIG_END
19091994
1995static MACHINE_CONFIG_DERIVED( carhntds, vicdual_dualgame_root )
1996   /* basic machine hardware */
1997   MCFG_CPU_MODIFY("maincpu")
1998   MCFG_CPU_PROGRAM_MAP(carhntds_dualgame_map)
1999   MCFG_CPU_IO_MAP(carhntds_io_map)
2000MACHINE_CONFIG_END
19102001
2002
19112003static MACHINE_CONFIG_DERIVED( sspacaho, vicdual_dualgame_root )
19122004
19132005   /* basic machine hardware */
r245577r245578
29853077   ROM_LOAD( "316-0206.u14", 0x0000, 0x0020, CRC(9617d796) SHA1(7cff2741866095ff42eadd8022bea349ec8d2f39) )    /* control PROM */
29863078ROM_END
29873079
3080ROM_START( carhntds )
3081   ROM_REGION( 0x10000, "maincpu", 0 )
3082   ROM_LOAD( "epr617.u33",      0x0000, 0x0400, CRC(0bbfdb4e) SHA1(383599276923264602a0b5efeac9697d9c15a20f) )
3083   ROM_CONTINUE(0x4000, 0x400)
3084   ROM_LOAD( "epr618.u32",      0x0400, 0x0400, CRC(5a080b1d) SHA1(3c3d6b8b16d9a8976ee63435e949b67f025e38d8) )
3085   ROM_LOAD( "epr619.u31",      0x0800, 0x0400, CRC(c6f2f399) SHA1(4bb34816042ec352b0bb71d2d654ebb6fb5083e9) )
3086   ROM_LOAD( "epr620.u30",      0x0c00, 0x0400, CRC(d9deb88f) SHA1(a863f29cfed782c8871a2268aa28a67ccced1b45) )
3087   ROM_LOAD( "epr621.u29",      0x1000, 0x0400, CRC(43e5de5c) SHA1(3adff5042be73f4693cee7977c88f425e930532d) )
3088   ROM_LOAD( "epr622.u28",      0x1400, 0x0400, CRC(c881a3bc) SHA1(fbff24c4075103fd686cfb376b08cf0677522222) )
3089   ROM_LOAD( "epr623.u27",      0x1800, 0x0400, CRC(297e7f42) SHA1(9e1042fe96f3bf55228b759b905467eff814ad84) )
3090   ROM_LOAD( "epr624.u26",      0x1c00, 0x0400, CRC(dc943125) SHA1(39f18e29cc3d03ee1b98a969f739e22dfd76b6f7) )
3091   ROM_LOAD( "epr625.u8",       0x2000, 0x0400, CRC(c86a0842) SHA1(5c59fe64985936b847a4c033a805153f627b1883) )
3092   ROM_LOAD( "epr626.u7",       0x2400, 0x0400, CRC(9a48c939) SHA1(2c898810f6fd97d4a6edb97236aaa29d08f5598a) )
3093   ROM_LOAD( "epr627.u6",       0x2800, 0x0400, CRC(b4b147e2) SHA1(8880f80708711b253f5da352679820500680ebab) )
3094   ROM_LOAD( "epr628.u5",       0x2c00, 0x0400, CRC(aecf3c26) SHA1(2f4419c6ccf03042cf32a415160e41d52fd0ef9c) )
3095   ROM_LOAD( "epr629.u4",       0x3000, 0x0400, CRC(c5be665b) SHA1(8bb145c140afa6166f08881b7e820335c3f83c08) )
3096   ROM_LOAD( "epr630.u3",       0x3400, 0x0400, CRC(4312388b) SHA1(d0b53d505276754651d2aeda4b17f2d600f65166) )
3097   ROM_LOAD( "epr631.u2",       0x3800, 0x0400, CRC(6766c7e5) SHA1(05b0ac31894c3c80d3940206aac2ef21a96ff849) )
3098   ROM_LOAD( "epr632.u1",       0x3c00, 0x0400, CRC(ae68b7d5) SHA1(de449b62ba39331a4ecf3dfe81511b21b7c881d5) )
3099
3100   ROM_REGION( 0x0020, "proms", 0 )
3101   ROM_LOAD( "316.0390.u49", 0x0000, 0x0020, CRC(a0811288) SHA1(a6e78c26f7eeb70125eee715eb6a3e3c82ed7fc8) )    /* color PROM */
3102ROM_END
3103
29883104ROM_START( tranqgun )
29893105   ROM_REGION( 0x10000, "maincpu", 0 )
29903106   ROM_LOAD( "u33.bin",      0x0000, 0x0400, CRC(6d50e902) SHA1(1d14c0b28cb3650bb57b9ef61265fe94c453d648) )
r245577r245578
35173633GAME( 1980, samurai,    0,        samurai,   samurai,   driver_device, 0, ROT270, "Sega", "Samurai", GAME_NO_SOUND )
35183634GAME( 1979, invinco,    0,        invinco,   invinco,   driver_device, 0, ROT270, "Sega", "Invinco", GAME_IMPERFECT_SOUND )
35193635GAME( 1979, invds,      0,        invds,     invds,     driver_device, 0, ROT270, "Sega", "Invinco / Deep Scan", GAME_IMPERFECT_SOUND )
3636GAME( 1979, carhntds,   0,        carhntds,  carhntds,  driver_device, 0, ROT270, "Sega", "Car Hunt / Deep Scan (France)", GAME_NO_SOUND )
35203637GAME( 1980, tranqgun,   0,        tranqgun,  tranqgun,  driver_device, 0, ROT270, "Sega", "Tranquilizer Gun", GAME_NO_SOUND )
35213638GAME( 1980, spacetrk,   0,        spacetrk,  spacetrk,  driver_device, 0, ROT270, "Sega", "Space Trek (upright)", GAME_NO_SOUND )
35223639GAME( 1980, spacetrkc,  spacetrk, spacetrk,  spacetrkc, driver_device, 0, ROT270, "Sega", "Space Trek (cocktail)", GAME_NO_SOUND )
trunk/src/mame/drivers/warpsped.c
r245577r245578
105105   tilemap_t   *m_text_tilemap;
106106   tilemap_t   *m_starfield_tilemap;
107107   UINT8       m_regs[0x28];
108   DECLARE_WRITE8_MEMBER(warpspeed_hardware_w);
109   DECLARE_WRITE8_MEMBER(warpspeed_vidram_w);
110   DECLARE_DRIVER_INIT(warpspeed);
111   TILE_GET_INFO_MEMBER(get_warpspeed_text_tile_info);
112   TILE_GET_INFO_MEMBER(get_warpspeed_starfield_tile_info);
108
109   DECLARE_WRITE8_MEMBER(hardware_w);
110   DECLARE_WRITE8_MEMBER(vidram_w);
111
112   TILE_GET_INFO_MEMBER(get_text_tile_info);
113   TILE_GET_INFO_MEMBER(get_starfield_tile_info);
114
113115   virtual void video_start();
114116   DECLARE_PALETTE_INIT(warpspeed);
115   UINT32 screen_update_warpspeed(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
117
118   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
116119   void draw_circles(bitmap_ind16 &bitmap);
117120};
118121
119WRITE8_MEMBER(warpspeed_state::warpspeed_hardware_w)
122WRITE8_MEMBER(warpspeed_state::hardware_w)
120123{
121124   m_regs[offset] = data;
122125}
123126
124TILE_GET_INFO_MEMBER(warpspeed_state::get_warpspeed_text_tile_info)
127TILE_GET_INFO_MEMBER(warpspeed_state::get_text_tile_info)
125128{
126129   UINT8 code = m_videoram[tile_index] & 0x3f;
127130   SET_TILE_INFO_MEMBER(0, code, 0, 0);
128131}
129132
130TILE_GET_INFO_MEMBER(warpspeed_state::get_warpspeed_starfield_tile_info)
133TILE_GET_INFO_MEMBER(warpspeed_state::get_starfield_tile_info)
131134{
132135   UINT8 code = 0x3f;
133136   if ( tile_index & 1 )
r245577r245578
137140   SET_TILE_INFO_MEMBER(1, code, 0, 0);
138141}
139142
140WRITE8_MEMBER(warpspeed_state::warpspeed_vidram_w)
143WRITE8_MEMBER(warpspeed_state::vidram_w)
141144{
142145   m_videoram[offset] = data;
143146   m_text_tilemap->mark_tile_dirty(offset);
r245577r245578
145148
146149void warpspeed_state::video_start()
147150{
148   m_text_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_warpspeed_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
151   m_text_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
149152   m_text_tilemap->set_transparent_pen(0);
150   m_starfield_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_warpspeed_starfield_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
153   m_starfield_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_starfield_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
151154   m_starfield_tilemap->mark_all_dirty();
155   
156   save_item(NAME(m_regs));
152157}
153158
154159static void draw_circle_line(bitmap_ind16 &bitmap, int x, int y, int l, int color)
r245577r245578
170175   }
171176}
172177
173static void warpspeed_draw_circle(bitmap_ind16 &bitmap, INT16 cx, INT16 cy, UINT16 radius, UINT8 color )
178static void draw_circle(bitmap_ind16 &bitmap, INT16 cx, INT16 cy, UINT16 radius, UINT8 color )
174179{
175180   /* Bresenham's circle algorithm */
176181
r245577r245578
210215      {
211216         continue;
212217      }
213      warpspeed_draw_circle(bitmap, midx + 128 + 16, midy + 128 + 16, radius, (m_regs[i*8 + 6] & 0x07) + 2);
218      draw_circle(bitmap, midx + 128 + 16, midy + 128 + 16, radius, (m_regs[i*8 + 6] & 0x07) + 2);
214219   }
215220}
216221
217UINT32 warpspeed_state::screen_update_warpspeed(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
222UINT32 warpspeed_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
218223{
219224   m_starfield_tilemap->draw(screen, bitmap, cliprect, 0, 0);
220225   draw_circles(bitmap);
r245577r245578
224229
225230static ADDRESS_MAP_START( warpspeed_map, AS_PROGRAM, 8, warpspeed_state )
226231   AM_RANGE(0x0000, 0x0dff) AM_ROM
227   AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(warpspeed_vidram_w ) AM_SHARE("videoram")
232   AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(vidram_w ) AM_SHARE("videoram")
228233   AM_RANGE(0x1c00, 0x1cff) AM_RAM AM_SHARE("workram")
229234ADDRESS_MAP_END
230235
r245577r245578
234239   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
235240   AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW")
236241   AM_RANGE(0x03, 0x03) AM_READ_PORT("IN2")
237   AM_RANGE(0x00, 0x27) AM_WRITE(warpspeed_hardware_w )
242   AM_RANGE(0x00, 0x27) AM_WRITE(hardware_w )
238243ADDRESS_MAP_END
239244
240245static INPUT_PORTS_START( warpspeed )
r245577r245578
278283   PORT_DIPUNUSED( 0x80, 0x00 )
279284INPUT_PORTS_END
280285
281static const gfx_layout warpspeed_charlayout =
286static const gfx_layout charlayout =
282287{
283288   8,8,
284289   RGN_FRAC(1,1),
r245577r245578
290295};
291296
292297static GFXDECODE_START( warpspeed )
293   GFXDECODE_ENTRY( "gfx1", 0, warpspeed_charlayout,   0, 1  )
294   GFXDECODE_ENTRY( "gfx2", 0, warpspeed_charlayout,   0, 1  )
298   GFXDECODE_ENTRY( "gfx1", 0, charlayout,   0, 1  )
299   GFXDECODE_ENTRY( "gfx2", 0, charlayout,   0, 1  )
295300GFXDECODE_END
296301
297302PALETTE_INIT_MEMBER(warpspeed_state, warpspeed)
r245577r245578
322327   MCFG_SCREEN_SIZE((32)*8, (32)*8)
323328   MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 8*8, 32*8-1)
324329   MCFG_SCREEN_PALETTE("palette")
325   MCFG_SCREEN_UPDATE_DRIVER(warpspeed_state, screen_update_warpspeed)
330   MCFG_SCREEN_UPDATE_DRIVER(warpspeed_state, screen_update)
326331
327332   MCFG_GFXDECODE_ADD("gfxdecode", "palette", warpspeed)
328333   MCFG_PALETTE_ADD("palette", 2+8)
r245577r245578
364369
365370ROM_END
366371
367DRIVER_INIT_MEMBER(warpspeed_state,warpspeed)
368{
369}
370372
371GAME( 1979?, warpsped,  0,      warpspeed, warpspeed, warpspeed_state, warpspeed, ROT0, "Meadows Games, Inc.", "Warp Speed (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_NO_SOUND ) // year not shown, 1979 is according to date stamps on PCB chips.
373GAME( 1979?, warpsped,  0,      warpspeed, warpspeed, driver_device, 0, ROT0, "Meadows Games, Inc.", "Warp Speed (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // year not shown, 1979 is according to date stamps on PCB chips.
trunk/src/mame/drivers/wiz.c
r245577r245578
9494  original (weird), or some strange form of protection.
9595- Is wiz protection emulation complete?
9696- Wiz: the supplier of the screenshot says there still may be some wrong
97  colors. Just before the break on Level 2 there is a cresent moon,
97  colors. Just before the break on Level 2 there is a crescent moon,
9898  the background should probably be black.
9999
100100
r245577r245578
177177#include "emu.h"
178178#include "cpu/z80/z80.h"
179179#include "sound/ay8910.h"
180#include "sound/discrete.h"
181180#include "includes/wiz.h"
182181
183182
r245577r245578
11471146}
11481147
11491148
1150GAME( 1983, stinger,  0,       stinger, stinger,  wiz_state,     stinger, ROT90,  "Seibu Denshi", "Stinger", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1151GAME( 1983, stinger2, stinger, stinger, stinger2, wiz_state,     stinger, ROT90,  "Seibu Denshi", "Stinger (prototype?)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1152GAME( 1984, scion,    0,       scion,   scion,    driver_device, 0,       ROT0,   "Seibu Denshi", "Scion", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1153GAME( 1984, scionc,   scion,   scion,   scion,    driver_device, 0,       ROT0,   "Seibu Denshi (Cinematronics license)", "Scion (Cinematronics)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1154GAME( 1984, kungfut,  0,       kungfut, kungfut,  driver_device, 0,       ROT0,   "Seibu Kaihatsu", "Kung-Fu Taikun (set 1)", 0 )
1155GAME( 1984, kungfuta, kungfut, kungfut, kungfut,  driver_device, 0,       ROT0,   "Seibu Kaihatsu", "Kung-Fu Taikun (set 2)", 0 ) /* board was a bootleg but set might still be original */
1156GAME( 1985, wiz,      0,       wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu", "Wiz", 0 )
1157GAME( 1985, wizt,     wiz,     wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 1)", 0 )
1158GAME( 1985, wizta,    wiz,     wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 2)", 0 )
1149GAME( 1983, stinger,  0,       stinger, stinger,  wiz_state,     stinger, ROT90,  "Seibu Denshi", "Stinger", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1150GAME( 1983, stinger2, stinger, stinger, stinger2, wiz_state,     stinger, ROT90,  "Seibu Denshi", "Stinger (prototype?)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1151GAME( 1984, scion,    0,       scion,   scion,    driver_device, 0,       ROT0,   "Seibu Denshi", "Scion", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1152GAME( 1984, scionc,   scion,   scion,   scion,    driver_device, 0,       ROT0,   "Seibu Denshi (Cinematronics license)", "Scion (Cinematronics)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1153GAME( 1984, kungfut,  0,       kungfut, kungfut,  driver_device, 0,       ROT0,   "Seibu Kaihatsu", "Kung-Fu Taikun (set 1)", GAME_SUPPORTS_SAVE )
1154GAME( 1984, kungfuta, kungfut, kungfut, kungfut,  driver_device, 0,       ROT0,   "Seibu Kaihatsu", "Kung-Fu Taikun (set 2)", GAME_SUPPORTS_SAVE ) /* board was a bootleg but set might still be original */
1155GAME( 1985, wiz,      0,       wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu", "Wiz", GAME_SUPPORTS_SAVE )
1156GAME( 1985, wizt,     wiz,     wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 1)", GAME_SUPPORTS_SAVE )
1157GAME( 1985, wizta,    wiz,     wiz,     wiz,      driver_device, 0,       ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 2)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/bigstrkb.h
r245577r245578
33public:
44   bigstrkb_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_maincpu(*this, "maincpu"),
7      m_gfxdecode(*this, "gfxdecode"),
8      m_palette(*this, "palette"),
69      m_videoram2(*this, "videoram2"),
710      m_videoram3(*this, "videoram3"),
811      m_videoram(*this, "videoram"),
912      m_spriteram(*this, "spriteram"),
1013      m_vidreg1(*this, "vidreg1"),
11      m_vidreg2(*this, "vidreg2"),
12      m_maincpu(*this, "maincpu"),
13      m_gfxdecode(*this, "gfxdecode"),
14      m_palette(*this, "palette") { }
14      m_vidreg2(*this, "vidreg2") { }
1515
16   tilemap_t *m_tilemap;
17   tilemap_t *m_tilemap2;
18   tilemap_t *m_tilemap3;
16   required_device<cpu_device> m_maincpu;
17   required_device<gfxdecode_device> m_gfxdecode;
18   required_device<palette_device> m_palette;
1919
2020   required_shared_ptr<UINT16> m_videoram2;
2121   required_shared_ptr<UINT16> m_videoram3;
2222   required_shared_ptr<UINT16> m_videoram;
2323   required_shared_ptr<UINT16> m_spriteram;
24
2524   required_shared_ptr<UINT16> m_vidreg1;
2625   required_shared_ptr<UINT16> m_vidreg2;
2726
28   DECLARE_WRITE16_MEMBER(bsb_videoram_w);
29   DECLARE_WRITE16_MEMBER(bsb_videoram2_w);
30   DECLARE_WRITE16_MEMBER(bsb_videoram3_w);
31   TILEMAP_MAPPER_MEMBER(bsb_bg_scan);
32   TILE_GET_INFO_MEMBER(get_bsb_tile_info);
33   TILE_GET_INFO_MEMBER(get_bsb_tile2_info);
34   TILE_GET_INFO_MEMBER(get_bsb_tile3_info);
27   tilemap_t *m_tilemap;
28   tilemap_t *m_tilemap2;
29   tilemap_t *m_tilemap3;
30
31   DECLARE_WRITE16_MEMBER(videoram_w);
32   DECLARE_WRITE16_MEMBER(videoram2_w);
33   DECLARE_WRITE16_MEMBER(videoram3_w);
34   
35   TILEMAP_MAPPER_MEMBER(bg_scan);
36   TILE_GET_INFO_MEMBER(get_tile_info);
37   TILE_GET_INFO_MEMBER(get_tile2_info);
38   TILE_GET_INFO_MEMBER(get_tile3_info);
39   
3540   virtual void video_start();
36   UINT32 screen_update_bigstrkb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
41   
42   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3743   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
38   required_device<cpu_device> m_maincpu;
39   required_device<gfxdecode_device> m_gfxdecode;
40   required_device<palette_device> m_palette;
4144};
trunk/src/mame/includes/vicdual.h
r245577r245578
6666   DECLARE_WRITE8_MEMBER(digger_io_w);
6767   DECLARE_WRITE8_MEMBER(invho2_io_w);
6868   DECLARE_WRITE8_MEMBER(invds_io_w);
69   DECLARE_WRITE8_MEMBER(carhntds_io_w);
6970   DECLARE_WRITE8_MEMBER(sspacaho_io_w);
7071   DECLARE_WRITE8_MEMBER(tranqgun_io_w);
7172   DECLARE_WRITE8_MEMBER(spacetrk_io_w);
trunk/src/mame/mame.lst
r245577r245578
28942894ddpdfk          // (c) 2008 Cave (AMI license) - 2008/06/23  MASTER VER 1.5
28952895ddpdfk10        // (c) 2008 Cave (AMI license) - 2008/05/16  MASTER VER
28962896dsmbl           // (c) 2008 Cave (AMI license) - 2008/10/06 MEGABLACK LABEL VER
2897dfkbl           // (c) 2010 Cave (AMI license) - 2010/1/18 BLACK LABEL
28972898
28982899deathsm2
28992900
r245577r245578
43324333samurai         // 289-302 + upgrades (c) 1980 Sega
43334334invinco         // 310-318 (c) 1979 Sega
43344335invds           // 367-382 (c) 1979 Sega
4336carhntds      //
43354337tranqgun        // 413-428 (c) 1980 Sega
43364338            // 450-465  Tranquilizer Gun (different version?)
43374339            // ???-??? Car Hunt / Deep Scan
r245577r245578
79427944// Stern "Berzerk hardware" games
79437945berzerk         // (c) 1980
79447946berzerk1        // (c) 1980
7947berzerkf        // (c) 1980
79457948berzerkg        // (c) 1980
79467949frenzy          // (c) 1982
79477950moonwarp        // (c) 1982 - prototype
trunk/src/mame/video/bigstrkb.c
r245577r245578
4747
4848/* Tilemaps */
4949
50TILEMAP_MAPPER_MEMBER(bigstrkb_state::bsb_bg_scan)
50TILEMAP_MAPPER_MEMBER(bigstrkb_state::bg_scan)
5151{
5252   int offset;
5353
r245577r245578
5858   return offset;
5959}
6060
61TILE_GET_INFO_MEMBER(bigstrkb_state::get_bsb_tile_info)
61TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile_info)
6262{
6363   int tileno,col;
6464
r245577r245578
6868   SET_TILE_INFO_MEMBER(0,tileno,col>>12,0);
6969}
7070
71WRITE16_MEMBER(bigstrkb_state::bsb_videoram_w)
71WRITE16_MEMBER(bigstrkb_state::videoram_w)
7272{
7373   m_videoram[offset] = data;
7474   m_tilemap->mark_tile_dirty(offset);
7575}
7676
77TILE_GET_INFO_MEMBER(bigstrkb_state::get_bsb_tile2_info)
77TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile2_info)
7878{
7979   int tileno,col;
8080
r245577r245578
8484   SET_TILE_INFO_MEMBER(1,tileno,col>>12,0);
8585}
8686
87WRITE16_MEMBER(bigstrkb_state::bsb_videoram2_w)
87WRITE16_MEMBER(bigstrkb_state::videoram2_w)
8888{
8989   m_videoram2[offset] = data;
9090   m_tilemap2->mark_tile_dirty(offset);
9191}
9292
9393
94TILE_GET_INFO_MEMBER(bigstrkb_state::get_bsb_tile3_info)
94TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile3_info)
9595{
9696   int tileno,col;
9797
r245577r245578
101101   SET_TILE_INFO_MEMBER(1,tileno+0x2000,(col>>12)+(0x100/16),0);
102102}
103103
104WRITE16_MEMBER(bigstrkb_state::bsb_videoram3_w)
104WRITE16_MEMBER(bigstrkb_state::videoram3_w)
105105{
106106   m_videoram3[offset] = data;
107107   m_tilemap3->mark_tile_dirty(offset);
r245577r245578
111111
112112void bigstrkb_state::video_start()
113113{
114   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_bsb_tile_info),this),TILEMAP_SCAN_COLS, 8, 8,64,32);
115   m_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_bsb_tile2_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bsb_bg_scan),this), 16, 16,128,64);
116   m_tilemap3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_bsb_tile3_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bsb_bg_scan),this), 16, 16,128,64);
114   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile_info),this),TILEMAP_SCAN_COLS, 8, 8,64,32);
115   m_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile2_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bg_scan),this), 16, 16,128,64);
116   m_tilemap3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile3_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bg_scan),this), 16, 16,128,64);
117117
118118   m_tilemap->set_transparent_pen(15);
119119   //m_tilemap2->set_transparent_pen(15);
120120   m_tilemap3->set_transparent_pen(15);
121121}
122122
123UINT32 bigstrkb_state::screen_update_bigstrkb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
123UINT32 bigstrkb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
124124{
125125//  bitmap.fill(m_palette->black_pen(), cliprect);
126126
r245577r245578
136136   draw_sprites(bitmap,cliprect);
137137   m_tilemap->draw(screen, bitmap, cliprect, 0,0);
138138
139//  popmessage ("Regs %08x %08x %08x %08x",bsb_vidreg2[0],bsb_vidreg2[1],bsb_vidreg2[2],bsb_vidreg2[3]);
139//  popmessage ("Regs %08x %08x %08x %08x",m_vidreg2[0],m_vidreg2[1],m_vidreg2[2],m_vidreg2[3]);
140140   return 0;
141141}
trunk/src/mess/drivers/elecbowl.c
r245577r245578
55  ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.c) **
66
77  Marx Series 300 Electronic Bowling Game
8  Main board:
89  * TMS1100NLL MP3403 DBS 7836 SINGAPORE
10  * 4*SN75492 quad segment driver, 2*SN74259 8-line demultiplexer,
11    2*CD4043 quad r/s input latch
12  * 5 7seg LEDs, 15 lamps(10 lamps projected to bowling pins reflection),
13    1bit-sound with crude volume control
14  * edge connector to sensor board, inputs, ...?
915
10  10 lamps for bowling pins + 3 more bulbs, and 7segs for frame number and
11  scores. Board size is 10-12" by 6-8".
16  lamp translation table: SN74259.u5(mux 1) goes to MESS output lamp5x,
17  SN74259.u6(mux 2) goes to MESS output lamp6x. u1-u3 are SN75492 ICs,
18  where other: u1 A2 is N/C, u3 A1 is from O2 and goes to digits seg C.
1219
13  some clues:
14  - it's from 1978
15  - Merlin is MP3404, Amaze-A-Tron is MP3405, this one is MP3403
16  - it plays some short jingles (you need to be lucky with button mashing)
20    u5 Q0 -> u1 A4 -> L2 (pin #2)       u6 Q0 -> u3 A4 -> L1 (pin #1)
21    u5 Q1 -> u1 A5 -> L4 (pin #4)       u6 Q1 -> u3 A5 -> L5 (pin #5)
22    u5 Q2 -> u1 A6 -> L7 (pin #7)       u6 Q2 -> u2 A3 -> L11 (player 1)
23    u5 Q3 -> u1 A1 -> L8 (pin #8)       u6 Q3 -> u2 A2 -> L12 (player 2)
24    u5 Q4 -> u3 A2 -> L3 (pin #3)       u6 Q4 -> u2 A1 -> L15 (?)
25    u5 Q5 -> u2 A6 -> L6 (pin #6)       u6 Q5 -> u3 A6 -> L14 (?)
26    u5 Q6 -> u2 A5 -> L10 (pin #10)     u6 Q6 -> u1 A3 -> L13 (spare)
27    u5 Q7 -> u2 A4 -> L9 (pin #9)       u6 Q7 -> u3 A3 -> digit 4 B+C
1728
1829***************************************************************************/
1930
r245577r245578
2839      : hh_tms1k_state(mconfig, type, tag)
2940   { }
3041
42   void prepare_display();
3143   DECLARE_WRITE16_MEMBER(write_r);
3244   DECLARE_WRITE16_MEMBER(write_o);
3345   DECLARE_READ8_MEMBER(read_k);
34
35protected:
36   virtual void machine_start();
3746};
3847
3948
4049/***************************************************************************
4150
51  Display
52
53***************************************************************************/
54
55void elecbowl_state::prepare_display()
56{
57   // standard 7segs
58   for (int y = 0; y < 4; y++)
59   {
60      m_display_segmask[y] = 0x7f;
61      m_display_state[y] = (m_r >> (y + 4) & 1) ? m_o : 0;
62   }
63
64   // lamp muxes
65   UINT8 d = m_r >> 1 & 1;
66   m_display_state[5] = (m_r & 1) ? (d << (m_o & 7)) : 0;
67   m_display_state[6] = (m_r >> 2 & 1) ? (d << (m_o & 7)) : 0;
68   
69   // digit 4 is from u6 Q7
70   m_display_segmask[4] = 6;
71   m_display_state[4] = (m_display_state[6] & 0x80) ? 6 : 0;
72
73   set_display_size(8, 7);
74   display_update();
75}
76
77
78
79/***************************************************************************
80
4281  I/O
4382
4483***************************************************************************/
4584
4685WRITE16_MEMBER(elecbowl_state::write_r)
4786{
48   // R4-R7: input mux
49   m_inp_mux = data >> 4 & 0xf;
87   // R5-R7,R10: input mux
88   m_inp_mux = (data >> 5 & 7) | (data >> 7 & 8);
5089
5190   // R9: speaker out
91   // R3,R8: speaker volume..
5292   m_speaker->level_w(data >> 9 & 1);
5393
54   // R10: maybe a switch or other button row?
55   // others: ?
94   // R4-R7: select digit
95   // R0,R2: lamp muxes enable
96   // R1: lamp muxes state
97   m_r = data;
98   prepare_display();
5699}
57100
58101WRITE16_MEMBER(elecbowl_state::write_o)
59102{
60   // ?
103   // O0-O2: lamp mux
104   // O0-O6: digit segments A-G
105   // O7: N/C
106   //if (data & 0x80) printf("%X ",data&0x7f);
107   
108   m_o = data & 0x7f;
109   prepare_display();
61110}
62111
63112READ8_MEMBER(elecbowl_state::read_k)
r245577r245578
74123***************************************************************************/
75124
76125static INPUT_PORTS_START( elecbowl )
77   PORT_START("IN.0") // R4
126   PORT_START("IN.0") // R5
78127   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)
79128   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)
80129   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)
81130   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)
82131
83   PORT_START("IN.1") // R5
132   PORT_START("IN.1") // R6
84133   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
85134   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
86135   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
87   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
136   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) // reset/newgame?
88137
89   PORT_START("IN.2") // R6
138   PORT_START("IN.2") // R7
90139   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
91140   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
92141   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
93   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) // reset/newgame?
142   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)
94143
95   PORT_START("IN.3") // R7
144   PORT_START("IN.3") // R10
96145   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)
97146   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
98147   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)
r245577r245578
107156
108157***************************************************************************/
109158
110void elecbowl_state::machine_start()
111{
112   hh_tms1k_state::machine_start();
113}
114
115
159// output PLA is not dumped
116160static const UINT16 elecbowl_output_pla[0x20] =
117161{
118   /* O output PLA configuration currently unknown */
119   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
120   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
121   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
122   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
162   lA+lB+lC+lD+lE+lF,      // 0
163   lB+lC,                  // 1
164   lA+lB+lG+lE+lD,         // 2
165   lA+lB+lG+lC+lD,         // 3
166   lF+lB+lG+lC,            // 4
167   lA+lF+lG+lC+lD,         // 5
168   lA+lF+lG+lC+lD+lE,      // 6
169   lA+lB+lC,               // 7
170   lA+lB+lC+lD+lE+lF+lG,   // 8
171   lA+lB+lG+lF+lC+lD,      // 9
172   
173   0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
174   0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
175   0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
123176};
124177
125178static MACHINE_CONFIG_START( elecbowl, elecbowl_state )
126179
127180   /* basic machine hardware */
128   MCFG_CPU_ADD("maincpu", TMS1100, 300000) // approximation - unknown freq
181   MCFG_CPU_ADD("maincpu", TMS1100, 350000) // RC osc. R=33K, C=100pf -> ~350kHz
129182   MCFG_TMS1XXX_OUTPUT_PLA(elecbowl_output_pla)
130183   MCFG_TMS1XXX_READ_K_CB(READ8(elecbowl_state, read_k))
131184   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecbowl_state, write_r))
132185   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecbowl_state, write_o))
133186
187   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
134188   MCFG_DEFAULT_LAYOUT(layout_elecbowl)
135189
136190   /* no video! */
r245577r245578
151205
152206ROM_START( elecbowl )
153207   ROM_REGION( 0x0800, "maincpu", 0 )
154   ROM_LOAD( "mp3403", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
208   ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
155209
156210   ROM_REGION( 867, "maincpu:mpla", 0 )
157211   ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
r245577r245578
160214ROM_END
161215
162216
163CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING )
217CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_MECHANICAL | GAME_NOT_WORKING )
trunk/src/mess/drivers/hh_hmcs40.c
r245577r245578
6868   optional_device<speaker_sound_device> m_speaker;
6969
7070   // misc common
71   UINT8 m_r[8];                       // MCU R ports write data
72   UINT16 m_d;                         // MCU D port write data
71   UINT8 m_r[8];                       // MCU R ports write data (optional)
72   UINT16 m_d;                         // MCU D port write data (optional)
7373   UINT8 m_int[2];                     // MCU INT0/1 pins state
7474   UINT16 m_inp_mux;                   // multiplexed inputs mask
7575
r245577r245578
8181   // display common
8282   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
8383   int m_display_maxy;                 // display matrix number of rows
84   int m_display_maxx;                 // display matrix number of columns
84   int m_display_maxx;                 // display matrix number of columns (max 47 for now)
8585
8686   UINT32 m_grid;                      // VFD current row data
8787   UINT64 m_plate;                     // VFD current column data
r245577r245578
9696   void set_display_size(int maxx, int maxy);
9797   void display_matrix(int maxx, int maxy, UINT64 setx, UINT32 sety);
9898
99   // game-specific handlers
100   DECLARE_WRITE8_MEMBER(bambball_plate_w);
101   DECLARE_WRITE16_MEMBER(bambball_grid_w);
102   DECLARE_READ8_MEMBER(bambball_input_r);
103
104   DECLARE_WRITE8_MEMBER(alnattck_plate_w);
105   DECLARE_WRITE16_MEMBER(alnattck_grid_w);
106   DECLARE_READ16_MEMBER(alnattck_input_r);
107
108   DECLARE_WRITE8_MEMBER(packmon_plate_w);
109   DECLARE_WRITE16_MEMBER(packmon_grid_w);
110   DECLARE_READ16_MEMBER(packmon_input_r);
111
112   DECLARE_WRITE8_MEMBER(zackman_plate_w);
113   DECLARE_WRITE16_MEMBER(zackman_grid_w);
114   void zackman_update_int0();
115   DECLARE_INPUT_CHANGED_MEMBER(zackman_input_changed);
116
117   void cdkong_display();
118   DECLARE_WRITE8_MEMBER(cdkong_plate_w);
119   DECLARE_WRITE16_MEMBER(cdkong_grid_w);
120
121   void cgalaxn_display();
122   DECLARE_WRITE16_MEMBER(cgalaxn_plate_w);
123   DECLARE_WRITE8_MEMBER(cgalaxn_grid_w);
124   DECLARE_READ8_MEMBER(cgalaxn_input_r);
125
126   DECLARE_WRITE8_MEMBER(cpacman_plate_w);
127   DECLARE_WRITE16_MEMBER(cpacman_grid_w);
128   DECLARE_READ8_MEMBER(cpacman_input_r);
129
130   DECLARE_WRITE8_MEMBER(cmspacmn_plate_w);
131   DECLARE_WRITE16_MEMBER(cmspacmn_grid_w);
132   DECLARE_READ8_MEMBER(cmspacmn_input_r);
133
134   void egalaxn2_display();
135   DECLARE_WRITE8_MEMBER(egalaxn2_plate_w);
136   DECLARE_WRITE16_MEMBER(egalaxn2_grid_w);
137   DECLARE_READ8_MEMBER(egalaxn2_input_r);
138
139   DECLARE_WRITE8_MEMBER(pbqbert_plate_w);
140   DECLARE_WRITE16_MEMBER(pbqbert_grid_w);
141
142   void kingman_display();
143   DECLARE_WRITE8_MEMBER(kingman_plate_w);
144   DECLARE_WRITE16_MEMBER(kingman_grid_w);
145   void kingman_update_int0();
146   DECLARE_INPUT_CHANGED_MEMBER(kingman_input_changed);
147
148   void tmtron_display();
149   DECLARE_WRITE8_MEMBER(tmtron_plate_w);
150   DECLARE_WRITE16_MEMBER(tmtron_grid_w);
151   void tmtron_update_int1();
152   DECLARE_INPUT_CHANGED_MEMBER(tmtron_input_changed);
153
15499protected:
155100   virtual void machine_start();
156101   virtual void machine_reset();
r245577r245578
223168            m_display_decay[y][x] = m_display_wait;
224169
225170         // determine active state
226         int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
171         UINT64 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
227172         active_state[y] |= (ds << x);
228173      }
229174   }
r245577r245578
283228   set_display_size(maxx, maxy);
284229
285230   // update current state
286   UINT64 mask = (1 << maxx) - 1;
231   UINT64 mask = (U64(1) << maxx) - 1;
287232   for (int y = 0; y < maxy; y++)
288      m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
233      m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (U64(1) << maxx)) : 0;
289234
290235   display_update();
291236}
r245577r245578
334279
335280/***************************************************************************
336281
337  Minidrivers (I/O, Inputs, Machine Config)
282  Minidrivers (subclass, I/O, Inputs, Machine Config)
338283
339284***************************************************************************/
340285
r245577r245578
349294
350295***************************************************************************/
351296
352WRITE8_MEMBER(hh_hmcs40_state::bambball_plate_w)
297class bambball_state : public hh_hmcs40_state
353298{
299public:
300   bambball_state(const machine_config &mconfig, device_type type, const char *tag)
301      : hh_hmcs40_state(mconfig, type, tag)
302   { }
303
304   DECLARE_WRITE8_MEMBER(plate_w);
305   DECLARE_WRITE16_MEMBER(grid_w);
306   DECLARE_READ8_MEMBER(input_r);
307};
308
309// handlers
310
311WRITE8_MEMBER(bambball_state::plate_w)
312{
354313   // R1x-R3x, D0-D3: vfd matrix plate
355314   int shift = (offset - HMCS40_PORT_R1X) * 4;
356315   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
357316
358317   // update display
359318   UINT16 plate = BITSWAP16(m_plate,13,8,4,12,9,10,14,1,7,0,15,11,6,3,5,2);
360
361319   display_matrix(16, 9, plate, m_grid);
362320}
363321
364WRITE16_MEMBER(hh_hmcs40_state::bambball_grid_w)
322WRITE16_MEMBER(bambball_state::grid_w)
365323{
366324   // D4: speaker out
367325   m_speaker->level_w(data >> 4 & 1);
r245577r245578
373331   m_grid = data >> 7 & 0x1ff;
374332
375333   // D0-D3: plates (update display there)
376   bambball_plate_w(space, 3 + HMCS40_PORT_R1X, data & 0xf);
334   plate_w(space, 3 + HMCS40_PORT_R1X, data & 0xf);
377335}
378336
379READ8_MEMBER(hh_hmcs40_state::bambball_input_r)
337READ8_MEMBER(bambball_state::input_r)
380338{
381339   // R0x: inputs
382340   return read_inputs(4);
383341}
384342
385343
344// config
345
386346static INPUT_PORTS_START( bambball )
387347   PORT_START("IN.0") // D7 port R0x
388348   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Dribble Low")
r245577r245578
410370   PORT_CONFSETTING(    0x00, "2" )
411371INPUT_PORTS_END
412372
373static MACHINE_CONFIG_START( bambball, bambball_state )
413374
414static MACHINE_CONFIG_START( bambball, hh_hmcs40_state )
415
416375   /* basic machine hardware */
417376   MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation - RC osc.
418   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, bambball_input_r))
419   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, bambball_plate_w))
420   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, bambball_plate_w))
421   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, bambball_plate_w))
422   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, bambball_grid_w))
377   MCFG_HMCS40_READ_R_CB(0, READ8(bambball_state, input_r))
378   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bambball_state, plate_w))
379   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bambball_state, plate_w))
380   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bambball_state, plate_w))
381   MCFG_HMCS40_WRITE_D_CB(WRITE16(bambball_state, grid_w))
423382
424383   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
425384   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
447406
448407***************************************************************************/
449408
450WRITE8_MEMBER(hh_hmcs40_state::packmon_plate_w)
409class packmon_state : public hh_hmcs40_state
451410{
411public:
412   packmon_state(const machine_config &mconfig, device_type type, const char *tag)
413      : hh_hmcs40_state(mconfig, type, tag)
414   { }
415
416   DECLARE_WRITE8_MEMBER(plate_w);
417   DECLARE_WRITE16_MEMBER(grid_w);
418   DECLARE_READ16_MEMBER(input_r);
419};
420
421// handlers
422
423WRITE8_MEMBER(packmon_state::plate_w)
424{
452425   // R0x-R3x, D0-D3: vfd matrix plate
453426   int shift = offset * 4;
454427   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
r245577r245578
456429   // update display
457430   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
458431   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,0,1,2,3,4,5,6,19,18,17,16,15,14,13,12,11,10,9,8,7);
459
460432   display_matrix(20, 10, plate, grid);
461433}
462434
463WRITE16_MEMBER(hh_hmcs40_state::packmon_grid_w)
435WRITE16_MEMBER(packmon_state::grid_w)
464436{
465437   // D4: speaker out
466438   m_speaker->level_w(data >> 4 & 1);
r245577r245578
472444   m_grid = data >> 6 & 0x3ff;
473445
474446   // D0-D3: plate 9-12 (update display there)
475   packmon_plate_w(space, 4, data & 0xf);
447   plate_w(space, 4, data & 0xf);
476448}
477449
478READ16_MEMBER(hh_hmcs40_state::packmon_input_r)
450READ16_MEMBER(packmon_state::input_r)
479451{
480452   // D5: multiplexed inputs
481453   return read_inputs(5);
482454}
483455
484456
457// config
458
485459static INPUT_PORTS_START( packmon )
486460   PORT_START("IN.0") // D11 line D5
487461   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START )
r245577r245578
499473   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
500474INPUT_PORTS_END
501475
476static MACHINE_CONFIG_START( packmon, packmon_state )
502477
503static MACHINE_CONFIG_START( packmon, hh_hmcs40_state )
504
505478   /* basic machine hardware */
506479   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
507   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, packmon_plate_w))
508   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, packmon_plate_w))
509   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, packmon_plate_w))
510   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, packmon_plate_w))
511   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, packmon_grid_w))
512   MCFG_HMCS40_READ_D_CB(READ16(hh_hmcs40_state, packmon_input_r))
480   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(packmon_state, plate_w))
481   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(packmon_state, plate_w))
482   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(packmon_state, plate_w))
483   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(packmon_state, plate_w))
484   MCFG_HMCS40_WRITE_D_CB(WRITE16(packmon_state, grid_w))
485   MCFG_HMCS40_READ_D_CB(READ16(packmon_state, input_r))
513486
514487   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
515488   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
536509
537510***************************************************************************/
538511
539WRITE8_MEMBER(hh_hmcs40_state::zackman_plate_w)
512class zackman_state : public hh_hmcs40_state
540513{
514public:
515   zackman_state(const machine_config &mconfig, device_type type, const char *tag)
516      : hh_hmcs40_state(mconfig, type, tag)
517   { }
518
519   DECLARE_WRITE8_MEMBER(plate_w);
520   DECLARE_WRITE16_MEMBER(grid_w);
521
522   void update_int0();
523   DECLARE_INPUT_CHANGED_MEMBER(input_changed);
524};
525
526// handlers
527
528WRITE8_MEMBER(zackman_state::plate_w)
529{
541530   // R0x-R6x,D0,D1: vfd matrix plate
542531   int shift = offset * 4;
543532   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
r245577r245578
545534   // update display
546535   UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
547536   UINT32 plate = BITSWAP32(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12);
548
549537   display_matrix(29, 8, plate, grid);
550538}
551539
552WRITE16_MEMBER(hh_hmcs40_state::zackman_grid_w)
540WRITE16_MEMBER(zackman_state::grid_w)
553541{
554542   // D2: speaker out
555543   m_speaker->level_w(data >> 2 & 1);
r245577r245578
559547   if (inp_mux != m_inp_mux)
560548   {
561549      m_inp_mux = inp_mux;
562      zackman_update_int0();
550      update_int0();
563551   }
564552   
565553   // D8-D15: vfd matrix grid
566554   m_grid = data >> 8 & 0xff;
567555   
568556   // D0,D1: plate 12,13 (update display there)
569   zackman_plate_w(space, 7, data & 3);
557   plate_w(space, 7, data & 3);
570558}
571559
572void hh_hmcs40_state::zackman_update_int0()
560void zackman_state::update_int0()
573561{
574562   // INT0 on multiplexed inputs
575563   set_interrupt(0, read_inputs(4));
576564}
577565
578566
579INPUT_CHANGED_MEMBER(hh_hmcs40_state::zackman_input_changed)
580{
581   zackman_update_int0();
582}
567// config
583568
584569static INPUT_PORTS_START( zackman )
585570   PORT_START("IN.0") // D11 INT0
586   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, zackman_input_changed, NULL)
571   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, NULL)
587572
588573   PORT_START("IN.1") // D12 INT0
589   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, zackman_input_changed, NULL)
574   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, NULL)
590575
591576   PORT_START("IN.2") // D13 INT0
592   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, zackman_input_changed, NULL)
577   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, NULL)
593578
594579   PORT_START("IN.3") // D14 INT0
595   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, zackman_input_changed, NULL)
580   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, NULL)
596581
597582   PORT_START("IN.4") // INT1
598583   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
599584INPUT_PORTS_END
600585
586INPUT_CHANGED_MEMBER(zackman_state::input_changed)
587{
588   update_int0();
589}
601590
602static MACHINE_CONFIG_START( zackman, hh_hmcs40_state )
603591
592static MACHINE_CONFIG_START( zackman, zackman_state )
593
604594   /* basic machine hardware */
605595   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
606   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, zackman_plate_w))
607   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, zackman_plate_w))
608   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, zackman_plate_w))
609   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, zackman_plate_w))
610   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, zackman_plate_w))
611   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, zackman_plate_w))
612   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, zackman_plate_w))
613   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, zackman_grid_w))
596   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(zackman_state, plate_w))
597   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(zackman_state, plate_w))
598   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(zackman_state, plate_w))
599   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(zackman_state, plate_w))
600   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(zackman_state, plate_w))
601   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(zackman_state, plate_w))
602   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(zackman_state, plate_w))
603   MCFG_HMCS40_WRITE_D_CB(WRITE16(zackman_state, grid_w))
614604
615605   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
616606   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
637627
638628***************************************************************************/
639629
640WRITE8_MEMBER(hh_hmcs40_state::alnattck_plate_w)
630class alnattck_state : public hh_hmcs40_state
641631{
632public:
633   alnattck_state(const machine_config &mconfig, device_type type, const char *tag)
634      : hh_hmcs40_state(mconfig, type, tag)
635   { }
636
637   DECLARE_WRITE8_MEMBER(plate_w);
638   DECLARE_WRITE16_MEMBER(grid_w);
639   DECLARE_READ16_MEMBER(input_r);
640};
641
642// handlers
643
644WRITE8_MEMBER(alnattck_state::plate_w)
645{
642646   // R0x-R3x, D0-D3: vfd matrix plate
643647   int shift = offset * 4;
644648   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
645649
646650   // update display
647651   UINT32 plate = BITSWAP16(m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000);
648
649652   display_matrix(20, 10, plate, m_grid);
650653}
651654
652WRITE16_MEMBER(hh_hmcs40_state::alnattck_grid_w)
655WRITE16_MEMBER(alnattck_state::grid_w)
653656{
654657   // D4: speaker out
655658   m_speaker->level_w(data >> 4 & 1);
r245577r245578
661664   m_grid = data >> 6 & 0x3ff;
662665
663666   // D0-D3: plate 16-19 (update display there)
664   alnattck_plate_w(space, 4, data & 0xf);
667   plate_w(space, 4, data & 0xf);
665668}
666669
667READ16_MEMBER(hh_hmcs40_state::alnattck_input_r)
670READ16_MEMBER(alnattck_state::input_r)
668671{
669672   // D5: multiplexed inputs
670673   return read_inputs(7);
671674}
672675
673676
677// config
678
674679static INPUT_PORTS_START( alnattck )
675680   PORT_START("IN.0") // D5 D7
676681   PORT_CONFNAME( 0x20, 0x00, "Skill Level" )
r245577r245578
696701   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Fire")
697702INPUT_PORTS_END
698703
704static MACHINE_CONFIG_START( alnattck, alnattck_state )
699705
700static MACHINE_CONFIG_START( alnattck, hh_hmcs40_state )
701
702706   /* basic machine hardware */
703707   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
704   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, alnattck_plate_w))
705   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, alnattck_plate_w))
706   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, alnattck_plate_w))
707   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, alnattck_plate_w))
708   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, alnattck_grid_w))
709   MCFG_HMCS40_READ_D_CB(READ16(hh_hmcs40_state, alnattck_input_r))
708   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(alnattck_state, plate_w))
709   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(alnattck_state, plate_w))
710   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(alnattck_state, plate_w))
711   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(alnattck_state, plate_w))
712   MCFG_HMCS40_WRITE_D_CB(WRITE16(alnattck_state, grid_w))
713   MCFG_HMCS40_READ_D_CB(READ16(alnattck_state, input_r))
710714
711715   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
712716   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
734738
735739***************************************************************************/
736740
737void hh_hmcs40_state::cdkong_display()
741class cdkong_state : public hh_hmcs40_state
738742{
743public:
744   cdkong_state(const machine_config &mconfig, device_type type, const char *tag)
745      : hh_hmcs40_state(mconfig, type, tag)
746   { }
747
748   void prepare_display();
749   DECLARE_WRITE8_MEMBER(plate_w);
750   DECLARE_WRITE16_MEMBER(grid_w);
751
752   int m_speaker_volume;
753   TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
754
755protected:
756   virtual void machine_start();
757};
758
759// handlers
760
761// Sound is controlled by two pins: D3 for pitch, and R13 for on/off. When turned
762// off, it does not mute instantly, but volume slowly decays. Until we emulate it
763// with discrete audio, this crude simulation will do.
764
765#define CDKONG_SPEAKER_MAX 0x10000
766#define CDKONG_SPEAKER_DECAY 50
767
768TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
769{
770   m_speaker->set_output_gain(0, m_speaker_volume / (double)CDKONG_SPEAKER_MAX);
771   m_speaker_volume /= 2;
772}
773
774
775void cdkong_state::prepare_display()
776{
739777   UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4);
740
741778   display_matrix(29, 11, plate, m_grid);
742779}
743780
744WRITE8_MEMBER(hh_hmcs40_state::cdkong_plate_w)
781WRITE8_MEMBER(cdkong_state::plate_w)
745782{
746   // R13: speaker on?
747   if (offset == HMCS40_PORT_R1X)
748   {
749      //strobes at the start of a sound.. on+slow decay?
750      //printf("%d",data>>3&1);
751      data &= 7;
752   }
783   // R13: speaker on
784   if (offset == HMCS40_PORT_R1X && data & 8)
785      m_speaker_volume = CDKONG_SPEAKER_MAX;
753786   
754787   // R0x-R6x: vfd matrix plate
755788   int shift = offset * 4;
756789   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
757   cdkong_display();
758
759   //             12
760   //             16,15,17,28,nc, 8, 5, 1, 3,19,22,26,13, 9, 6, 2,10,18,21,25,sp, 7, 4, 0,14,20,24,27
761   // 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
762   //   ,  ,  ,24, 0,16, 8, 1,  ,17, 9, 2,18,10,25,27,26, 3,15,27,  ,11,14,22, 6,13,21, 5,19,12,20, 4
763   
790   prepare_display();
764791}
765792
766WRITE16_MEMBER(hh_hmcs40_state::cdkong_grid_w)
793WRITE16_MEMBER(cdkong_state::grid_w)
767794{
768795   // D3: speaker out
769796   m_speaker->level_w(data >> 3 & 1);
770797
771798   // D4-D14: vfd matrix grid
772799   m_grid = data >> 4 & 0x7ff;
773   cdkong_display();
800   prepare_display();
774801}
775802
776803
804// config
805
777806static INPUT_PORTS_START( cdkong )
778807   PORT_START("IN.0") // port D
779808   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
r245577r245578
787816INPUT_PORTS_END
788817
789818
790static MACHINE_CONFIG_START( cdkong, hh_hmcs40_state )
819void cdkong_state::machine_start()
820{
821   hh_hmcs40_state::machine_start();
791822
823   // zerofill/init
824   m_speaker_volume = 0;
825   save_item(NAME(m_speaker_volume));
826}
827
828static MACHINE_CONFIG_START( cdkong, cdkong_state )
829
792830   /* basic machine hardware */
793831   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
794   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, cdkong_plate_w))
795   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, cdkong_plate_w))
796   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, cdkong_plate_w))
797   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, cdkong_plate_w))
798   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, cdkong_plate_w))
799   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, cdkong_plate_w))
800   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, cdkong_plate_w))
801   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, cdkong_grid_w))
832   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(cdkong_state, plate_w))
833   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cdkong_state, plate_w))
834   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cdkong_state, plate_w))
835   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(cdkong_state, plate_w))
836   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(cdkong_state, plate_w))
837   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cdkong_state, plate_w))
838   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cdkong_state, plate_w))
839   MCFG_HMCS40_WRITE_D_CB(WRITE16(cdkong_state, grid_w))
802840   MCFG_HMCS40_READ_D_CB(IOPORT("IN.0"))
803841
842   MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY))
804843   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
805844   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
806
845   
807846   /* no video! */
808847
809848   /* sound hardware */
r245577r245578
823862  * Hitachi HD38800A70 MCU
824863  * cyan/red VFD display Futaba DM-36Z 2H, with color overlay
825864
865  Select game mode on start:
866  - P1 Left:  Galaxian (default game)
867  - P1 Right: Midway's Attackers
868  - P2 Left:  Head-to-Head Galaxian (2-player mode, short)
869  - P2 Right: Head-to-Head Galaxian (2-player mode, long)
870
826871  NOTE!: MESS external artwork is recommended
827872
828873***************************************************************************/
829874
830void hh_hmcs40_state::cgalaxn_display()
875class cgalaxn_state : public hh_hmcs40_state
831876{
877public:
878   cgalaxn_state(const machine_config &mconfig, device_type type, const char *tag)
879      : hh_hmcs40_state(mconfig, type, tag)
880   { }
881
882   void prepare_display();
883   DECLARE_WRITE16_MEMBER(plate_w);
884   DECLARE_WRITE8_MEMBER(grid_w);
885   DECLARE_READ8_MEMBER(input_r);
886};
887
888// handlers
889
890void cgalaxn_state::prepare_display()
891{
832892   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3);
833893   UINT16 plate = BITSWAP16(m_plate,15,14,5,4,3,2,1,0,7,11,12,9,8,10,6,13);
834
835   //display_matrix(14, 12, plate, grid);
836   
837   grid<<=1; //todo -1
838   display_matrix(14, 13, plate, grid);
894   display_matrix(14, 12, plate, grid);
839895}
840896
841WRITE8_MEMBER(hh_hmcs40_state::cgalaxn_grid_w)
897WRITE8_MEMBER(cgalaxn_state::grid_w)
842898{
843899   // D0: speaker out
844900   m_speaker->level_w(data & 1);
r245577r245578
847903
848904   // D2-D15: vfd matrix plate
849905   m_plate = data >> 2 & 0x3fff;
850   cgalaxn_display();
851   
852   //        a, f, g, c, e, d, h, b, p, o, n, m, k, i
853   
854   //        0, 5, 6, 2, 4, 3, 7, 1,13,12,11,10, 9, 8
855   // 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
856   // 15,14, 5, 4, 3, 2, 1, 0, 7,11,12, 9, 8,10, 6,13
906   prepare_display();
857907}
858908
859WRITE16_MEMBER(hh_hmcs40_state::cgalaxn_plate_w)
909WRITE16_MEMBER(cgalaxn_state::plate_w)
860910{
861911   // R10,R11: input mux
862912   if (offset == HMCS40_PORT_R1X)
r245577r245578
865915   // R1x-R3x: vfd matrix grid
866916   int shift = (offset - HMCS40_PORT_R1X) * 4;
867917   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
868   
869   cgalaxn_display();
870
871   //              9, 8, 7, 6, 5, 4, 3, 2, 1,11,12,10
872   
873   //              8, 7, 6, 5, 4, 3, 2, 1, 0,10,11, 9
874   // 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
875   // 15,14,13,12, 1, 2, 0,11,10, 9, 8, 7, 6, 5, 4, 3
918   prepare_display();
876919}
877920
878READ8_MEMBER(hh_hmcs40_state::cgalaxn_input_r)
921READ8_MEMBER(cgalaxn_state::input_r)
879922{
880923   // R0x: multiplexed inputs
881924   return read_inputs(2);
882925}
883926
884927
928// config
929
885930static INPUT_PORTS_START( cgalaxn )
886931   PORT_START("IN.0") // R10 port R0x
887932   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
r245577r245578
902947   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
903948INPUT_PORTS_END
904949
950static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state )
905951
906static MACHINE_CONFIG_START( cgalaxn, hh_hmcs40_state )
907
908952   /* basic machine hardware */
909953   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
910   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, cgalaxn_input_r))
911   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, cgalaxn_grid_w))
912   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, cgalaxn_grid_w))
913   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, cgalaxn_grid_w))
914   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, cgalaxn_plate_w))
954   MCFG_HMCS40_READ_R_CB(0, READ8(cgalaxn_state, input_r))
955   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cgalaxn_state, grid_w))
956   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cgalaxn_state, grid_w))
957   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(cgalaxn_state, grid_w))
958   MCFG_HMCS40_WRITE_D_CB(WRITE16(cgalaxn_state, plate_w))
915959
916960   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
917961   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
934978  * board label Coleco 75690
935979  * Hitachi HD38820A28/29 MCU
936980  * cyan/red VFD display Futaba DM-34Z 2A, with color overlay
981 
982  known releases:
983  - Japan: Super Pack Monster, by Gakken
984  - USA: Pac-Man, published by Coleco (name-license from Midway)
937985
986  Select game mode on start:
987  - P1 Right: Pac-Man (default game)
988  - P1 Left:  Head-to-Head Pac-Man (2-player mode)
989  - P1 Up:    Eat & Run
990  - P1 Down:  Demo
991
938992  NOTE!: MESS external artwork is recommended
939 
940  The game is started by pushing a P1 joystick direction, selecting a game mode:
941  - Right: Pac-Man (default game)
942  - Left:  Head-to-Head Pac-Man (2-player mode)
943  - Up:    Eat & Run
944  - Down:  Demo
945993
946994***************************************************************************/
947995
948WRITE8_MEMBER(hh_hmcs40_state::cpacman_plate_w)
996class cpacman_state : public hh_hmcs40_state
949997{
998public:
999   cpacman_state(const machine_config &mconfig, device_type type, const char *tag)
1000      : hh_hmcs40_state(mconfig, type, tag)
1001   { }
1002
1003   DECLARE_WRITE8_MEMBER(plate_w);
1004   DECLARE_WRITE16_MEMBER(grid_w);
1005   DECLARE_READ8_MEMBER(input_r);
1006};
1007
1008// handlers
1009
1010WRITE8_MEMBER(cpacman_state::plate_w)
1011{
9501012   // R1x-R6x, D1,D2: vfd matrix plate
9511013   int shift = (offset - HMCS40_PORT_R1X) * 4;
9521014   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
r245577r245578
9541016   // update display
9551017   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
9561018   UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,0,1,2,3,8,9,10,11,16,17,18,19,25,26,23,22,21,20,24,15,14,13,12,4,5,6,7);
957
9581019   display_matrix(27, 11, plate, grid);
9591020}
9601021
961WRITE16_MEMBER(hh_hmcs40_state::cpacman_grid_w)
1022WRITE16_MEMBER(cpacman_state::grid_w)
9621023{
9631024   // D0: speaker out
9641025   m_speaker->level_w(data & 1);
r245577r245578
9701031   m_grid = data >> 5 & 0x7ff;
9711032
9721033   // D1,D2: plate 8,14 (update display there)
973   cpacman_plate_w(space, 6 + HMCS40_PORT_R1X, data >> 1 & 3);
1034   plate_w(space, 6 + HMCS40_PORT_R1X, data >> 1 & 3);
9741035}
9751036
976READ8_MEMBER(hh_hmcs40_state::cpacman_input_r)
1037READ8_MEMBER(cpacman_state::input_r)
9771038{
9781039   // R0x: multiplexed inputs
9791040   return read_inputs(3);
9801041}
9811042
9821043
1044// config
1045
9831046static INPUT_PORTS_START( cpacman )
9841047   PORT_START("IN.0") // D13 port R0x
9851048   PORT_CONFNAME( 0x01, 0x01, "Skill Level" )
986   PORT_CONFSETTING(    0x01, "1" )
987   PORT_CONFSETTING(    0x00, "2" )
1049   PORT_CONFSETTING(    0x00, "1" )
1050   PORT_CONFSETTING(    0x01, "2" )
9881051   PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
9891052
9901053   PORT_START("IN.1") // D14 port R0x
r245577r245578
10001063   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
10011064INPUT_PORTS_END
10021065
1066static MACHINE_CONFIG_START( cpacman, cpacman_state )
10031067
1004static MACHINE_CONFIG_START( cpacman, hh_hmcs40_state )
1005
10061068   /* basic machine hardware */
10071069   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
1008   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, cpacman_input_r))
1009   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1010   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1011   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1012   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1013   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1014   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, cpacman_plate_w))
1015   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, cpacman_grid_w))
1070   MCFG_HMCS40_READ_R_CB(0, READ8(cpacman_state, input_r))
1071   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cpacman_state, plate_w))
1072   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cpacman_state, plate_w))
1073   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(cpacman_state, plate_w))
1074   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(cpacman_state, plate_w))
1075   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cpacman_state, plate_w))
1076   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cpacman_state, plate_w))
1077   MCFG_HMCS40_WRITE_D_CB(WRITE16(cpacman_state, grid_w))
10161078
10171079   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
10181080   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
10361098  * Hitachi HD38820A61 MCU
10371099  * cyan/red VFD display Futaba DM-60Z 3I, with color overlay
10381100
1101  Select game mode on start:
1102  - P1 Left:  Ms. Pac-Man (default game)
1103  - P1 Down:  Head-to-Head Ms. Pac-Man (2-player mode)
1104  - P1 Up:    Demo
1105 
1106  BTANB note: in demo-mode, she hardly walks to the upper two rows, never
1107  finishing the level.
1108
10391109  NOTE!: MESS external artwork is recommended
10401110
10411111***************************************************************************/
10421112
1043WRITE8_MEMBER(hh_hmcs40_state::cmspacmn_plate_w)
1113class cmspacmn_state : public hh_hmcs40_state
10441114{
1115public:
1116   cmspacmn_state(const machine_config &mconfig, device_type type, const char *tag)
1117      : hh_hmcs40_state(mconfig, type, tag)
1118   { }
1119
1120   DECLARE_WRITE8_MEMBER(plate_w);
1121   DECLARE_WRITE16_MEMBER(grid_w);
1122   DECLARE_READ8_MEMBER(input_r);
1123};
1124
1125// handlers
1126
1127WRITE8_MEMBER(cmspacmn_state::plate_w)
1128{
10451129   // R1x-R6x, D0,D1: vfd matrix plate
10461130   int shift = (offset - HMCS40_PORT_R1X) * 4;
10471131   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
10481132
10491133   // update display
1050   //                   22,17                               18,13
1051   //                    6,11,23,21,20,19,15, 2, 1, 0,32,31,30,29,12, 9, 4, 8,25,26,27,28,16,10, 3, 5
1052   // 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
1053   // 14,13,12, 4, 5, 6, 7,24,23,25,22,21,20,13,24, 3,19,14,12,11,24, 2,10, 8, 7,25, 0, 9, 1,18,17,16
1054   
1055   UINT16 grid = BITSWAP16(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,1,0);
1134   UINT16 grid = BITSWAP16(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,1);
10561135   UINT64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16);
1057
10581136   display_matrix(33, 12, plate, grid);
10591137}
10601138
1061WRITE16_MEMBER(hh_hmcs40_state::cmspacmn_grid_w)
1139WRITE16_MEMBER(cmspacmn_state::grid_w)
10621140{
10631141   // D2: speaker out
10641142   m_speaker->level_w(data >> 2 & 1);
r245577r245578
10701148   m_grid = data >> 5 & 0x7ff;
10711149
10721150   // D0,D1: plate 11+17,6+22 (update display there)
1073   cmspacmn_plate_w(space, 6 + HMCS40_PORT_R1X, data & 3);
1151   plate_w(space, 6 + HMCS40_PORT_R1X, data & 3);
10741152}
10751153
1076READ8_MEMBER(hh_hmcs40_state::cmspacmn_input_r)
1154READ8_MEMBER(cmspacmn_state::input_r)
10771155{
10781156   // R0x: multiplexed inputs
10791157   return read_inputs(3);
10801158}
10811159
10821160
1161// config
1162
10831163static INPUT_PORTS_START( cmspacmn )
10841164   PORT_START("IN.0") // D13 port R0x
1085   PORT_CONFNAME( 0x01, 0x01, "Skill Level" )
1086   PORT_CONFSETTING(    0x01, "1" )
1087   PORT_CONFSETTING(    0x00, "2" )
1165   PORT_CONFNAME( 0x01, 0x00, "Skill Level" )
1166   PORT_CONFSETTING(    0x00, "1" )
1167   PORT_CONFSETTING(    0x01, "2" )
10881168   PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
10891169
10901170   PORT_START("IN.1") // D14 port R0x
r245577r245578
11001180   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
11011181INPUT_PORTS_END
11021182
1183static MACHINE_CONFIG_START( cmspacmn, cmspacmn_state )
11031184
1104static MACHINE_CONFIG_START( cmspacmn, hh_hmcs40_state )
1105
11061185   /* basic machine hardware */
11071186   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
1108   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, cmspacmn_input_r))
1109   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1110   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1111   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1112   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1113   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1114   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, cmspacmn_plate_w))
1115   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, cmspacmn_grid_w))
1187   MCFG_HMCS40_READ_R_CB(0, READ8(cmspacmn_state, input_r))
1188   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cmspacmn_state, plate_w))
1189   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cmspacmn_state, plate_w))
1190   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(cmspacmn_state, plate_w))
1191   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(cmspacmn_state, plate_w))
1192   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cmspacmn_state, plate_w))
1193   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cmspacmn_state, plate_w))
1194   MCFG_HMCS40_WRITE_D_CB(WRITE16(cmspacmn_state, grid_w))
11161195
11171196   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
11181197   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
11391218
11401219***************************************************************************/
11411220
1142void hh_hmcs40_state::egalaxn2_display()
1221class egalaxn2_state : public hh_hmcs40_state
11431222{
1223public:
1224   egalaxn2_state(const machine_config &mconfig, device_type type, const char *tag)
1225      : hh_hmcs40_state(mconfig, type, tag)
1226   { }
1227
1228   void prepare_display();
1229   DECLARE_WRITE8_MEMBER(plate_w);
1230   DECLARE_WRITE16_MEMBER(grid_w);
1231   DECLARE_READ8_MEMBER(input_r);
1232};
1233
1234// handlers
1235
1236void egalaxn2_state::prepare_display()
1237{
11441238   UINT16 grid = BITSWAP16(m_grid,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
11451239   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,15,14,13,12,7,6,5,4,3,2,1,0,19,18,17,16,11,10,9,8);
1146
11471240   display_matrix(24, 15, plate, grid);
11481241}
11491242
1150WRITE16_MEMBER(hh_hmcs40_state::egalaxn2_grid_w)
1243WRITE16_MEMBER(egalaxn2_state::grid_w)
11511244{
11521245   // D0: speaker out
11531246   m_speaker->level_w(data & 1);
r245577r245578
11571250
11581251   // D1-D15: vfd matrix grid
11591252   m_grid = data >> 1;
1160   egalaxn2_display();
1253   prepare_display();
11611254}
11621255
1163WRITE8_MEMBER(hh_hmcs40_state::egalaxn2_plate_w)
1256WRITE8_MEMBER(egalaxn2_state::plate_w)
11641257{
11651258   // R1x-R6x: vfd matrix plate
11661259   int shift = (offset - HMCS40_PORT_R1X) * 4;
11671260   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
1168
1169   egalaxn2_display();
1261   prepare_display();
11701262}
11711263
1172READ8_MEMBER(hh_hmcs40_state::egalaxn2_input_r)
1264READ8_MEMBER(egalaxn2_state::input_r)
11731265{
11741266   // R0x: multiplexed inputs
11751267   return read_inputs(4);
11761268}
11771269
11781270
1271// config
1272
11791273static INPUT_PORTS_START( egalaxn2 )
11801274   PORT_START("IN.0") // D1 port R0x
11811275   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r245577r245578
12071301INPUT_PORTS_END
12081302
12091303
1210static MACHINE_CONFIG_START( egalaxn2, hh_hmcs40_state )
1304static MACHINE_CONFIG_START( egalaxn2, egalaxn2_state )
12111305
12121306   /* basic machine hardware */
12131307   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
1214   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, egalaxn2_input_r))
1215   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1216   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1217   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1218   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1219   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1220   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1221   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, egalaxn2_grid_w))
1308   MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r))
1309   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w))
1310   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w))
1311   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(egalaxn2_state, plate_w))
1312   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(egalaxn2_state, plate_w))
1313   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(egalaxn2_state, plate_w))
1314   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(egalaxn2_state, plate_w))
1315   MCFG_HMCS40_WRITE_D_CB(WRITE16(egalaxn2_state, grid_w))
12221316
12231317   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
12241318   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
12451339
12461340***************************************************************************/
12471341
1248// i/o hookup is identical to Galaxian 2, so we can use those handlers
1342class epacman2_state : public egalaxn2_state
1343{
1344public:
1345   epacman2_state(const machine_config &mconfig, device_type type, const char *tag)
1346      : egalaxn2_state(mconfig, type, tag)
1347   { }
1348};
12491349
1350// handlers are identical to Galaxian 2, so we can use those
1351
1352// config
1353
12501354static INPUT_PORTS_START( epacman2 )
12511355   PORT_START("IN.0") // D1 port R0x
12521356   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    ) PORT_16WAY // separate directional buttons, hence 16way
r245577r245578
12771381   PORT_CONFSETTING(    0x00, "2" )
12781382INPUT_PORTS_END
12791383
1384static MACHINE_CONFIG_START( epacman2, epacman2_state )
12801385
1281static MACHINE_CONFIG_START( epacman2, hh_hmcs40_state )
1282
12831386   /* basic machine hardware */
12841387   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
1285   MCFG_HMCS40_READ_R_CB(0, READ8(hh_hmcs40_state, egalaxn2_input_r))
1286   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1287   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1288   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1289   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1290   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1291   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, egalaxn2_plate_w))
1292   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, egalaxn2_grid_w))
1388   MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r))
1389   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w))
1390   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w))
1391   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(egalaxn2_state, plate_w))
1392   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(egalaxn2_state, plate_w))
1393   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(egalaxn2_state, plate_w))
1394   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(egalaxn2_state, plate_w))
1395   MCFG_HMCS40_WRITE_D_CB(WRITE16(egalaxn2_state, grid_w))
12931396
12941397   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
12951398   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
13161419
13171420***************************************************************************/
13181421
1319WRITE8_MEMBER(hh_hmcs40_state::pbqbert_plate_w)
1422class pbqbert_state : public hh_hmcs40_state
13201423{
1424public:
1425   pbqbert_state(const machine_config &mconfig, device_type type, const char *tag)
1426      : hh_hmcs40_state(mconfig, type, tag)
1427   { }
1428
1429   DECLARE_WRITE8_MEMBER(plate_w);
1430   DECLARE_WRITE16_MEMBER(grid_w);
1431};
1432
1433// handlers
1434
1435WRITE8_MEMBER(pbqbert_state::plate_w)
1436{
13211437   // R0x-R6x,D8: vfd matrix plate
13221438   int shift = offset * 4;
13231439   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
13241440   
13251441   // update display
13261442   UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23);
1327   
13281443   display_matrix(30, 8, plate, m_grid);
13291444}
13301445
1331WRITE16_MEMBER(hh_hmcs40_state::pbqbert_grid_w)
1446WRITE16_MEMBER(pbqbert_state::grid_w)
13321447{
13331448   // D14: speaker out
13341449   m_speaker->level_w(data >> 14 & 1);
r245577r245578
13371452   m_grid = data & 0xff;
13381453
13391454   // D8: plate 25 (update display there)
1340   pbqbert_plate_w(space, 7, data >> 8 & 1);
1455   plate_w(space, 7, data >> 8 & 1);
13411456}
13421457
13431458
1459// config
1460
13441461static INPUT_PORTS_START( pbqbert )
13451462   PORT_START("IN.0") // port D
13461463   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // up-left
r245577r245578
13501467   PORT_BIT( 0xe1ff, IP_ACTIVE_HIGH, IPT_UNUSED )
13511468INPUT_PORTS_END
13521469
1470static MACHINE_CONFIG_START( pbqbert, pbqbert_state )
13531471
1354static MACHINE_CONFIG_START( pbqbert, hh_hmcs40_state )
1355
13561472   /* basic machine hardware */
13571473   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
1358   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1359   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1360   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1361   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1362   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1363   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1364   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(hh_hmcs40_state, pbqbert_plate_w))
1365   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, pbqbert_grid_w))
1474   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(pbqbert_state, plate_w))
1475   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(pbqbert_state, plate_w))
1476   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pbqbert_state, plate_w))
1477   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(pbqbert_state, plate_w))
1478   MCFG_HMCS40_WRITE_R_CB(4, WRITE8(pbqbert_state, plate_w))
1479   MCFG_HMCS40_WRITE_R_CB(5, WRITE8(pbqbert_state, plate_w))
1480   MCFG_HMCS40_WRITE_R_CB(6, WRITE8(pbqbert_state, plate_w))
1481   MCFG_HMCS40_WRITE_D_CB(WRITE16(pbqbert_state, grid_w))
13661482   MCFG_HMCS40_READ_D_CB(IOPORT("IN.0"))
13671483
13681484   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
r245577r245578
13911507
13921508***************************************************************************/
13931509
1394void hh_hmcs40_state::kingman_display()
1510class kingman_state : public hh_hmcs40_state
13951511{
1512public:
1513   kingman_state(const machine_config &mconfig, device_type type, const char *tag)
1514      : hh_hmcs40_state(mconfig, type, tag)
1515   { }
1516
1517   void prepare_display();
1518   DECLARE_WRITE8_MEMBER(plate_w);
1519   DECLARE_WRITE16_MEMBER(grid_w);
1520
1521   void update_int0();
1522   DECLARE_INPUT_CHANGED_MEMBER(input_changed);
1523};
1524
1525// handlers
1526
1527void kingman_state::prepare_display()
1528{
13961529   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
13971530   UINT32 plate = BITSWAP24(m_plate,23,6,7,5,4,3,2,1,0,13,12,20,19,18,17,16,10,11,9,8,14,15,13,12);
1398
13991531   display_matrix(23, 9, plate, grid);
14001532}
14011533
1402WRITE8_MEMBER(hh_hmcs40_state::kingman_plate_w)
1534WRITE8_MEMBER(kingman_state::plate_w)
14031535{
14041536   // R0x-R3x: vfd matrix plate
14051537   int shift = offset * 4;
14061538   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
1407   
1408   //                               14,13
1409   //          12,11,10, 9, 8, 2, 3, 1, 0, 6, 7, 5, 4,21,22,20,19,18,17,16,15
1410   // 23,22,21,20,19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
1411   // 23, 6, 7, 5, 4, 3, 2, 1, 0,13,12,20,19,18,17,16,10,11, 9, 8,14,15,13,12
1412   
1413   kingman_display();
1539   prepare_display();
14141540}
14151541
1416WRITE16_MEMBER(hh_hmcs40_state::kingman_grid_w)
1542WRITE16_MEMBER(kingman_state::grid_w)
14171543{
14181544   // D6: speaker out
14191545   m_speaker->level_w(data >> 6 & 1);
r245577r245578
14231549   if (inp_mux != m_inp_mux)
14241550   {
14251551      m_inp_mux = inp_mux;
1426      kingman_update_int0();
1552      update_int0();
14271553   }
14281554   
14291555   // D7-D15: vfd matrix grid
r245577r245578
14311557   
14321558   // D0-D4: more plates
14331559   m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
1434   kingman_display();
1560   prepare_display();
14351561}
14361562
1437void hh_hmcs40_state::kingman_update_int0()
1563void kingman_state::update_int0()
14381564{
14391565   // INT0 on multiplexed inputs
14401566   set_interrupt(0, read_inputs(4));
14411567}
14421568
14431569
1444INPUT_CHANGED_MEMBER(hh_hmcs40_state::kingman_input_changed)
1445{
1446   kingman_update_int0();
1447}
1570// config
14481571
14491572static INPUT_PORTS_START( kingman )
14501573   PORT_START("IN.0") // D12 INT0
1451   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, kingman_input_changed, NULL)
1574   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, NULL)
14521575
14531576   PORT_START("IN.1") // D13 INT0
1454   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, kingman_input_changed, NULL)
1577   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, NULL)
14551578
14561579   PORT_START("IN.2") // D14 INT0
1457   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, kingman_input_changed, NULL)
1580   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, NULL)
14581581
14591582   PORT_START("IN.3") // D15 INT0
1460   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, kingman_input_changed, NULL)
1583   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, NULL)
14611584
14621585   PORT_START("IN.4") // INT1
14631586   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
1587INPUT_PORTS_END
14641588
1589INPUT_CHANGED_MEMBER(kingman_state::input_changed)
1590{
1591   update_int0();
1592}
14651593
1466INPUT_PORTS_END
14671594
1595static MACHINE_CONFIG_START( kingman, kingman_state )
14681596
1469static MACHINE_CONFIG_START( kingman, hh_hmcs40_state )
1470
14711597   /* basic machine hardware */
14721598   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
1473   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, kingman_plate_w))
1474   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, kingman_plate_w))
1475   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, kingman_plate_w))
1476   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, kingman_plate_w))
1477   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, kingman_grid_w))
1599   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(kingman_state, plate_w))
1600   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(kingman_state, plate_w))
1601   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(kingman_state, plate_w))
1602   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(kingman_state, plate_w))
1603   MCFG_HMCS40_WRITE_D_CB(WRITE16(kingman_state, grid_w))
14781604
14791605   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
14801606   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
15021628
15031629***************************************************************************/
15041630
1505void hh_hmcs40_state::tmtron_display()
1631class tmtron_state : public hh_hmcs40_state
15061632{
1633public:
1634   tmtron_state(const machine_config &mconfig, device_type type, const char *tag)
1635      : hh_hmcs40_state(mconfig, type, tag)
1636   { }
1637
1638   void prepare_display();
1639   DECLARE_WRITE8_MEMBER(plate_w);
1640   DECLARE_WRITE16_MEMBER(grid_w);
1641
1642   void update_int1();
1643   DECLARE_INPUT_CHANGED_MEMBER(input_changed);
1644};
1645
1646// handlers
1647
1648void tmtron_state::prepare_display()
1649{
15071650   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,1,2,3,4,5,6,7,8,9,0);
15081651   UINT32 plate = BITSWAP24(m_plate,23,5,2,21,1,6,7,9,10,11,21,0,19,3,4,8,3,18,17,16,12,13,14,15);
1509
15101652   display_matrix(23, 10, plate, grid);
15111653}
15121654
1513WRITE8_MEMBER(hh_hmcs40_state::tmtron_plate_w)
1655WRITE8_MEMBER(tmtron_state::plate_w)
15141656{
15151657   // R0x-R3x: vfd matrix plate
15161658   int shift = offset * 4;
15171659   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
1518   
1519   tmtron_display();
1660   prepare_display();
15201661}
15211662
1522WRITE16_MEMBER(hh_hmcs40_state::tmtron_grid_w)
1663WRITE16_MEMBER(tmtron_state::grid_w)
15231664{
15241665   // D4: speaker out
15251666   m_speaker->level_w(data >> 4 & 1);
r245577r245578
15291670   if (inp_mux != m_inp_mux)
15301671   {
15311672      m_inp_mux = inp_mux;
1532      tmtron_update_int1();
1673      update_int1();
15331674   }
15341675   
15351676   // D6-D15: vfd matrix grid
r245577r245578
15371678   
15381679   // D0-D3,D5: more plates
15391680   m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x2f0000);
1540   tmtron_display();
1681   prepare_display();
15411682}
15421683
1543
1544void hh_hmcs40_state::tmtron_update_int1()
1684void tmtron_state::update_int1()
15451685{
15461686   // INT1 on multiplexed inputs
15471687   set_interrupt(1, read_inputs(4));
15481688}
15491689
1550INPUT_CHANGED_MEMBER(hh_hmcs40_state::tmtron_input_changed)
1551{
1552   tmtron_update_int1();
1553}
15541690
1691// config
1692
15551693static INPUT_PORTS_START( tmtron )
15561694   PORT_START("IN.0") // D12 INT1
1557   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, tmtron_input_changed, NULL) PORT_16WAY // separate directional buttons, hence 16way
1695   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, NULL) PORT_16WAY // separate directional buttons, hence 16way
15581696
15591697   PORT_START("IN.1") // D13 INT1
1560   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, tmtron_input_changed, NULL) PORT_16WAY // "
1698   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, NULL) PORT_16WAY // "
15611699
15621700   PORT_START("IN.2") // D14 INT1
1563   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, tmtron_input_changed, NULL) PORT_16WAY // "
1701   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, NULL) PORT_16WAY // "
15641702
15651703   PORT_START("IN.3") // D15 INT1
1566   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, tmtron_input_changed, NULL) PORT_16WAY // "
1704   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, NULL) PORT_16WAY // "
15671705
15681706   PORT_START("IN.4") // INT0
15691707   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
15701708INPUT_PORTS_END
15711709
1710INPUT_CHANGED_MEMBER(tmtron_state::input_changed)
1711{
1712   update_int1();
1713}
15721714
1573static MACHINE_CONFIG_START( tmtron, hh_hmcs40_state )
15741715
1716static MACHINE_CONFIG_START( tmtron, tmtron_state )
1717
15751718   /* basic machine hardware */
15761719   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
1577   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(hh_hmcs40_state, tmtron_plate_w))
1578   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(hh_hmcs40_state, tmtron_plate_w))
1579   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(hh_hmcs40_state, tmtron_plate_w))
1580   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(hh_hmcs40_state, tmtron_plate_w))
1581   MCFG_HMCS40_WRITE_D_CB(WRITE16(hh_hmcs40_state, tmtron_grid_w))
1720   MCFG_HMCS40_WRITE_R_CB(0, WRITE8(tmtron_state, plate_w))
1721   MCFG_HMCS40_WRITE_R_CB(1, WRITE8(tmtron_state, plate_w))
1722   MCFG_HMCS40_WRITE_R_CB(2, WRITE8(tmtron_state, plate_w))
1723   MCFG_HMCS40_WRITE_R_CB(3, WRITE8(tmtron_state, plate_w))
1724   MCFG_HMCS40_WRITE_D_CB(WRITE16(tmtron_state, grid_w))
15821725
15831726   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
15841727   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
r245577r245578
17061849CONS( 1983, zackman,   0,        0, zackman,  zackman,  driver_device, 0, "Bandai", "Zackman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
17071850
17081851CONS( 1981, alnattck,  0,        0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
1709CONS( 1982, cdkong,    0,        0, cdkong,   cdkong,   driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
1852CONS( 1982, cdkong,    0,        0, cdkong,   cdkong,   driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND )
17101853CONS( 1982, cgalaxn,   0,        0, cgalaxn,  cgalaxn,  driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
1711CONS( 1981, cpacman,   0,        0, cpacman,  cpacman,  driver_device, 0, "Gakken (Coleco license)", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) // original version is Super Puck Monster, by Gakken
1712CONS( 1981, cpacmanr1, cpacman,  0, cpacman,  cpacman,  driver_device, 0, "Gakken (Coleco license)", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) // "
1854CONS( 1981, cpacman,   0,        0, cpacman,  cpacman,  driver_device, 0, "Gakken (Coleco license)", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) // original version is Super Puck Monster, by Gakken
1855CONS( 1981, cpacmanr1, cpacman,  0, cpacman,  cpacman,  driver_device, 0, "Gakken (Coleco license)", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) // "
17131856CONS( 1983, cmspacmn,  0,        0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
17141857
17151858CONS( 1981, egalaxn2,  0,        0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
trunk/src/mess/drivers/hh_pic16.c
r245577r245578
5151   UINT8 m_b;                          // MCU port B data
5252   UINT8 m_c;                          // MCU port C data
5353
54   virtual void machine_start();
55
5654   // display common
5755   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
5856   int m_display_maxy;                 // display matrix number of rows
59   int m_display_maxx;                 // display matrix number of columns
57   int m_display_maxx;                 // display matrix number of columns (max 31 for now)
6058
6159   UINT32 m_display_state[0x20];       // display matrix rows data (last bit is used for always-on)
6260   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
r245577r245578
6866   void set_display_size(int maxx, int maxy);
6967   void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
7068
71   // game-specific handlers
72   DECLARE_WRITE8_MEMBER(maniac_output_w);
69protected:
70   virtual void machine_start();
71   virtual void machine_reset();
7372};
7473
7574
75// machine start/reset
76
7677void hh_pic16_state::machine_start()
7778{
7879   // zerofill
r245577r245578
9899   save_item(NAME(m_c));
99100}
100101
102void hh_pic16_state::machine_reset()
103{
104}
101105
102106
107
103108/***************************************************************************
104109
105110  Helper Functions
r245577r245578
124129            m_display_decay[y][x] = m_display_wait;
125130
126131         // determine active state
127         int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
132         UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
128133         active_state[y] |= (ds << x);
129134      }
130135   }
r245577r245578
195200
196201/***************************************************************************
197202
198  Minidrivers (I/O, Inputs, Machine Config)
203  Minidrivers (subclass, I/O, Inputs, Machine Config)
199204
200205***************************************************************************/
201206
r245577r245578
207212
208213***************************************************************************/
209214
210WRITE8_MEMBER(hh_pic16_state::maniac_output_w)
215class maniac_state : public hh_pic16_state
211216{
217public:
218   maniac_state(const machine_config &mconfig, device_type type, const char *tag)
219      : hh_pic16_state(mconfig, type, tag)
220   { }
221
222   DECLARE_WRITE8_MEMBER(output_w);
223};
224
225// handlers
226
227WRITE8_MEMBER(maniac_state::output_w)
228{
212229   // B,C: outputs
213230   offset -= PIC16C5x_PORTB;
214231   if (offset)
r245577r245578
228245}
229246
230247
248// config
249
231250static INPUT_PORTS_START( maniac )
232251   PORT_START("IN.0") // port A
233252   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // bottom-right
r245577r245578
239258
240259static const INT16 maniac_speaker_levels[] = { 0, 32767, -32768, 0 };
241260
242static MACHINE_CONFIG_START( maniac, hh_pic16_state )
261static MACHINE_CONFIG_START( maniac, maniac_state )
243262
244263   /* basic machine hardware */
245264   MCFG_CPU_ADD("maincpu", PIC16C55, 850000) // RC osc. R=13.4K, C=470pf, but unknown RC curve - measured 800-890kHz
246265   MCFG_PIC16C5x_READ_A_CB(IOPORT("IN.0"))
247   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(hh_pic16_state, maniac_output_w))
248   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(hh_pic16_state, maniac_output_w))
266   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(maniac_state, output_w))
267   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(maniac_state, output_w))
249268   MCFG_PIC16C5x_SET_CONFIG(0) // ?
250269
251270   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1))
trunk/src/mess/drivers/hh_tms1k.c
r245577r245578
161161            m_display_decay[y][x] = m_display_wait;
162162
163163         // determine active state
164         int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
164         UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
165165         active_state[y] |= (ds << x);
166166      }
167167   }
r245577r245578
228228   display_update();
229229}
230230
231void hh_tms1k_state::display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask)
232{
233   // expects m_display_segmask to be not-0
234   for (int y = 0; y < maxy; y++)
235      m_display_segmask[y] &= segmask;
231236
237   display_matrix(maxx, maxy, setx, sety);
238}
239
240
232241UINT8 hh_tms1k_state::read_inputs(int columns)
233242{
234243   UINT8 ret = 0;
r245577r245578
263272
264273/***************************************************************************
265274
266  Minidrivers (I/O, Inputs, Machine Config)
275  Minidrivers (subclass, I/O, Inputs, Machine Config)
267276
268277***************************************************************************/
269278
r245577r245578
290299
291300***************************************************************************/
292301
293void hh_tms1k_state::mathmagi_display()
302class mathmagi_state : public hh_tms1k_state
294303{
304public:
305   mathmagi_state(const machine_config &mconfig, device_type type, const char *tag)
306      : hh_tms1k_state(mconfig, type, tag)
307   { }
308
309   void prepare_display();
310   DECLARE_WRITE16_MEMBER(write_r);
311   DECLARE_WRITE16_MEMBER(write_o);
312   DECLARE_READ8_MEMBER(read_k);
313};
314
315// handlers
316
317void mathmagi_state::prepare_display()
318{
295319   // R0-R7: 7seg leds
296320   for (int y = 0; y < 8; y++)
297321   {
r245577r245578
309333   display_update();
310334}
311335
312WRITE16_MEMBER(hh_tms1k_state::mathmagi_write_r)
336WRITE16_MEMBER(mathmagi_state::write_r)
313337{
314338   // R3,R5-R7,R9,R10: input mux
315339   m_inp_mux = (data >> 3 & 1) | (data >> 4 & 0xe) | (data >> 5 & 0x30);
316340
317341   // +others:
318342   m_r = data;
319   mathmagi_display();
343   prepare_display();
320344}
321345
322WRITE16_MEMBER(hh_tms1k_state::mathmagi_write_o)
346WRITE16_MEMBER(mathmagi_state::write_o)
323347{
324348   // O1-O7: led segments A-G
325349   // O0: N/C
r245577r245578
327351   m_o = data;
328352}
329353
330READ8_MEMBER(hh_tms1k_state::mathmagi_read_k)
354READ8_MEMBER(mathmagi_state::read_k)
331355{
332356   return read_inputs(6);
333357}
334358
335359
360// config
361
336362/* physical button layout and labels is like this:
337363
338364    ON     ONE       [SEL] [NXT] [?]   [/]
r245577r245578
382408   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
383409INPUT_PORTS_END
384410
411
385412// output PLA is not dumped
386413static const UINT16 mathmagi_output_pla[0x20] =
387414{
r245577r245578
419446   lA+lF+lE+lD+lC          // G
420447};
421448
422static MACHINE_CONFIG_START( mathmagi, hh_tms1k_state )
449static MACHINE_CONFIG_START( mathmagi, mathmagi_state )
423450
424451   /* basic machine hardware */
425452   MCFG_CPU_ADD("maincpu", TMS1100, 175000) // RC osc. R=68K, C=82pf -> ~175kHz
426453   MCFG_TMS1XXX_OUTPUT_PLA(mathmagi_output_pla)
427   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, mathmagi_read_k))
428   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, mathmagi_write_r))
429   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, mathmagi_write_o))
454   MCFG_TMS1XXX_READ_K_CB(READ8(mathmagi_state, read_k))
455   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(mathmagi_state, write_r))
456   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mathmagi_state, write_o))
430457
431458   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
432459   MCFG_DEFAULT_LAYOUT(layout_mathmagi)
r245577r245578
453480
454481***************************************************************************/
455482
456void hh_tms1k_state::amaztron_display()
483class amaztron_state : public hh_tms1k_state
457484{
485public:
486   amaztron_state(const machine_config &mconfig, device_type type, const char *tag)
487      : hh_tms1k_state(mconfig, type, tag)
488   { }
489
490   void prepare_display();
491   DECLARE_WRITE16_MEMBER(write_r);
492   DECLARE_WRITE16_MEMBER(write_o);
493   DECLARE_READ8_MEMBER(read_k);
494};
495
496// handlers
497
498void amaztron_state::prepare_display()
499{
458500   // R8,R9: select digit
459501   for (int y = 0; y < 2; y++)
460502   {
r245577r245578
469511   display_update();
470512}
471513
472WRITE16_MEMBER(hh_tms1k_state::amaztron_write_r)
514WRITE16_MEMBER(amaztron_state::write_r)
473515{
474516   // R0-R5: input mux
475517   m_inp_mux = data & 0x3f;
r245577r245578
479521
480522   // other bits:
481523   m_r = data;
482   amaztron_display();
524   prepare_display();
483525}
484526
485WRITE16_MEMBER(hh_tms1k_state::amaztron_write_o)
527WRITE16_MEMBER(amaztron_state::write_o)
486528{
487529   // O0-O6: digit segments
488530   // O7: N/C
489531   m_o = data & 0x7f;
490   amaztron_display();
532   prepare_display();
491533}
492534
493READ8_MEMBER(hh_tms1k_state::amaztron_read_k)
535READ8_MEMBER(amaztron_state::read_k)
494536{
495537   UINT8 k = read_inputs(6);
496538
r245577r245578
500542}
501543
502544
545// config
546
503547static INPUT_PORTS_START( amaztron )
504548   PORT_START("IN.0") // R0
505549   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Button 1")
r245577r245578
544588   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
545589INPUT_PORTS_END
546590
591static MACHINE_CONFIG_START( amaztron, amaztron_state )
547592
548static MACHINE_CONFIG_START( amaztron, hh_tms1k_state )
549
550593   /* basic machine hardware */
551594   MCFG_CPU_ADD("maincpu", TMS1100, 350000) // RC osc. R=33K?, C=100pf -> ~350kHz
552   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, amaztron_read_k))
553   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, amaztron_write_r))
554   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, amaztron_write_o))
595   MCFG_TMS1XXX_READ_K_CB(READ8(amaztron_state, read_k))
596   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(amaztron_state, write_r))
597   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(amaztron_state, write_o))
555598
556599   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
557600   MCFG_DEFAULT_LAYOUT(layout_amaztron)
r245577r245578
600643
601644***************************************************************************/
602645
603void hh_tms1k_state::tc4_display()
646class tc4_state : public hh_tms1k_state
604647{
648public:
649   tc4_state(const machine_config &mconfig, device_type type, const char *tag)
650      : hh_tms1k_state(mconfig, type, tag)
651   { }
652
653   void prepare_display();
654   DECLARE_WRITE16_MEMBER(write_r);
655   DECLARE_WRITE16_MEMBER(write_o);
656   DECLARE_READ8_MEMBER(read_k);
657};
658
659// handlers
660
661void tc4_state::prepare_display()
662{
605663   m_display_wait = 50;
606664
607665   // R5,7,8,9 are 7segs
r245577r245578
613671   display_matrix(9, 10, (m_o | (m_r << 2 & 0x100)), m_r);
614672}
615673
616WRITE16_MEMBER(hh_tms1k_state::tc4_write_r)
674WRITE16_MEMBER(tc4_state::write_r)
617675{
618676   // R10: speaker out
619677   m_speaker->level_w(data >> 10 & 1);
r245577r245578
625683   // R6: led column 8
626684   // +other columns
627685   m_r = data;
628   tc4_display();
686   prepare_display();
629687}
630688
631WRITE16_MEMBER(hh_tms1k_state::tc4_write_o)
689WRITE16_MEMBER(tc4_state::write_o)
632690{
633691   // O0-O7: led row
634692   m_o = data;
635   tc4_display();
693   prepare_display();
636694}
637695
638READ8_MEMBER(hh_tms1k_state::tc4_read_k)
696READ8_MEMBER(tc4_state::read_k)
639697{
640698   UINT8 k = read_inputs(6);
641699
r245577r245578
647705}
648706
649707
708// config
709
650710static INPUT_PORTS_START( tc4 )
651711   PORT_START("IN.0") // R0
652712   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Pass/Shoot Button 3") // right
r245577r245578
692752   PORT_CONFSETTING(    0x08, "Football" )
693753INPUT_PORTS_END
694754
755static MACHINE_CONFIG_START( tc4, tc4_state )
695756
696static MACHINE_CONFIG_START( tc4, hh_tms1k_state )
697
698757   /* basic machine hardware */
699758   MCFG_CPU_ADD("maincpu", TMS1400, 450000) // approximation - RC osc. R=27.3K, C=100pf, but unknown RC curve
700   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, tc4_read_k))
701   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, tc4_write_r))
702   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, tc4_write_o))
759   MCFG_TMS1XXX_READ_K_CB(READ8(tc4_state, read_k))
760   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tc4_state, write_r))
761   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tc4_state, write_o))
703762
704763   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
705764   MCFG_DEFAULT_LAYOUT(layout_tc4)
r245577r245578
748807
749808***************************************************************************/
750809
751void hh_tms1k_state::ebball_display()
810class ebball_state : public hh_tms1k_state
752811{
812public:
813   ebball_state(const machine_config &mconfig, device_type type, const char *tag)
814      : hh_tms1k_state(mconfig, type, tag)
815   { }
816
817   void prepare_display();
818   DECLARE_WRITE16_MEMBER(write_r);
819   DECLARE_WRITE16_MEMBER(write_o);
820   DECLARE_READ8_MEMBER(read_k);
821};
822
823// handlers
824
825void ebball_state::prepare_display()
826{
753827   // R8 is a 7seg
754828   m_display_segmask[8] = 0x7f;
755829
756830   display_matrix(7, 9, ~m_o, m_r);
757831}
758832
759WRITE16_MEMBER(hh_tms1k_state::ebball_write_r)
833WRITE16_MEMBER(ebball_state::write_r)
760834{
761835   // R1-R5: input mux
762836   m_inp_mux = data >> 1 & 0x1f;
r245577r245578
766840
767841   // R0-R8: led columns
768842   m_r = data;
769   ebball_display();
843   prepare_display();
770844}
771845
772WRITE16_MEMBER(hh_tms1k_state::ebball_write_o)
846WRITE16_MEMBER(ebball_state::write_o)
773847{
774848   // O0-O6: led row
775849   // O7: N/C
776850   m_o = data;
777   ebball_display();
851   prepare_display();
778852}
779853
780READ8_MEMBER(hh_tms1k_state::ebball_read_k)
854READ8_MEMBER(ebball_state::read_k)
781855{
782856   // note: K8(Vss row) is always on
783857   return m_inp_matrix[5]->read() | read_inputs(5);
784858}
785859
786860
861// config
862
787863static INPUT_PORTS_START( ebball )
788864   PORT_START("IN.0") // R1
789865   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up")
r245577r245578
814890   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter")
815891INPUT_PORTS_END
816892
893static MACHINE_CONFIG_START( ebball, ebball_state )
817894
818static MACHINE_CONFIG_START( ebball, hh_tms1k_state )
819
820895   /* basic machine hardware */
821896   MCFG_CPU_ADD("maincpu", TMS1000, 375000) // RC osc. R=43K, C=47pf -> ~375kHz
822   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball_read_k))
823   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball_write_r))
824   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball_write_o))
897   MCFG_TMS1XXX_READ_K_CB(READ8(ebball_state, read_k))
898   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ebball_state, write_r))
899   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ebball_state, write_o))
825900
826901   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
827902   MCFG_DEFAULT_LAYOUT(layout_ebball)
r245577r245578
866941
867942***************************************************************************/
868943
869void hh_tms1k_state::ebball2_display()
944class ebball2_state : public hh_tms1k_state
870945{
946public:
947   ebball2_state(const machine_config &mconfig, device_type type, const char *tag)
948      : hh_tms1k_state(mconfig, type, tag)
949   { }
950
951   void prepare_display();
952   DECLARE_WRITE16_MEMBER(write_r);
953   DECLARE_WRITE16_MEMBER(write_o);
954   DECLARE_READ8_MEMBER(read_k);
955};
956
957// handlers
958
959void ebball2_state::prepare_display()
960{
871961   // the first 3 are 7segs
872962   for (int y = 0; y < 3; y++)
873963      m_display_segmask[y] = 0x7f;
r245577r245578
875965   display_matrix(8, 10, ~m_o, m_r ^ 0x7f);
876966}
877967
878WRITE16_MEMBER(hh_tms1k_state::ebball2_write_r)
968WRITE16_MEMBER(ebball2_state::write_r)
879969{
880970   // R3-R6: input mux
881971   m_inp_mux = data >> 3 & 0xf;
r245577r245578
885975
886976   // R0-R9: led columns
887977   m_r = data;
888   ebball2_display();
978   prepare_display();
889979}
890980
891WRITE16_MEMBER(hh_tms1k_state::ebball2_write_o)
981WRITE16_MEMBER(ebball2_state::write_o)
892982{
893983   // O0-O7: led row/segment
894984   m_o = data;
895   ebball2_display();
985   prepare_display();
896986}
897987
898READ8_MEMBER(hh_tms1k_state::ebball2_read_k)
988READ8_MEMBER(ebball2_state::read_k)
899989{
900990   return read_inputs(4);
901991}
902992
903993
994// config
995
904996static INPUT_PORTS_START( ebball2 )
905997   PORT_START("IN.0") // R3
906998   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r245577r245578
9251017   PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
9261018INPUT_PORTS_END
9271019
1020static MACHINE_CONFIG_START( ebball2, ebball2_state )
9281021
929static MACHINE_CONFIG_START( ebball2, hh_tms1k_state )
930
9311022   /* basic machine hardware */
9321023   MCFG_CPU_ADD("maincpu", TMS1000, 350000) // RC osc. R=47K, C=47pf -> ~350kHz
933   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball2_read_k))
934   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball2_write_r))
935   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball2_write_o))
1024   MCFG_TMS1XXX_READ_K_CB(READ8(ebball2_state, read_k))
1025   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ebball2_state, write_r))
1026   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ebball2_state, write_o))
9361027
9371028   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
9381029   MCFG_DEFAULT_LAYOUT(layout_ebball2)
r245577r245578
9821073
9831074***************************************************************************/
9841075
985void hh_tms1k_state::ebball3_display()
1076class ebball3_state : public hh_tms1k_state
9861077{
1078public:
1079   ebball3_state(const machine_config &mconfig, device_type type, const char *tag)
1080      : hh_tms1k_state(mconfig, type, tag)
1081   { }
1082
1083   void prepare_display();
1084   DECLARE_WRITE16_MEMBER(write_r);
1085   DECLARE_WRITE16_MEMBER(write_o);
1086   DECLARE_READ8_MEMBER(read_k);
1087
1088   void set_clock();
1089   DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
1090
1091protected:
1092   virtual void machine_reset();
1093};
1094
1095// handlers
1096
1097void ebball3_state::prepare_display()
1098{
9871099   // update current state
9881100   for (int y = 0; y < 10; y++)
9891101      m_display_state[y] = (m_r >> y & 1) ? m_o : 0;
r245577r245578
10001112   display_update();
10011113}
10021114
1003WRITE16_MEMBER(hh_tms1k_state::ebball3_write_r)
1115WRITE16_MEMBER(ebball3_state::write_r)
10041116{
10051117   // R0-R2: input mux
10061118   m_inp_mux = data & 7;
r245577r245578
10101122
10111123   // R0-R9: led columns
10121124   m_r = data;
1013   ebball3_display();
1125   prepare_display();
10141126}
10151127
1016WRITE16_MEMBER(hh_tms1k_state::ebball3_write_o)
1128WRITE16_MEMBER(ebball3_state::write_o)
10171129{
10181130   // O0-O6: led row
10191131   // O7: N/C
10201132   m_o = data & 0x7f;
1021   ebball3_display();
1133   prepare_display();
10221134}
10231135
1024READ8_MEMBER(hh_tms1k_state::ebball3_read_k)
1136READ8_MEMBER(ebball3_state::read_k)
10251137{
10261138   return read_inputs(3);
10271139}
10281140
10291141
1142// config
1143
10301144/* physical button layout and labels is like this:
10311145
10321146    main device (batter side):            remote pitcher:
r245577r245578
10611175   PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
10621176
10631177   PORT_START("IN.3") // fake
1064   PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, ebball3_difficulty_switch, NULL)
1178   PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, ebball3_state, difficulty_switch, NULL)
10651179   PORT_CONFSETTING(    0x00, "Amateur" )
10661180   PORT_CONFSETTING(    0x01, "Professional" )
10671181INPUT_PORTS_END
10681182
1183INPUT_CHANGED_MEMBER(ebball3_state::difficulty_switch)
1184{
1185   set_clock();
1186}
10691187
1070void hh_tms1k_state::ebball3_set_clock()
1188
1189void ebball3_state::set_clock()
10711190{
10721191   // MCU clock is from an RC circuit(R=47K, C=33pf) oscillating by default at ~340kHz,
10731192   // but on PRO, the difficulty switch adds an extra 150K resistor to Vdd to speed
r245577r245578
10751194   m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 440000 : 340000);
10761195}
10771196
1078INPUT_CHANGED_MEMBER(hh_tms1k_state::ebball3_difficulty_switch)
1197void ebball3_state::machine_reset()
10791198{
1080   ebball3_set_clock();
1199   hh_tms1k_state::machine_reset();
1200   set_clock();
10811201}
10821202
1083MACHINE_RESET_MEMBER(hh_tms1k_state, ebball3)
1084{
1085   machine_reset();
1086   ebball3_set_clock();
1087}
1203static MACHINE_CONFIG_START( ebball3, ebball3_state )
10881204
1089static MACHINE_CONFIG_START( ebball3, hh_tms1k_state )
1090
10911205   /* basic machine hardware */
1092   MCFG_CPU_ADD("maincpu", TMS1100, 340000) // see ebball3_set_clock
1093   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball3_read_k))
1094   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball3_write_r))
1095   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball3_write_o))
1206   MCFG_CPU_ADD("maincpu", TMS1100, 340000) // see set_clock
1207   MCFG_TMS1XXX_READ_K_CB(READ8(ebball3_state, read_k))
1208   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ebball3_state, write_r))
1209   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ebball3_state, write_o))
10961210
10971211   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
10981212   MCFG_DEFAULT_LAYOUT(layout_ebball3)
10991213
1100   MCFG_MACHINE_RESET_OVERRIDE(hh_tms1k_state, ebball3)
1101
11021214   /* no video! */
11031215
11041216   /* sound hardware */
r245577r245578
11261238
11271239***************************************************************************/
11281240
1129WRITE16_MEMBER(hh_tms1k_state::elecdet_write_r)
1241class elecdet_state : public hh_tms1k_state
11301242{
1243public:
1244   elecdet_state(const machine_config &mconfig, device_type type, const char *tag)
1245      : hh_tms1k_state(mconfig, type, tag)
1246   { }
1247
1248   DECLARE_WRITE16_MEMBER(write_r);
1249   DECLARE_WRITE16_MEMBER(write_o);
1250   DECLARE_READ8_MEMBER(read_k);
1251};
1252
1253// handlers
1254
1255WRITE16_MEMBER(elecdet_state::write_r)
1256{
11311257   // R7,R8: speaker on
11321258   m_speaker->level_w((data & 0x180 && m_o & 0x80) ? 1 : 0);
11331259
r245577r245578
11381264   display_matrix(7, 7, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data);
11391265}
11401266
1141WRITE16_MEMBER(hh_tms1k_state::elecdet_write_o)
1267WRITE16_MEMBER(elecdet_state::write_o)
11421268{
11431269   // O0,O1,O4,O6: input mux
11441270   m_inp_mux = (data & 3) | (data >> 2 & 4) | (data >> 3 & 8);
r245577r245578
11481274   m_o = data;
11491275}
11501276
1151READ8_MEMBER(hh_tms1k_state::elecdet_read_k)
1277READ8_MEMBER(elecdet_state::read_k)
11521278{
11531279   // note: the Vss row is always on
11541280   return m_inp_matrix[4]->read() | read_inputs(4);
11551281}
11561282
11571283
1284// config
1285
11581286/* physical button layout and labels is like this:
11591287
11601288    [1]   [2]   [3]   [SUSPECT]
r245577r245578
12021330   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
12031331INPUT_PORTS_END
12041332
1333static MACHINE_CONFIG_START( elecdet, elecdet_state )
12051334
1206static MACHINE_CONFIG_START( elecdet, hh_tms1k_state )
1207
12081335   /* basic machine hardware */
12091336   MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq
1210   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, elecdet_read_k))
1211   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, elecdet_write_r))
1212   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, elecdet_write_o))
1337   MCFG_TMS1XXX_READ_K_CB(READ8(elecdet_state, read_k))
1338   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r))
1339   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecdet_state, write_o))
12131340   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
12141341
12151342   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
r245577r245578
12391366
12401367***************************************************************************/
12411368
1242void hh_tms1k_state::starwbc_display()
1369class starwbc_state : public hh_tms1k_state
12431370{
1371public:
1372   starwbc_state(const machine_config &mconfig, device_type type, const char *tag)
1373      : hh_tms1k_state(mconfig, type, tag)
1374   { }
1375
1376   void prepare_display();
1377   DECLARE_WRITE16_MEMBER(write_r);
1378   DECLARE_WRITE16_MEMBER(write_o);
1379   DECLARE_READ8_MEMBER(read_k);
1380};
1381
1382// handlers
1383
1384void starwbc_state::prepare_display()
1385{
12441386   // R6,R8 are 7segs
12451387   m_display_segmask[6] = m_display_segmask[8] = 0x7f;
1246
12471388   display_matrix(8, 10, m_o, m_r);
12481389}
12491390
1250WRITE16_MEMBER(hh_tms1k_state::starwbc_write_r)
1391WRITE16_MEMBER(starwbc_state::write_r)
12511392{
12521393   // R0,R1,R3,R5,R7: input mux
12531394   m_inp_mux = (data & 3) | (data >> 1 & 4) | (data >> 2 & 8) | (data >> 3 & 0x10);
r245577r245578
12571398
12581399   // R0,R2,R4,R6,R8: led columns
12591400   m_r = data & 0x155;
1260   starwbc_display();
1401   prepare_display();
12611402}
12621403
1263WRITE16_MEMBER(hh_tms1k_state::starwbc_write_o)
1404WRITE16_MEMBER(starwbc_state::write_o)
12641405{
12651406   // O0-O7: led row
12661407   m_o = (data << 4 & 0xf0) | (data >> 4 & 0x0f);
1267   starwbc_display();
1408   prepare_display();
12681409}
12691410
1270READ8_MEMBER(hh_tms1k_state::starwbc_read_k)
1411READ8_MEMBER(starwbc_state::read_k)
12711412{
12721413   return read_inputs(5);
12731414}
12741415
12751416
1417// config
1418
12761419/* physical button layout and labels is like this:
12771420
12781421    (reconnnaissance=yellow)        (tactical reaction=green)
r245577r245578
13151458   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Right")
13161459INPUT_PORTS_END
13171460
1318static MACHINE_CONFIG_START( starwbc, hh_tms1k_state )
1461static MACHINE_CONFIG_START( starwbc, starwbc_state )
13191462
13201463   /* basic machine hardware */
13211464   MCFG_CPU_ADD("maincpu", TMS1100, 325000) // RC osc. R=51K, C=47pf -> ~325kHz
1322   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, starwbc_read_k))
1323   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, starwbc_write_r))
1324   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, starwbc_write_o))
1465   MCFG_TMS1XXX_READ_K_CB(READ8(starwbc_state, read_k))
1466   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(starwbc_state, write_r))
1467   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(starwbc_state, write_o))
13251468
13261469   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
13271470   MCFG_DEFAULT_LAYOUT(layout_starwbc)
r245577r245578
13491492
13501493***************************************************************************/
13511494
1352void hh_tms1k_state::astro_display()
1495class astro_state : public hh_tms1k_state
13531496{
1497public:
1498   astro_state(const machine_config &mconfig, device_type type, const char *tag)
1499      : hh_tms1k_state(mconfig, type, tag)
1500   { }
1501
1502   void prepare_display();
1503   DECLARE_WRITE16_MEMBER(write_r);
1504   DECLARE_WRITE16_MEMBER(write_o);
1505   DECLARE_READ8_MEMBER(read_k);
1506};
1507
1508// handlers
1509
1510void astro_state::prepare_display()
1511{
13541512   // declare 7segs
13551513   for (int y = 0; y < 9; y++)
13561514      m_display_segmask[y] = 0xff;
r245577r245578
13581516   display_matrix(8, 10, m_o, m_r);
13591517}
13601518
1361WRITE16_MEMBER(hh_tms1k_state::astro_write_r)
1519WRITE16_MEMBER(astro_state::write_r)
13621520{
13631521   // R0-R7: input mux
13641522   m_inp_mux = data & 0xff;
13651523   
13661524   // R0-R9: select digit/leds
13671525   m_r = data;
1368   astro_display();
1526   prepare_display();
13691527}
13701528
1371WRITE16_MEMBER(hh_tms1k_state::astro_write_o)
1529WRITE16_MEMBER(astro_state::write_o)
13721530{
13731531   // O0-O7: digit segments/leds
13741532   m_o = data;
1375   astro_display();
1533   prepare_display();
13761534}
13771535
1378READ8_MEMBER(hh_tms1k_state::astro_read_k)
1536READ8_MEMBER(astro_state::read_k)
13791537{
13801538   return read_inputs(8);
13811539}
13821540
13831541
1542// config
1543
13841544static INPUT_PORTS_START( astro )
13851545   PORT_START("IN.0") // R0
13861546   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
r245577r245578
14291589   PORT_CONFSETTING(    0x08, "Astro" )
14301590INPUT_PORTS_END
14311591
1592static MACHINE_CONFIG_START( astro, astro_state )
14321593
1433static MACHINE_CONFIG_START( astro, hh_tms1k_state )
1434
14351594   /* basic machine hardware */
14361595   MCFG_CPU_ADD("maincpu", TMS1470, 450000) // approximation - RC osc. R=4.7K, C=33pf, but unknown RC curve
1437   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, astro_read_k))
1438   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, astro_write_r))
1439   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, astro_write_o))
1596   MCFG_TMS1XXX_READ_K_CB(READ8(astro_state, read_k))
1597   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(astro_state, write_r))
1598   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(astro_state, write_o))
14401599
14411600   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
14421601   MCFG_DEFAULT_LAYOUT(layout_astro)
r245577r245578
14651624
14661625***************************************************************************/
14671626
1468WRITE16_MEMBER(hh_tms1k_state::comp4_write_r)
1627class comp4_state : public hh_tms1k_state
14691628{
1629public:
1630   comp4_state(const machine_config &mconfig, device_type type, const char *tag)
1631      : hh_tms1k_state(mconfig, type, tag)
1632   { }
1633
1634   DECLARE_WRITE16_MEMBER(write_r);
1635   DECLARE_WRITE16_MEMBER(write_o);
1636   DECLARE_READ8_MEMBER(read_k);
1637};
1638
1639// handlers
1640
1641WRITE16_MEMBER(comp4_state::write_r)
1642{
14701643   // leds:
14711644   // R4    R9
14721645   // R10!  R8
r245577r245578
14771650   display_matrix(11, 1, m_r, m_o);
14781651}
14791652
1480WRITE16_MEMBER(hh_tms1k_state::comp4_write_o)
1653WRITE16_MEMBER(comp4_state::write_o)
14811654{
14821655   // O1-O3: input mux
14831656   m_inp_mux = data >> 1 & 7;
r245577r245578
14881661   display_matrix(11, 1, m_r, m_o);
14891662}
14901663
1491READ8_MEMBER(hh_tms1k_state::comp4_read_k)
1664READ8_MEMBER(comp4_state::read_k)
14921665{
14931666   return read_inputs(3);
14941667}
14951668
14961669
1670// config
1671
14971672static INPUT_PORTS_START( comp4 )
14981673   PORT_START("IN.0") // O1
14991674   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("R")
r245577r245578
15141689   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
15151690INPUT_PORTS_END
15161691
1517static MACHINE_CONFIG_START( comp4, hh_tms1k_state )
1692static MACHINE_CONFIG_START( comp4, comp4_state )
15181693
15191694   /* basic machine hardware */
15201695   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq
1521   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, comp4_read_k))
1522   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, comp4_write_r))
1523   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, comp4_write_o))
1696   MCFG_TMS1XXX_READ_K_CB(READ8(comp4_state, read_k))
1697   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r))
1698   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o))
15241699
15251700   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
15261701   MCFG_DEFAULT_LAYOUT(layout_comp4)
r245577r245578
15491724
15501725***************************************************************************/
15511726
1552WRITE16_MEMBER(hh_tms1k_state::simon_write_r)
1727class simon_state : public hh_tms1k_state
15531728{
1729public:
1730   simon_state(const machine_config &mconfig, device_type type, const char *tag)
1731      : hh_tms1k_state(mconfig, type, tag)
1732   { }
1733
1734   DECLARE_WRITE16_MEMBER(write_r);
1735   DECLARE_WRITE16_MEMBER(write_o);
1736   DECLARE_READ8_MEMBER(read_k);
1737};
1738
1739// handlers
1740
1741WRITE16_MEMBER(simon_state::write_r)
1742{
15541743   // R4-R8 go through an 75494 IC first:
15551744   // R4 -> 75494 IN6 -> green lamp
15561745   // R5 -> 75494 IN3 -> red lamp
r245577r245578
15671756   m_inp_mux = (data & 7) | (data >> 6 & 8);
15681757}
15691758
1570WRITE16_MEMBER(hh_tms1k_state::simon_write_o)
1759WRITE16_MEMBER(simon_state::write_o)
15711760{
15721761   // N/C
15731762}
15741763
1575READ8_MEMBER(hh_tms1k_state::simon_read_k)
1764READ8_MEMBER(simon_state::read_k)
15761765{
15771766   return read_inputs(4);
15781767}
15791768
15801769
1770// config
1771
15811772static INPUT_PORTS_START( simon )
15821773   PORT_START("IN.0") // R0
15831774   PORT_CONFNAME( 0x07, 0x02, "Game Select")
r245577r245578
16061797   PORT_CONFSETTING(    0x01, "4" )
16071798INPUT_PORTS_END
16081799
1800static MACHINE_CONFIG_START( simon, simon_state )
16091801
1610static MACHINE_CONFIG_START( simon, hh_tms1k_state )
1611
16121802   /* basic machine hardware */
16131803   MCFG_CPU_ADD("maincpu", TMS1000, 350000) // RC osc. R=33K, C=100pf -> ~350kHz
1614   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, simon_read_k))
1615   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, simon_write_r))
1616   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, simon_write_o))
1804   MCFG_TMS1XXX_READ_K_CB(READ8(simon_state, read_k))
1805   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(simon_state, write_r))
1806   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(simon_state, write_o))
16171807
16181808   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
16191809   MCFG_DEFAULT_LAYOUT(layout_simon)
r245577r245578
16411831
16421832***************************************************************************/
16431833
1644WRITE16_MEMBER(hh_tms1k_state::ssimon_write_r)
1834class ssimon_state : public hh_tms1k_state
16451835{
1836public:
1837   ssimon_state(const machine_config &mconfig, device_type type, const char *tag)
1838      : hh_tms1k_state(mconfig, type, tag)
1839   { }
1840
1841   DECLARE_WRITE16_MEMBER(write_r);
1842   DECLARE_WRITE16_MEMBER(write_o);
1843   DECLARE_READ8_MEMBER(read_k);
1844
1845   void set_clock();
1846   DECLARE_INPUT_CHANGED_MEMBER(speed_switch);
1847
1848protected:
1849   virtual void machine_reset();
1850};
1851
1852// handlers
1853
1854WRITE16_MEMBER(ssimon_state::write_r)
1855{
16461856   // R0-R3,R9,R10: input mux
16471857   m_inp_mux = (data & 0xf) | (data >> 5 & 0x30);
16481858   
r245577r245578
16561866   m_speaker->level_w(data >> 8 & 1);
16571867}
16581868
1659WRITE16_MEMBER(hh_tms1k_state::ssimon_write_o)
1869WRITE16_MEMBER(ssimon_state::write_o)
16601870{
16611871   // N/C
16621872}
16631873
1664READ8_MEMBER(hh_tms1k_state::ssimon_read_k)
1874READ8_MEMBER(ssimon_state::read_k)
16651875{
16661876   return read_inputs(6);
16671877}
16681878
16691879
1880// config
1881
16701882static INPUT_PORTS_START( ssimon )
16711883   PORT_START("IN.0") // R0
16721884   PORT_CONFNAME( 0x0f, 0x01, "Game Select")
r245577r245578
17081920   PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
17091921
17101922   PORT_START("IN.6") // fake
1711   PORT_CONFNAME( 0x03, 0x01, "Speed" ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, ssimon_speed_switch, NULL)
1923   PORT_CONFNAME( 0x03, 0x01, "Speed" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssimon_state, speed_switch, NULL)
17121924   PORT_CONFSETTING(    0x00, "Simple" )
17131925   PORT_CONFSETTING(    0x01, "Normal" )
17141926   PORT_CONFSETTING(    0x02, "Super" )
17151927INPUT_PORTS_END
17161928
1929INPUT_CHANGED_MEMBER(ssimon_state::speed_switch)
1930{
1931   set_clock();
1932}
17171933
1718void hh_tms1k_state::ssimon_set_clock()
1934
1935void ssimon_state::set_clock()
17191936{
17201937   // MCU clock is from an RC circuit with C=100pf, R=x depending on speed switch:
17211938   // 0 Simple: R=51K -> ~200kHz
r245577r245578
17251942   m_maincpu->set_unscaled_clock((inp & 2) ? 400000 : ((inp & 1) ? 275000 : 200000));
17261943}
17271944
1728INPUT_CHANGED_MEMBER(hh_tms1k_state::ssimon_speed_switch)
1945void ssimon_state::machine_reset()
17291946{
1730   ssimon_set_clock();
1947   hh_tms1k_state::machine_reset();
1948   set_clock();
17311949}
17321950
1733MACHINE_RESET_MEMBER(hh_tms1k_state, ssimon)
1734{
1735   machine_reset();
1736   ssimon_set_clock();
1737}
1951static MACHINE_CONFIG_START( ssimon, ssimon_state )
17381952
1739static MACHINE_CONFIG_START( ssimon, hh_tms1k_state )
1740
17411953   /* basic machine hardware */
1742   MCFG_CPU_ADD("maincpu", TMS1100, 275000) // see ssimon_set_clock
1743   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ssimon_read_k))
1744   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ssimon_write_r))
1745   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ssimon_write_o))
1954   MCFG_CPU_ADD("maincpu", TMS1100, 275000) // see set_clock
1955   MCFG_TMS1XXX_READ_K_CB(READ8(ssimon_state, read_k))
1956   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ssimon_state, write_r))
1957   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ssimon_state, write_o))
17461958
17471959   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
17481960   MCFG_DEFAULT_LAYOUT(layout_ssimon)
17491961
1750   MCFG_MACHINE_RESET_OVERRIDE(hh_tms1k_state, ssimon)
1751
17521962   /* no video! */
17531963
17541964   /* sound hardware */
r245577r245578
17731983
17741984***************************************************************************/
17751985
1776WRITE16_MEMBER(hh_tms1k_state::cnsector_write_r)
1986class cnsector_state : public hh_tms1k_state
17771987{
1988public:
1989   cnsector_state(const machine_config &mconfig, device_type type, const char *tag)
1990      : hh_tms1k_state(mconfig, type, tag)
1991   { }
1992
1993   DECLARE_WRITE16_MEMBER(write_r);
1994   DECLARE_WRITE16_MEMBER(write_o);
1995   DECLARE_READ8_MEMBER(read_k);
1996};
1997
1998// handlers
1999
2000WRITE16_MEMBER(cnsector_state::write_r)
2001{
17782002   // R0-R5: select digit (right-to-left)
17792003   for (int y = 0; y < 6; y++)
17802004   {
r245577r245578
17892013   display_update();
17902014}
17912015
1792WRITE16_MEMBER(hh_tms1k_state::cnsector_write_o)
2016WRITE16_MEMBER(cnsector_state::write_o)
17932017{
17942018   // O0-O4: input mux
17952019   m_inp_mux = data & 0x1f;
r245577r245578
17982022   m_o = data;
17992023}
18002024
1801READ8_MEMBER(hh_tms1k_state::cnsector_read_k)
2025READ8_MEMBER(cnsector_state::read_k)
18022026{
18032027   return read_inputs(5);
18042028}
18052029
18062030
2031// config
2032
18072033static INPUT_PORTS_START( cnsector )
18082034   PORT_START("IN.0") // O0
18092035   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Next Ship")
r245577r245578
18362062   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Move Ship")
18372063INPUT_PORTS_END
18382064
2065static MACHINE_CONFIG_START( cnsector, cnsector_state )
18392066
1840static MACHINE_CONFIG_START( cnsector, hh_tms1k_state )
1841
18422067   /* basic machine hardware */
18432068   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq
1844   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, cnsector_read_k))
1845   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, cnsector_write_r))
1846   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, cnsector_write_o))
2069   MCFG_TMS1XXX_READ_K_CB(READ8(cnsector_state, read_k))
2070   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r))
2071   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o))
18472072
18482073   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
18492074   MCFG_DEFAULT_LAYOUT(layout_cnsector)
r245577r245578
18612086
18622087  Parker Bros Merlin handheld game, by Bob Doyle
18632088  * TMS1100NLL MP3404A-N2
1864  * 11 LEDs behind buttons, 1bit sound
2089  * 11 LEDs behind buttons, 2bit sound
18652090
18662091  Also published in Japan by Tomy as "Dr. Smith", white case instead of red.
18672092  The one with dark-blue case is the rare sequel Master Merlin. More sequels
r245577r245578
18792104
18802105***************************************************************************/
18812106
1882WRITE16_MEMBER(hh_tms1k_state::merlin_write_r)
2107class merlin_state : public hh_tms1k_state
18832108{
2109public:
2110   merlin_state(const machine_config &mconfig, device_type type, const char *tag)
2111      : hh_tms1k_state(mconfig, type, tag)
2112   { }
2113
2114   DECLARE_WRITE16_MEMBER(write_r);
2115   DECLARE_WRITE16_MEMBER(write_o);
2116   DECLARE_READ8_MEMBER(read_k);
2117};
2118
2119// handlers
2120
2121WRITE16_MEMBER(merlin_state::write_r)
2122{
18842123   /* leds:
18852124
18862125        R0
r245577r245578
18922131   display_matrix(11, 1, data, 1);
18932132}
18942133
1895WRITE16_MEMBER(hh_tms1k_state::merlin_write_o)
2134WRITE16_MEMBER(merlin_state::write_o)
18962135{
18972136   // O4-O6: speaker out (paralleled for increased current driving capability)
18982137   static const int count[8] = { 0, 1, 1, 2, 1, 2, 2, 3 };
r245577r245578
19032142   m_inp_mux = data & 0xf;
19042143}
19052144
1906READ8_MEMBER(hh_tms1k_state::merlin_read_k)
2145READ8_MEMBER(merlin_state::read_k)
19072146{
19082147   return read_inputs(4);
19092148}
19102149
19112150
2151// config
2152
19122153static INPUT_PORTS_START( merlin )
19132154   PORT_START("IN.0") // O0
19142155   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("Button 0")
r245577r245578
19382179
19392180static const INT16 merlin_speaker_levels[] = { 0, 10922, 21845, 32767 };
19402181
1941static MACHINE_CONFIG_START( merlin, hh_tms1k_state )
2182static MACHINE_CONFIG_START( merlin, merlin_state )
19422183
19432184   /* basic machine hardware */
19442185   MCFG_CPU_ADD("maincpu", TMS1100, 350000) // RC osc. R=33K, C=100pf -> ~350kHz
1945   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, merlin_read_k))
1946   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, merlin_write_r))
1947   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, merlin_write_o))
2186   MCFG_TMS1XXX_READ_K_CB(READ8(merlin_state, read_k))
2187   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(merlin_state, write_r))
2188   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(merlin_state, write_o))
19482189
19492190   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
19502191   MCFG_DEFAULT_LAYOUT(layout_merlin)
r245577r245578
19742215
19752216***************************************************************************/
19762217
1977WRITE16_MEMBER(hh_tms1k_state::stopthief_write_r)
2218class stopthief_state : public hh_tms1k_state
19782219{
2220public:
2221   stopthief_state(const machine_config &mconfig, device_type type, const char *tag)
2222      : hh_tms1k_state(mconfig, type, tag)
2223   { }
2224
2225   DECLARE_WRITE16_MEMBER(write_r);
2226   DECLARE_WRITE16_MEMBER(write_o);
2227   DECLARE_READ8_MEMBER(read_k);
2228};
2229
2230// handlers
2231
2232WRITE16_MEMBER(stopthief_state::write_r)
2233{
19792234   // R0-R2: select digit
19802235   UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f;
19812236   for (int y = 0; y < 3; y++)
r245577r245578
19912246   m_speaker->level_w((data & 0x1f8 && m_o & 8) ? 1 : 0);
19922247}
19932248
1994WRITE16_MEMBER(hh_tms1k_state::stopthief_write_o)
2249WRITE16_MEMBER(stopthief_state::write_o)
19952250{
19962251   // O0,O6: input mux
19972252   m_inp_mux = (data & 1) | (data >> 5 & 2);
r245577r245578
20012256   m_o = data;
20022257}
20032258
2004READ8_MEMBER(hh_tms1k_state::stopthief_read_k)
2259READ8_MEMBER(stopthief_state::read_k)
20052260{
20062261   // note: the Vss row is always on
20072262   return m_inp_matrix[2]->read() | read_inputs(2);
20082263}
20092264
20102265
2266// config
2267
20112268/* physical button layout and labels is like this:
20122269
20132270    [1] [2] [OFF]
r245577r245578
20412298   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
20422299INPUT_PORTS_END
20432300
2044static MACHINE_CONFIG_START( stopthief, hh_tms1k_state )
2301static MACHINE_CONFIG_START( stopthief, stopthief_state )
20452302
20462303   /* basic machine hardware */
20472304   MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq
2048   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, stopthief_read_k))
2049   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, stopthief_write_r))
2050   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, stopthief_write_o))
2305   MCFG_TMS1XXX_READ_K_CB(READ8(stopthief_state, read_k))
2306   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
2307   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(stopthief_state, write_o))
20512308   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
20522309
20532310   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
r245577r245578
20812338
20822339***************************************************************************/
20832340
2084WRITE16_MEMBER(hh_tms1k_state::bankshot_write_r)
2341class bankshot_state : public hh_tms1k_state
20852342{
2343public:
2344   bankshot_state(const machine_config &mconfig, device_type type, const char *tag)
2345      : hh_tms1k_state(mconfig, type, tag)
2346   { }
2347
2348   DECLARE_WRITE16_MEMBER(write_r);
2349   DECLARE_WRITE16_MEMBER(write_o);
2350   DECLARE_READ8_MEMBER(read_k);
2351};
2352
2353// handlers
2354
2355WRITE16_MEMBER(bankshot_state::write_r)
2356{
20862357   // R0: speaker out
20872358   m_speaker->level_w(data & 1);
20882359
r245577r245578
20942365   display_matrix(7, 11, m_o, m_r);
20952366}
20962367
2097WRITE16_MEMBER(hh_tms1k_state::bankshot_write_o)
2368WRITE16_MEMBER(bankshot_state::write_o)
20982369{
20992370   // O0-O6: led row
21002371   // O7: N/C
r245577r245578
21022373   display_matrix(7, 11, m_o, m_r);
21032374}
21042375
2105READ8_MEMBER(hh_tms1k_state::bankshot_read_k)
2376READ8_MEMBER(bankshot_state::read_k)
21062377{
21072378   return read_inputs(2);
21082379}
21092380
21102381
2382// config
2383
21112384/* physical button layout and labels is like this:
21122385  (note: remember that you can rotate the display in MESS)
21132386
r245577r245578
21342407   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
21352408INPUT_PORTS_END
21362409
2137static MACHINE_CONFIG_START( bankshot, hh_tms1k_state )
2410static MACHINE_CONFIG_START( bankshot, bankshot_state )
21382411
21392412   /* basic machine hardware */
21402413   MCFG_CPU_ADD("maincpu", TMS1400, 475000) // approximation - RC osc. R=24K, C=100pf, but unknown RC curve
2141   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, bankshot_read_k))
2142   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, bankshot_write_r))
2143   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, bankshot_write_o))
2414   MCFG_TMS1XXX_READ_K_CB(READ8(bankshot_state, read_k))
2415   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(bankshot_state, write_r))
2416   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(bankshot_state, write_o))
21442417
21452418   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
21462419   MCFG_DEFAULT_LAYOUT(layout_bankshot)
r245577r245578
21892462
21902463***************************************************************************/
21912464
2192WRITE16_MEMBER(hh_tms1k_state::splitsec_write_r)
2465class splitsec_state : public hh_tms1k_state
21932466{
2467public:
2468   splitsec_state(const machine_config &mconfig, device_type type, const char *tag)
2469      : hh_tms1k_state(mconfig, type, tag)
2470   { }
2471
2472   DECLARE_WRITE16_MEMBER(write_r);
2473   DECLARE_WRITE16_MEMBER(write_o);
2474   DECLARE_READ8_MEMBER(read_k);
2475};
2476
2477// handlers
2478
2479WRITE16_MEMBER(splitsec_state::write_r)
2480{
21942481   // R8: speaker out
21952482   m_speaker->level_w(data >> 8 & 1);
21962483
r245577r245578
22022489   display_matrix(7, 8, m_o, m_r);
22032490}
22042491
2205WRITE16_MEMBER(hh_tms1k_state::splitsec_write_o)
2492WRITE16_MEMBER(splitsec_state::write_o)
22062493{
22072494   // O0-O6: led row
22082495   // O7: N/C
r245577r245578
22102497   display_matrix(7, 8, m_o, m_r);
22112498}
22122499
2213READ8_MEMBER(hh_tms1k_state::splitsec_read_k)
2500READ8_MEMBER(splitsec_state::read_k)
22142501{
22152502   return read_inputs(2);
22162503}
22172504
22182505
2506// config
2507
22192508static INPUT_PORTS_START( splitsec )
22202509   PORT_START("IN.0") // R9
22212510   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // 4 separate directional buttons, hence 16way
r245577r245578
22302519   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
22312520INPUT_PORTS_END
22322521
2233static MACHINE_CONFIG_START( splitsec, hh_tms1k_state )
2522static MACHINE_CONFIG_START( splitsec, splitsec_state )
22342523
22352524   /* basic machine hardware */
22362525   MCFG_CPU_ADD("maincpu", TMS1400, 475000) // approximation - RC osc. R=24K, C=100pf, but unknown RC curve
2237   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, splitsec_read_k))
2238   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, splitsec_write_r))
2239   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, splitsec_write_o))
2526   MCFG_TMS1XXX_READ_K_CB(READ8(splitsec_state, read_k))
2527   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, write_r))
2528   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(splitsec_state, write_o))
22402529
22412530   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
22422531   MCFG_DEFAULT_LAYOUT(layout_splitsec)
r245577r245578
22752564
22762565***************************************************************************/
22772566
2278void hh_tms1k_state::tandy12_display()
2567class tandy12_state : public hh_tms1k_state
22792568{
2569public:
2570   tandy12_state(const machine_config &mconfig, device_type type, const char *tag)
2571      : hh_tms1k_state(mconfig, type, tag)
2572   { }
2573
2574   void prepare_display();
2575   DECLARE_WRITE16_MEMBER(write_r);
2576   DECLARE_WRITE16_MEMBER(write_o);
2577   DECLARE_READ8_MEMBER(read_k);
2578};
2579
2580// handlers
2581
2582void tandy12_state::prepare_display()
2583{
22802584   // O0-O7: button lamps 1-8, R0-R3: button lamps 9-12
22812585   display_matrix(13, 1, (m_o << 1 & 0x1fe) | (m_r << 9 & 0x1e00), 1);
22822586}
22832587
2284WRITE16_MEMBER(hh_tms1k_state::tandy12_write_r)
2588WRITE16_MEMBER(tandy12_state::write_r)
22852589{
22862590   // R10: speaker out
22872591   m_speaker->level_w(data >> 10 & 1);
r245577r245578
22912595
22922596   // other bits:
22932597   m_r = data;
2294   tandy12_display();
2598   prepare_display();
22952599}
22962600
2297WRITE16_MEMBER(hh_tms1k_state::tandy12_write_o)
2601WRITE16_MEMBER(tandy12_state::write_o)
22982602{
22992603   m_o = data;
2300   tandy12_display();
2604   prepare_display();
23012605}
23022606
2303READ8_MEMBER(hh_tms1k_state::tandy12_read_k)
2607READ8_MEMBER(tandy12_state::read_k)
23042608{
23052609   return read_inputs(5);
23062610}
23072611
23082612
2613// config
2614
23092615/* physical button layout and labels is like this:
23102616
23112617        REPEAT-2              SPACE-2
r245577r245578
23722678   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
23732679};
23742680
2375static MACHINE_CONFIG_START( tandy12, hh_tms1k_state )
2681static MACHINE_CONFIG_START( tandy12, tandy12_state )
23762682
23772683   /* basic machine hardware */
23782684   MCFG_CPU_ADD("maincpu", TMS1100, 400000) // RC osc. R=39K, C=47pf -> ~400kHz
23792685   MCFG_TMS1XXX_OUTPUT_PLA(tandy12_output_pla)
2380   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, tandy12_read_k))
2381   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, tandy12_write_r))
2382   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, tandy12_write_o))
2686   MCFG_TMS1XXX_READ_K_CB(READ8(tandy12_state, read_k))
2687   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tandy12_state, write_r))
2688   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tandy12_state, write_o))
23832689
23842690   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
23852691   MCFG_DEFAULT_LAYOUT(layout_tandy12)
trunk/src/mess/drivers/hh_ucom4.c
r245577r245578
5454   optional_device<speaker_sound_device> m_speaker;
5555
5656   // misc common
57   UINT8 m_port[9];                    // MCU port A-I write data
57   UINT8 m_port[9];                    // MCU port A-I write data (optional)
5858   UINT16 m_inp_mux;                   // multiplexed inputs mask
5959
6060   UINT8 read_inputs(int columns);
6161
62   virtual void machine_start();
63
6462   // display common
6563   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
6664   int m_display_maxy;                 // display matrix number of rows
67   int m_display_maxx;                 // display matrix number of columns
65   int m_display_maxx;                 // display matrix number of columns (max 31 for now)
6866
6967   UINT32 m_grid;                      // VFD current row data
7068   UINT32 m_plate;                     // VFD current column data
r245577r245578
7977   void set_display_size(int maxx, int maxy);
8078   void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
8179
82   // game-specific handlers
83   void ssfball_display();
84   DECLARE_WRITE8_MEMBER(ssfball_grid_w);
85   DECLARE_WRITE8_MEMBER(ssfball_plate_w);
86   DECLARE_READ8_MEMBER(ssfball_input_b_r);
80protected:
81   virtual void machine_start();
82   virtual void machine_reset();
83};
8784
88   void splasfgt_display();
89   DECLARE_WRITE8_MEMBER(splasfgt_grid_w);
90   DECLARE_WRITE8_MEMBER(splasfgt_plate_w);
91   DECLARE_READ8_MEMBER(splasfgt_input_b_r);
9285
93   void astrocmd_display();
94   DECLARE_WRITE8_MEMBER(astrocmd_grid_w);
95   DECLARE_WRITE8_MEMBER(astrocmd_plate_w);
86// machine start/reset
9687
97   DECLARE_WRITE8_MEMBER(edracula_grid_w);
98   DECLARE_WRITE8_MEMBER(edracula_plate_w);
99
100   DECLARE_WRITE8_MEMBER(tmtennis_grid_w);
101   DECLARE_WRITE8_MEMBER(tmtennis_plate_w);
102   DECLARE_WRITE8_MEMBER(tmtennis_port_e_w);
103   DECLARE_READ8_MEMBER(tmtennis_input_r);
104   void tmtennis_set_clock();
105   DECLARE_INPUT_CHANGED_MEMBER(tmtennis_difficulty_switch);
106   DECLARE_MACHINE_RESET(tmtennis);
107
108   void tmpacman_display();
109   DECLARE_WRITE8_MEMBER(tmpacman_grid_w);
110   DECLARE_WRITE8_MEMBER(tmpacman_plate_w);
111
112   DECLARE_WRITE8_MEMBER(alnchase_output_w);
113   DECLARE_READ8_MEMBER(alnchase_input_r);
114};
115
116
11788void hh_ucom4_state::machine_start()
11889{
11990   // zerofill
r245577r245578
143114   save_item(NAME(m_plate));
144115}
145116
117void hh_ucom4_state::machine_reset()
118{
119}
146120
147121
122
148123/***************************************************************************
149124
150125  Helper Functions
r245577r245578
169144            m_display_decay[y][x] = m_display_wait;
170145
171146         // determine active state
172         int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
147         UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
173148         active_state[y] |= (ds << x);
174149      }
175150   }
r245577r245578
253228
254229/***************************************************************************
255230
256  Minidrivers (I/O, Inputs, Machine Config)
231  Minidrivers (subclass, I/O, Inputs, Machine Config)
257232
258233***************************************************************************/
259234
r245577r245578
272247
273248***************************************************************************/
274249
275void hh_ucom4_state::ssfball_display()
250class ssfball_state : public hh_ucom4_state
276251{
252public:
253   ssfball_state(const machine_config &mconfig, device_type type, const char *tag)
254      : hh_ucom4_state(mconfig, type, tag)
255   { }
256
257   void prepare_display();
258   DECLARE_WRITE8_MEMBER(grid_w);
259   DECLARE_WRITE8_MEMBER(plate_w);
260   DECLARE_READ8_MEMBER(input_b_r);
261};
262
263// handlers
264
265void ssfball_state::prepare_display()
266{
277267   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6);
278
279268   display_matrix(16, 9, plate, m_grid);
280269}
281270
282WRITE8_MEMBER(hh_ucom4_state::ssfball_grid_w)
271WRITE8_MEMBER(ssfball_state::grid_w)
283272{
284   // C,D(,E): vfd matrix grid 0-7(,8)
273   // C,D(,E3): vfd matrix grid 0-7(,8)
285274   int shift = (offset - NEC_UCOM4_PORTC) * 4;
286275   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
287
288   ssfball_display();
276   prepare_display();
289277}
290278
291WRITE8_MEMBER(hh_ucom4_state::ssfball_plate_w)
279WRITE8_MEMBER(ssfball_state::plate_w)
292280{
293281   m_port[offset] = data;
294282
r245577r245578
302290
303291   // E3: vfd matrix grid 8
304292   if (offset == NEC_UCOM4_PORTE)
305      ssfball_grid_w(space, offset, data >> 3 & 1);
293      grid_w(space, offset, data >> 3 & 1);
306294   else
307      ssfball_display();
295      prepare_display();
308296}
309297
310READ8_MEMBER(hh_ucom4_state::ssfball_input_b_r)
298READ8_MEMBER(ssfball_state::input_b_r)
311299{
312300   // B: input port 2, where B3 is multiplexed
313301   return m_inp_matrix[2]->read() | read_inputs(2);
314302}
315303
316304
305// config
306
317307static INPUT_PORTS_START( ssfball )
318308   PORT_START("IN.0") // F3 port B3
319309   PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
r245577r245578
341331
342332static const INT16 ssfball_speaker_levels[] = { 0, 32767, -32768, 0 };
343333
344static MACHINE_CONFIG_START( ssfball, hh_ucom4_state )
334static MACHINE_CONFIG_START( ssfball, ssfball_state )
345335
346336   /* basic machine hardware */
347337   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
348338   MCFG_UCOM4_READ_A_CB(IOPORT("IN.3"))
349   MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, ssfball_input_b_r))
350   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, ssfball_grid_w))
351   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, ssfball_grid_w))
352   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
353   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
354   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
355   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
356   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
339   MCFG_UCOM4_READ_B_CB(READ8(ssfball_state, input_b_r))
340   MCFG_UCOM4_WRITE_C_CB(WRITE8(ssfball_state, grid_w))
341   MCFG_UCOM4_WRITE_D_CB(WRITE8(ssfball_state, grid_w))
342   MCFG_UCOM4_WRITE_E_CB(WRITE8(ssfball_state, plate_w))
343   MCFG_UCOM4_WRITE_F_CB(WRITE8(ssfball_state, plate_w))
344   MCFG_UCOM4_WRITE_G_CB(WRITE8(ssfball_state, plate_w))
345   MCFG_UCOM4_WRITE_H_CB(WRITE8(ssfball_state, plate_w))
346   MCFG_UCOM4_WRITE_I_CB(WRITE8(ssfball_state, plate_w))
357347
358348   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
359349   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
r245577r245578
382372
383373***************************************************************************/
384374
385void hh_ucom4_state::splasfgt_display()
375class splasfgt_state : public hh_ucom4_state
386376{
377public:
378   splasfgt_state(const machine_config &mconfig, device_type type, const char *tag)
379      : hh_ucom4_state(mconfig, type, tag)
380   { }
381
382   void prepare_display();
383   DECLARE_WRITE8_MEMBER(grid_w);
384   DECLARE_WRITE8_MEMBER(plate_w);
385   DECLARE_READ8_MEMBER(input_b_r);
386};
387
388// handlers
389
390void splasfgt_state::prepare_display()
391{
387392   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3);
388
389393   display_matrix(16, 9, plate, m_grid);
390394}
391395
392WRITE8_MEMBER(hh_ucom4_state::splasfgt_grid_w)
396WRITE8_MEMBER(splasfgt_state::grid_w)
393397{
394398   // G,H,I0: vfd matrix grid
395399   int shift = (offset - NEC_UCOM4_PORTG) * 4;
r245577r245578
400404
401405   // I2: vfd matrix plate 6
402406   if (offset == NEC_UCOM4_PORTI)
403      m_plate = (m_plate & 0xffff) | (data << 14 & 0x10000);
404
405   splasfgt_display();
407      plate_w(space, 4 + NEC_UCOM4_PORTC, data >> 2 & 1);
408   else
409      prepare_display();
406410}
407411
408WRITE8_MEMBER(hh_ucom4_state::splasfgt_plate_w)
412WRITE8_MEMBER(splasfgt_state::plate_w)
409413{
410   // C,D,E,F23: vfd matrix plate
411   int shift = (offset - NEC_UCOM4_PORTC) * 4;
412   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
413
414414   // F01: speaker out
415415   if (offset == NEC_UCOM4_PORTF)
416416      m_speaker->level_w(data & 3);
417417
418   ssfball_display();
418   // C,D,E,F23(,I2): vfd matrix plate
419   int shift = (offset - NEC_UCOM4_PORTC) * 4;
420   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
421   prepare_display();
419422}
420423
421READ8_MEMBER(hh_ucom4_state::splasfgt_input_b_r)
424READ8_MEMBER(splasfgt_state::input_b_r)
422425{
423426   // B: multiplexed buttons
424427   return read_inputs(4);
425428}
426429
427430
431// config
432
428433/* physical button layout and labels is like this:
429434
430435    * left = P1 side *                                         * right = P2 side * (note: in 1P mode, switch sides between turns)
r245577r245578
475480
476481static const INT16 splasfgt_speaker_levels[] = { 0, 32767, -32768, 0 };
477482
478static MACHINE_CONFIG_START( splasfgt, hh_ucom4_state )
483static MACHINE_CONFIG_START( splasfgt, splasfgt_state )
479484
480485   /* basic machine hardware */
481486   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
482487   MCFG_UCOM4_READ_A_CB(IOPORT("IN.4"))
483   MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, splasfgt_input_b_r))
484   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
485   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
486   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
487   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
488   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
489   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
490   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
488   MCFG_UCOM4_READ_B_CB(READ8(splasfgt_state, input_b_r))
489   MCFG_UCOM4_WRITE_C_CB(WRITE8(splasfgt_state, plate_w))
490   MCFG_UCOM4_WRITE_D_CB(WRITE8(splasfgt_state, plate_w))
491   MCFG_UCOM4_WRITE_E_CB(WRITE8(splasfgt_state, plate_w))
492   MCFG_UCOM4_WRITE_F_CB(WRITE8(splasfgt_state, plate_w))
493   MCFG_UCOM4_WRITE_G_CB(WRITE8(splasfgt_state, grid_w))
494   MCFG_UCOM4_WRITE_H_CB(WRITE8(splasfgt_state, grid_w))
495   MCFG_UCOM4_WRITE_I_CB(WRITE8(splasfgt_state, grid_w))
491496
492497   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
493498   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
r245577r245578
521526
522527***************************************************************************/
523528
524void hh_ucom4_state::astrocmd_display()
529class astrocmd_state : public hh_ucom4_state
525530{
531public:
532   astrocmd_state(const machine_config &mconfig, device_type type, const char *tag)
533      : hh_ucom4_state(mconfig, type, tag)
534   { }
535
536   void prepare_display();
537   DECLARE_WRITE8_MEMBER(grid_w);
538   DECLARE_WRITE8_MEMBER(plate_w);
539};
540
541// handlers
542
543void astrocmd_state::prepare_display()
544{
526545   UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
527546   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
528
529547   display_matrix(17, 9, plate, grid);
530548}
531549
532WRITE8_MEMBER(hh_ucom4_state::astrocmd_grid_w)
550WRITE8_MEMBER(astrocmd_state::grid_w)
533551{
534552   // C,D(,E3): vfd matrix grid
535553   int shift = (offset - NEC_UCOM4_PORTC) * 4;
536554   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
537
538   astrocmd_display();
555   prepare_display();
539556}
540557
541WRITE8_MEMBER(hh_ucom4_state::astrocmd_plate_w)
558WRITE8_MEMBER(astrocmd_state::plate_w)
542559{
543560   // E01,F,G,H,I: vfd matrix plate
544561   int shift = (offset - NEC_UCOM4_PORTE) * 4;
r245577r245578
550567      m_speaker->level_w(data >> 2 & 1);
551568
552569      // E3: vfd matrix grid 8
553      astrocmd_grid_w(space, offset, data >> 3 & 1);
570      grid_w(space, offset, data >> 3 & 1);
554571   }
555572   else
556      astrocmd_display();
573      prepare_display();
557574}
558575
559576
577// config
578
560579static INPUT_PORTS_START( astrocmd )
561580   PORT_START("IN.0") // port A
562581   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
r245577r245578
571590   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
572591INPUT_PORTS_END
573592
593static MACHINE_CONFIG_START( astrocmd, astrocmd_state )
574594
575static MACHINE_CONFIG_START( astrocmd, hh_ucom4_state )
576
577595   /* basic machine hardware */
578596   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
579597   MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
580598   MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
581   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
582   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
583   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
584   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
585   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
586   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
587   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
599   MCFG_UCOM4_WRITE_C_CB(WRITE8(astrocmd_state, grid_w))
600   MCFG_UCOM4_WRITE_D_CB(WRITE8(astrocmd_state, grid_w))
601   MCFG_UCOM4_WRITE_E_CB(WRITE8(astrocmd_state, plate_w))
602   MCFG_UCOM4_WRITE_F_CB(WRITE8(astrocmd_state, plate_w))
603   MCFG_UCOM4_WRITE_G_CB(WRITE8(astrocmd_state, plate_w))
604   MCFG_UCOM4_WRITE_H_CB(WRITE8(astrocmd_state, plate_w))
605   MCFG_UCOM4_WRITE_I_CB(WRITE8(astrocmd_state, plate_w))
588606
589607   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
590608   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
r245577r245578
617635
618636***************************************************************************/
619637
620WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w)
638class edracula_state : public hh_ucom4_state
621639{
640public:
641   edracula_state(const machine_config &mconfig, device_type type, const char *tag)
642      : hh_ucom4_state(mconfig, type, tag)
643   { }
644
645   DECLARE_WRITE8_MEMBER(grid_w);
646   DECLARE_WRITE8_MEMBER(plate_w);
647};
648
649// handlers
650
651WRITE8_MEMBER(edracula_state::grid_w)
652{
622653   // C,D: vfd matrix grid
623654   int shift = (offset - NEC_UCOM4_PORTC) * 4;
624655   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
625
626   display_matrix(18+1, 8, m_plate, m_grid);
656   display_matrix(18, 8, m_plate, m_grid);
627657}
628658
629WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w)
659WRITE8_MEMBER(edracula_state::plate_w)
630660{
631661   // I2: speaker out
632662   if (offset == NEC_UCOM4_PORTI)
r245577r245578
635665   // E,F,G,H,I01: vfd matrix plate
636666   int shift = (offset - NEC_UCOM4_PORTE) * 4;
637667   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
638
639668   display_matrix(18, 8, m_plate, m_grid);
640669}
641670
642671
672// config
673
643674static INPUT_PORTS_START( edracula )
644675   PORT_START("IN.0") // port A
645676   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
r245577r245578
654685   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
655686INPUT_PORTS_END
656687
688static MACHINE_CONFIG_START( edracula, edracula_state )
657689
658static MACHINE_CONFIG_START( edracula, hh_ucom4_state )
659
660690   /* basic machine hardware */
661691   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
662692   MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
663693   MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
664   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, edracula_grid_w))
665   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, edracula_grid_w))
666   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
667   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
668   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
669   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
670   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
694   MCFG_UCOM4_WRITE_C_CB(WRITE8(edracula_state, grid_w))
695   MCFG_UCOM4_WRITE_D_CB(WRITE8(edracula_state, grid_w))
696   MCFG_UCOM4_WRITE_E_CB(WRITE8(edracula_state, plate_w))
697   MCFG_UCOM4_WRITE_F_CB(WRITE8(edracula_state, plate_w))
698   MCFG_UCOM4_WRITE_G_CB(WRITE8(edracula_state, plate_w))
699   MCFG_UCOM4_WRITE_H_CB(WRITE8(edracula_state, plate_w))
700   MCFG_UCOM4_WRITE_I_CB(WRITE8(edracula_state, plate_w))
671701
672702   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
673703   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
r245577r245578
701731
702732***************************************************************************/
703733
704WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w)
734class tmtennis_state : public hh_ucom4_state
705735{
736public:
737   tmtennis_state(const machine_config &mconfig, device_type type, const char *tag)
738      : hh_ucom4_state(mconfig, type, tag)
739   { }
740
741   DECLARE_WRITE8_MEMBER(grid_w);
742   DECLARE_WRITE8_MEMBER(plate_w);
743   DECLARE_WRITE8_MEMBER(port_e_w);
744   DECLARE_READ8_MEMBER(input_r);
745
746   void set_clock();
747   DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
748
749protected:
750   virtual void machine_reset();
751};
752
753// handlers
754
755WRITE8_MEMBER(tmtennis_state::grid_w)
756{
706757   // G,H,I: vfd matrix grid
707758   int shift = (offset - NEC_UCOM4_PORTG) * 4;
708759   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
709
710760   display_matrix(12, 12, m_plate, m_grid);
711761}
712762
713WRITE8_MEMBER(hh_ucom4_state::tmtennis_plate_w)
763WRITE8_MEMBER(tmtennis_state::plate_w)
714764{
715765   // C,D,F: vfd matrix plate
716766   if (offset == NEC_UCOM4_PORTF) offset--;
717767   int shift = (offset - NEC_UCOM4_PORTC) * 4;
718768   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
719
720769   display_matrix(12, 12, m_plate, m_grid);
721770}
722771
723WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w)
772WRITE8_MEMBER(tmtennis_state::port_e_w)
724773{
725774   // E01: input mux
726775   // E2: speaker out
r245577r245578
729778   m_speaker->level_w(data >> 2 & 1);
730779}
731780
732READ8_MEMBER(hh_ucom4_state::tmtennis_input_r)
781READ8_MEMBER(tmtennis_state::input_r)
733782{
734783   // A,B: multiplexed buttons
735784   return ~read_inputs(2) >> (offset*4);
736785}
737786
738787
788// config
789
739790/* Pro-Tennis physical button layout and labels is like this:
740791
741792    * left = P2/CPU side *    * right = P1 side *
r245577r245578
758809   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("P1 Button 6")
759810
760811   PORT_START("IN.1") // E1 port A/B
761   PORT_CONFNAME( 0x101, 0x100, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_ucom4_state, tmtennis_difficulty_switch, NULL)
812   PORT_CONFNAME( 0x101, 0x100, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtennis_state, difficulty_switch, NULL)
762813   PORT_CONFSETTING(     0x001, "Practice" )
763   PORT_CONFSETTING(     0x100, "Pro 1" ) // -> tmtennis_difficulty_switch
814   PORT_CONFSETTING(     0x100, "Pro 1" ) // -> difficulty_switch
764815   PORT_CONFSETTING(     0x000, "Pro 2" )
765816   PORT_CONFNAME( 0x02, 0x00, "Players" )
766817   PORT_CONFSETTING(    0x00, "1" )
r245577r245578
773824   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("P2 Button 6")
774825INPUT_PORTS_END
775826
827INPUT_CHANGED_MEMBER(tmtennis_state::difficulty_switch)
828{
829   set_clock();
830}
776831
777void hh_ucom4_state::tmtennis_set_clock()
832
833void tmtennis_state::set_clock()
778834{
779835   // MCU clock is from an LC circuit oscillating by default at ~360kHz,
780836   // but on PRO1, the difficulty switch puts a capacitor across the LC circuit
r245577r245578
782838   m_maincpu->set_unscaled_clock((m_inp_matrix[1]->read() & 0x100) ? 260000 : 360000);
783839}
784840
785INPUT_CHANGED_MEMBER(hh_ucom4_state::tmtennis_difficulty_switch)
841void tmtennis_state::machine_reset()
786842{
787   tmtennis_set_clock();
843   hh_ucom4_state::machine_reset();
844   set_clock();
788845}
789846
790MACHINE_RESET_MEMBER(hh_ucom4_state, tmtennis)
791{
792   tmtennis_set_clock();
793}
847static MACHINE_CONFIG_START( tmtennis, tmtennis_state )
794848
795static MACHINE_CONFIG_START( tmtennis, hh_ucom4_state )
796
797849   /* basic machine hardware */
798   MCFG_CPU_ADD("maincpu", NEC_D552, 360000) // see tmtennis_set_clock
799   MCFG_UCOM4_READ_A_CB(READ8(hh_ucom4_state, tmtennis_input_r))
800   MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, tmtennis_input_r))
801   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
802   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
803   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmtennis_port_e_w))
804   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
805   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
806   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
807   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
850   MCFG_CPU_ADD("maincpu", NEC_D552, 360000) // see set_clock
851   MCFG_UCOM4_READ_A_CB(READ8(tmtennis_state, input_r))
852   MCFG_UCOM4_READ_B_CB(READ8(tmtennis_state, input_r))
853   MCFG_UCOM4_WRITE_C_CB(WRITE8(tmtennis_state, plate_w))
854   MCFG_UCOM4_WRITE_D_CB(WRITE8(tmtennis_state, plate_w))
855   MCFG_UCOM4_WRITE_E_CB(WRITE8(tmtennis_state, port_e_w))
856   MCFG_UCOM4_WRITE_F_CB(WRITE8(tmtennis_state, plate_w))
857   MCFG_UCOM4_WRITE_G_CB(WRITE8(tmtennis_state, grid_w))
858   MCFG_UCOM4_WRITE_H_CB(WRITE8(tmtennis_state, grid_w))
859   MCFG_UCOM4_WRITE_I_CB(WRITE8(tmtennis_state, grid_w))
808860
809861   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
810862   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
811863
812   MCFG_MACHINE_RESET_OVERRIDE(hh_ucom4_state, tmtennis)
813
814864   /* no video! */
815865
816866   /* sound hardware */
r245577r245578
844894
845895***************************************************************************/
846896
847void hh_ucom4_state::tmpacman_display()
897class tmpacman_state : public hh_ucom4_state
848898{
899public:
900   tmpacman_state(const machine_config &mconfig, device_type type, const char *tag)
901      : hh_ucom4_state(mconfig, type, tag)
902   { }
903
904   void prepare_display();
905   DECLARE_WRITE8_MEMBER(grid_w);
906   DECLARE_WRITE8_MEMBER(plate_w);
907};
908
909// handlers
910
911void tmpacman_state::prepare_display()
912{
849913   UINT16 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
850914   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
851
852915   display_matrix(19, 8, plate, grid);
853916}
854917
855WRITE8_MEMBER(hh_ucom4_state::tmpacman_grid_w)
918WRITE8_MEMBER(tmpacman_state::grid_w)
856919{
857920   // C,D: vfd matrix grid
858921   int shift = (offset - NEC_UCOM4_PORTC) * 4;
859922   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
860
861   tmpacman_display();
923   prepare_display();
862924}
863925
864WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w)
926WRITE8_MEMBER(tmpacman_state::plate_w)
865927{
866928   // E1: speaker out
867929   if (offset == NEC_UCOM4_PORTE)
r245577r245578
870932   // E023,F,G,H,I: vfd matrix plate
871933   int shift = (offset - NEC_UCOM4_PORTE) * 4;
872934   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
873
874   tmpacman_display();
935   prepare_display();
875936}
876937
877938
939// config
940
878941static INPUT_PORTS_START( tmpacman )
879942   PORT_START("IN.0") // port A
880943   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  ) PORT_16WAY // separate directional buttons, hence 16way
r245577r245578
889952   PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
890953INPUT_PORTS_END
891954
955static MACHINE_CONFIG_START( tmpacman, tmpacman_state )
892956
893static MACHINE_CONFIG_START( tmpacman, hh_ucom4_state )
894
895957   /* basic machine hardware */
896958   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_430kHz)
897959   MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
898960   MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
899   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
900   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
901   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
902   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
903   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
904   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
905   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
961   MCFG_UCOM4_WRITE_C_CB(WRITE8(tmpacman_state, grid_w))
962   MCFG_UCOM4_WRITE_D_CB(WRITE8(tmpacman_state, grid_w))
963   MCFG_UCOM4_WRITE_E_CB(WRITE8(tmpacman_state, plate_w))
964   MCFG_UCOM4_WRITE_F_CB(WRITE8(tmpacman_state, plate_w))
965   MCFG_UCOM4_WRITE_G_CB(WRITE8(tmpacman_state, plate_w))
966   MCFG_UCOM4_WRITE_H_CB(WRITE8(tmpacman_state, plate_w))
967   MCFG_UCOM4_WRITE_I_CB(WRITE8(tmpacman_state, plate_w))
906968
907969   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
908970   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
r245577r245578
937999
9381000***************************************************************************/
9391001
940WRITE8_MEMBER(hh_ucom4_state::alnchase_output_w)
1002class alnchase_state : public hh_ucom4_state
9411003{
1004public:
1005   alnchase_state(const machine_config &mconfig, device_type type, const char *tag)
1006      : hh_ucom4_state(mconfig, type, tag)
1007   { }
1008
1009   DECLARE_WRITE8_MEMBER(output_w);
1010   DECLARE_READ8_MEMBER(input_r);
1011};
1012
1013// handlers
1014
1015WRITE8_MEMBER(alnchase_state::output_w)
1016{
9421017   if (offset <= NEC_UCOM4_PORTE)
9431018   {
9441019      // C,D,E0: vfd matrix grid
r245577r245578
9641039   display_matrix(17, 9, m_plate, m_grid);
9651040}
9661041
967READ8_MEMBER(hh_ucom4_state::alnchase_input_r)
1042READ8_MEMBER(alnchase_state::input_r)
9681043{
9691044   // A: buttons
9701045   return read_inputs(2);
9711046}
9721047
9731048
1049// config
1050
9741051/* physical button layout and labels is like this:
9751052
9761053    POWER SOUND LEVEL PLAYER
r245577r245578
10081085   PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
10091086INPUT_PORTS_END
10101087
1088static MACHINE_CONFIG_START( alnchase, alnchase_state )
10111089
1012static MACHINE_CONFIG_START( alnchase, hh_ucom4_state )
1013
10141090   /* basic machine hardware */
10151091   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
1016   MCFG_UCOM4_READ_A_CB(READ8(hh_ucom4_state, alnchase_input_r))
1092   MCFG_UCOM4_READ_A_CB(READ8(alnchase_state, input_r))
10171093   MCFG_UCOM4_READ_B_CB(IOPORT("IN.2"))
1018   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1019   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1020   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1021   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1022   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1023   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1024   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
1094   MCFG_UCOM4_WRITE_C_CB(WRITE8(alnchase_state, output_w))
1095   MCFG_UCOM4_WRITE_D_CB(WRITE8(alnchase_state, output_w))
1096   MCFG_UCOM4_WRITE_E_CB(WRITE8(alnchase_state, output_w))
1097   MCFG_UCOM4_WRITE_F_CB(WRITE8(alnchase_state, output_w))
1098   MCFG_UCOM4_WRITE_G_CB(WRITE8(alnchase_state, output_w))
1099   MCFG_UCOM4_WRITE_H_CB(WRITE8(alnchase_state, output_w))
1100   MCFG_UCOM4_WRITE_I_CB(WRITE8(alnchase_state, output_w))
10251101
10261102   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
10271103   MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
trunk/src/mess/drivers/mbdtower.c
r245577r245578
88  * TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die labeled MP7332
99    (assume same ROM contents between revisions)
1010  * SN75494N MOS-to-LED digit driver
11  * rotating reel + lightsensor
11  * rotating reel + lightsensor, 1bit-sound
1212
1313  This is a board game, it obviously requires game pieces and the board.
1414  The emulated part is the centerpiece, a black tower with a rotating card
r245577r245578
3232      : hh_tms1k_state(mconfig, type, tag)
3333   { }
3434
35   void mbdtower_display();
35   void prepare_display();
3636   bool sensor_led_on() { return m_display_decay[0][0] != 0; }
3737
3838   int m_motor_pos;
r245577r245578
5858
5959***************************************************************************/
6060
61void mbdtower_state::mbdtower_display()
61void mbdtower_state::prepare_display()
6262{
6363   // declare display matrix size and the 2 7segs
6464   set_display_size(7, 3);
r245577r245578
148148   // R5-R7: tower lamps
149149   // R8: rotation sensor led
150150   m_r = data;
151   mbdtower_display();
151   prepare_display();
152152
153153   // R10: speaker out
154154   m_speaker->level_w(~data >> 4 & data >> 10 & 1);
r245577r245578
159159   // O0-O6: led segments A-G
160160   // O7: digit select
161161   m_o = data;
162   mbdtower_display();
162   prepare_display();
163163}
164164
165165READ8_MEMBER(mbdtower_state::read_k)
r245577r245578
226226{
227227   hh_tms1k_state::machine_start();
228228
229   // zerofill/register for savestates
229   // zerofill
230230   m_motor_pos = 0;
231231   m_motor_pos_prev = -1;
232232   m_motor_decay = 0;
233233   m_motor_on = false;
234234   m_sensor_blind = false;
235235
236   // register for savestates
236237   save_item(NAME(m_motor_pos));
237238   /* save_item(NAME(m_motor_pos_prev)); */ // don't save!
238239   save_item(NAME(m_motor_decay));
trunk/src/mess/drivers/pc88va.c
r245577r245578
162162   DECLARE_WRITE_LINE_MEMBER(pc88va_tc_w);
163163   DECLARE_READ8_MEMBER(fdc_dma_r);
164164   DECLARE_WRITE8_MEMBER(fdc_dma_w);
165DECLARE_READ8_MEMBER(dma_memr_cb);
166DECLARE_WRITE8_MEMBER(dma_memw_cb);
165167
166168   DECLARE_WRITE_LINE_MEMBER(fdc_irq);
167169   DECLARE_WRITE_LINE_MEMBER(fdc_drq);
r245577r245578
17611763   SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
17621764SLOT_INTERFACE_END
17631765
1766READ8_MEMBER(pc88va_state::dma_memr_cb)
1767{
1768printf("%08x\n",offset);
1769   return 0;
1770}
1771
1772WRITE8_MEMBER(pc88va_state::dma_memw_cb)
1773{
1774printf("%08x %02x\n",offset,data);
1775}
1776
1777
17641778static MACHINE_CONFIG_START( pc88va, pc88va_state )
17651779
17661780   MCFG_CPU_ADD("maincpu", V30, 8000000)        /* 8 MHz */
r245577r245578
18161830   MCFG_AM9517A_OUT_EOP_CB(WRITELINE(pc88va_state, pc88va_tc_w))
18171831   MCFG_AM9517A_IN_IOR_2_CB(READ8(pc88va_state, fdc_dma_r))
18181832   MCFG_AM9517A_OUT_IOW_2_CB(WRITE8(pc88va_state, fdc_dma_w))
1833   MCFG_AM9517A_IN_MEMR_CB(READ8(pc88va_state, dma_memr_cb))
1834   MCFG_AM9517A_OUT_MEMW_CB(WRITE8(pc88va_state, dma_memw_cb))
18191835
18201836   
18211837   MCFG_UPD765A_ADD("upd765", false, true)
trunk/src/mess/drivers/ticalc1x.c
r245577r245578
3131      : hh_tms1k_state(mconfig, type, tag)
3232   { }
3333
34   void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
35
36   // calculator-specific handlers
37   void tisr16_display();
38   DECLARE_WRITE16_MEMBER(tisr16_write_o);
39   DECLARE_WRITE16_MEMBER(tisr16_write_r);
40   DECLARE_READ8_MEMBER(tisr16_read_k);
41
42   DECLARE_WRITE16_MEMBER(ti1270_write_o);
43   DECLARE_WRITE16_MEMBER(ti1270_write_r);
44   DECLARE_READ8_MEMBER(ti1270_read_k);
45
46   DECLARE_WRITE16_MEMBER(ti1000_write_o);
47   DECLARE_WRITE16_MEMBER(ti1000_write_r);
48   DECLARE_READ8_MEMBER(ti1000_read_k);
49
50   DECLARE_WRITE16_MEMBER(wizatron_write_o);
51   DECLARE_WRITE16_MEMBER(wizatron_write_r);
52   DECLARE_READ8_MEMBER(wizatron_read_k);
53
54   DECLARE_WRITE16_MEMBER(lilprof_write_o);
55   DECLARE_READ8_MEMBER(lilprof_read_k);
56
57   DECLARE_WRITE16_MEMBER(lilprof78_write_o);
58   DECLARE_WRITE16_MEMBER(lilprof78_write_r);
59   DECLARE_READ8_MEMBER(lilprof78_read_k);
60
61   DECLARE_WRITE16_MEMBER(ti30_write_o);
62   DECLARE_WRITE16_MEMBER(ti30_write_r);
63   DECLARE_READ8_MEMBER(ti30_read_k);
64
6534protected:
6635   virtual void machine_start();
6736};
r245577r245578
7342   memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
7443}
7544
76void ticalc1x_state::display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask)
77{
78   for (int y = 0; y < maxy; y++)
79      m_display_segmask[y] &= segmask;
8045
81   display_matrix(maxx, maxy, setx, sety);
82}
8346
84
85
8647/***************************************************************************
8748
88  Minidrivers (I/O, Inputs, Machine Config)
49  Minidrivers (subclass, I/O, Inputs, Machine Config)
8950
9051***************************************************************************/
9152
9253/***************************************************************************
9354
94  TI SR-16
95  * TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
55  TI SR-16, SR-16 II
56  * SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
57  * SR-16 II: TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
9658  * 12-digit 7seg LED display
9759
60  SR-16 II is a cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
61
9862***************************************************************************/
9963
100void ticalc1x_state::tisr16_display()
64class tisr16_state : public ticalc1x_state
10165{
66public:
67   tisr16_state(const machine_config &mconfig, device_type type, const char *tag)
68      : ticalc1x_state(mconfig, type, tag)
69   { }
70
71   void prepare_display();
72   DECLARE_WRITE16_MEMBER(write_o);
73   DECLARE_WRITE16_MEMBER(write_r);
74   DECLARE_READ8_MEMBER(read_k);
75};
76
77// handlers
78
79void tisr16_state::prepare_display()
80{
10281   // update leds state
10382   for (int y = 0; y < 11; y++)
10483      m_display_state[y] = (m_r >> y & 1) ? m_o : 0;
r245577r245578
11190   display_update();
11291}
11392
114WRITE16_MEMBER(ticalc1x_state::tisr16_write_r)
93WRITE16_MEMBER(tisr16_state::write_r)
11594{
11695   // R0-R10: input mux
11796   // R0-R10: select digit (right-to-left)
11897   m_r = m_inp_mux = data;
119   tisr16_display();
98   prepare_display();
12099}
121100
122WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
101WRITE16_MEMBER(tisr16_state::write_o)
123102{
124103   // O0-O7: digit segments
125104   m_o = data;
126   tisr16_display();
105   prepare_display();
127106}
128107
129READ8_MEMBER(ticalc1x_state::tisr16_read_k)
108READ8_MEMBER(tisr16_state::read_k)
130109{
131110   return read_inputs(11);
132111}
133112
134113
114// config
115
135116static INPUT_PORTS_START( tisr16 )
136117   PORT_START("IN.0") // R0
137118   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r245577r245578
201182INPUT_PORTS_END
202183
203184
204static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
205
206   /* basic machine hardware */
207   MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz
208   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, tisr16_read_k))
209   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, tisr16_write_o))
210   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, tisr16_write_r))
211
212   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
213   MCFG_DEFAULT_LAYOUT(layout_tisr16)
214
215   /* no video! */
216
217   /* no sound! */
218MACHINE_CONFIG_END
219
220
221
222
223
224/***************************************************************************
225
226  TI SR-16 II
227  * TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
228  * 12-digit 7seg LED display
229
230  A cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
231
232***************************************************************************/
233
234// hardware is nearly identical to TI SR-16 above, so we simply use those handlers
235
236185static INPUT_PORTS_START( tisr16ii )
237186   PORT_START("IN.0") // R0
238187   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r245577r245578
302251INPUT_PORTS_END
303252
304253
305static MACHINE_CONFIG_DERIVED( tisr16ii, tisr16 )
254static MACHINE_CONFIG_START( tisr16, tisr16_state )
306255
307256   /* basic machine hardware */
308   // the MCU RC osc. is different: R=30K, C=100pf -> ~300kHz(same freq as tisr16, no change needed)
257   MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf -> also ~300kHz)
258   MCFG_TMS1XXX_READ_K_CB(READ8(tisr16_state, read_k))
259   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tisr16_state, write_o))
260   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tisr16_state, write_r))
261
262   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
263   MCFG_DEFAULT_LAYOUT(layout_tisr16)
264
265   /* no video! */
266
267   /* no sound! */
309268MACHINE_CONFIG_END
310269
311270
r245577r245578
320279
321280***************************************************************************/
322281
323WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
282class ti1270_state : public ticalc1x_state
324283{
284public:
285   ti1270_state(const machine_config &mconfig, device_type type, const char *tag)
286      : ticalc1x_state(mconfig, type, tag)
287   { }
288
289   DECLARE_WRITE16_MEMBER(write_o);
290   DECLARE_WRITE16_MEMBER(write_r);
291   DECLARE_READ8_MEMBER(read_k);
292};
293
294// handlers
295
296WRITE16_MEMBER(ti1270_state::write_r)
297{
325298   // R0-R7: select digit (right-to-left)
326299   display_matrix_seg(8, 8, m_o, data, 0xff);
327300}
328301
329WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
302WRITE16_MEMBER(ti1270_state::write_o)
330303{
331304   // O1-O5,O7: input mux
332305   // O0-O7: digit segments
r245577r245578
334307   m_o = data;
335308}
336309
337READ8_MEMBER(ticalc1x_state::ti1270_read_k)
310READ8_MEMBER(ti1270_state::read_k)
338311{
339312   return read_inputs(6);
340313}
341314
342315
316// config
317
343318static INPUT_PORTS_START( ti1270 )
344319   PORT_START("IN.0") // O1
345320   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
r245577r245578
378353   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
379354INPUT_PORTS_END
380355
356static MACHINE_CONFIG_START( ti1270, ti1270_state )
381357
382static MACHINE_CONFIG_START( ti1270, ticalc1x_state )
383
384358   /* basic machine hardware */
385359   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
386   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1270_read_k))
387   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1270_write_o))
388   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1270_write_r))
360   MCFG_TMS1XXX_READ_K_CB(READ8(ti1270_state, read_k))
361   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1270_state, write_o))
362   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1270_state, write_r))
389363
390364   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
391365   MCFG_DEFAULT_LAYOUT(layout_ti1270)
r245577r245578
407381
408382***************************************************************************/
409383
410WRITE16_MEMBER(ticalc1x_state::ti1000_write_r)
384class ti1000_state : public ticalc1x_state
411385{
386public:
387   ti1000_state(const machine_config &mconfig, device_type type, const char *tag)
388      : ticalc1x_state(mconfig, type, tag)
389   { }
390
391   DECLARE_WRITE16_MEMBER(write_o);
392   DECLARE_WRITE16_MEMBER(write_r);
393   DECLARE_READ8_MEMBER(read_k);
394};
395
396// handlers
397
398WRITE16_MEMBER(ti1000_state::write_r)
399{
412400   // R0-R7: select digit (right-to-left)
413401   UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5);
414402   display_matrix_seg(8, 8, o, data, 0xff);
415403}
416404
417WRITE16_MEMBER(ticalc1x_state::ti1000_write_o)
405WRITE16_MEMBER(ti1000_state::write_o)
418406{
419407   // O0-O3,O5(?): input mux
420408   // O0-O7: digit segments
r245577r245578
422410   m_o = data;
423411}
424412
425READ8_MEMBER(ticalc1x_state::ti1000_read_k)
413READ8_MEMBER(ti1000_state::read_k)
426414{
427415   return read_inputs(5);
428416}
429417
430418
419// config
420
431421static INPUT_PORTS_START( ti1000 )
432422   PORT_START("IN.0") // O0
433423   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
r245577r245578
449439
450440   // note: even though power buttons are on the matrix, they are not CPU-controlled
451441   PORT_START("IN.3") // O3 or O4?
452   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
442   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
453443   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
454444   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
455445   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
456446
457447   PORT_START("IN.4") // O5
458   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
448   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
459449   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
460450   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
461451   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
462452INPUT_PORTS_END
463453
454static MACHINE_CONFIG_START( ti1000, ti1000_state )
464455
465static MACHINE_CONFIG_START( ti1000, ticalc1x_state )
466
467456   /* basic machine hardware */
468457   MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
469   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1000_read_k))
470   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1000_write_o))
471   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1000_write_r))
458   MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k))
459   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o))
460   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r))
472461
473462   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
474463   MCFG_DEFAULT_LAYOUT(layout_ti1270)
r245577r245578
490479
491480***************************************************************************/
492481
493WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
482class wizatron_state : public ticalc1x_state
494483{
484public:
485   wizatron_state(const machine_config &mconfig, device_type type, const char *tag)
486      : ticalc1x_state(mconfig, type, tag)
487   { }
488
489   virtual DECLARE_WRITE16_MEMBER(write_o);
490   virtual DECLARE_WRITE16_MEMBER(write_r);
491   virtual DECLARE_READ8_MEMBER(read_k);
492};
493
494// handlers
495
496WRITE16_MEMBER(wizatron_state::write_r)
497{
495498   // 6th digit is custom(not 7seg), for math symbols, like this:
496499   //   \./    GAB
497500   //   ---     F
r245577r245578
505508   display_matrix_seg(7, 9, m_o, data, 0x7f);
506509}
507510
508WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
511WRITE16_MEMBER(wizatron_state::write_o)
509512{
510513   // O1-O4: input mux
511514   // O0-O6: digit segments A-G
r245577r245578
514517   m_o = data & 0x7f;
515518}
516519
517READ8_MEMBER(ticalc1x_state::wizatron_read_k)
520READ8_MEMBER(wizatron_state::read_k)
518521{
519522   return read_inputs(4);
520523}
521524
522525
526// config
527
523528static INPUT_PORTS_START( wizatron )
524529   PORT_START("IN.0") // O1
525530   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
r245577r245578
546551   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
547552INPUT_PORTS_END
548553
554static MACHINE_CONFIG_START( wizatron, wizatron_state )
549555
550static MACHINE_CONFIG_START( wizatron, ticalc1x_state )
551
552556   /* basic machine hardware */
553557   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
554   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, wizatron_read_k))
555   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, wizatron_write_o))
556   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
558   MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k))
559   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o))
560   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
557561
558562   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
559563   MCFG_DEFAULT_LAYOUT(layout_wizatron)
r245577r245578
578582
579583***************************************************************************/
580584
581WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
585class lilprof_state : public wizatron_state
582586{
587public:
588   lilprof_state(const machine_config &mconfig, device_type type, const char *tag)
589      : wizatron_state(mconfig, type, tag)
590   { }
591
592   virtual DECLARE_WRITE16_MEMBER(write_o);
593   virtual DECLARE_READ8_MEMBER(read_k);
594};
595
596// handlers
597
598WRITE16_MEMBER(lilprof_state::write_o)
599{
583600   // O1-O4,O7: input mux
584601   // O0-O6: digit segments A-G
585602   m_inp_mux = (data >> 1 & 0xf) | (data >> 3 & 0x10);
586603   m_o = data;
587604}
588605
589READ8_MEMBER(ticalc1x_state::lilprof_read_k)
606READ8_MEMBER(lilprof_state::read_k)
590607{
591608   return read_inputs(5);
592609}
593610
594611
612// config
613
595614static INPUT_PORTS_START( lilprof )
596615   PORT_INCLUDE( wizatron )
597616
r245577r245578
607626   PORT_CONFSETTING(    0x08, "4" )
608627INPUT_PORTS_END
609628
629static MACHINE_CONFIG_START( lilprof, lilprof_state )
610630
611static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
612
613631   /* basic machine hardware */
614632   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
615   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
616   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
617   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
633   MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k))
634   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o))
635   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
618636
619637   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
620638   MCFG_DEFAULT_LAYOUT(layout_wizatron)
r245577r245578
639657
640658***************************************************************************/
641659
642WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
660class lilprof78_state : public ticalc1x_state
643661{
662public:
663   lilprof78_state(const machine_config &mconfig, device_type type, const char *tag)
664      : ticalc1x_state(mconfig, type, tag)
665   { }
666
667   DECLARE_WRITE16_MEMBER(write_o);
668   DECLARE_WRITE16_MEMBER(write_r);
669   DECLARE_READ8_MEMBER(read_k);
670};
671
672// handlers
673
674WRITE16_MEMBER(lilprof78_state::write_r)
675{
644676   // update leds state
645677   UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5) & 0x7f;
646678   UINT16 r = (data & 7) | (data << 1 & 0x1f0);
r245577r245578
651683   // 3rd digit A/G(equals sign) is from O7
652684   m_display_state[3] = (m_o & 0x80) ? 0x41 : 0;
653685
654   // 6th digit is a custom 7seg for math symbols (see wizatron_write_r)
686   // 6th digit is a custom 7seg for math symbols (see wizatron_state write_r)
655687   m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
656688
657689   set_display_size(7, 9);
658690   display_update();
659691}
660692
661WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
693WRITE16_MEMBER(lilprof78_state::write_o)
662694{
663695   // O0-O3,O5(?): input mux
664696   // O0-O6: digit segments A-G
r245577r245578
667699   m_o = data;
668700}
669701
670READ8_MEMBER(ticalc1x_state::lilprof78_read_k)
702READ8_MEMBER(lilprof78_state::read_k)
671703{
672704   return read_inputs(5);
673705}
674706
675707
708// config
709
676710static INPUT_PORTS_START( lilprof78 )
677711   PORT_START("IN.0") // O0
678712   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
r245577r245578
694728
695729   // note: even though power buttons are on the matrix, they are not CPU-controlled
696730   PORT_START("IN.3") // O3 or O4?
697   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
731   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
698732   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
699733   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set")
700734   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
701735
702736   PORT_START("IN.4") // O5
703   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
737   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
704738   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
705739   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Go")
706740   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
707741INPUT_PORTS_END
708742
743static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
709744
710static MACHINE_CONFIG_START( lilprof78, ticalc1x_state )
711
712745   /* basic machine hardware */
713746   MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
714   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof78_read_k))
715   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof78_write_o))
716   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof78_write_r))
747   MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k))
748   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o))
749   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r))
717750
718751   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
719752   MCFG_DEFAULT_LAYOUT(layout_wizatron)
r245577r245578
737770
738771***************************************************************************/
739772
740WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
773class majestic_state : public ticalc1x_state
741774{
775public:
776   majestic_state(const machine_config &mconfig, device_type type, const char *tag)
777      : ticalc1x_state(mconfig, type, tag)
778   { }
779
780   DECLARE_WRITE16_MEMBER(write_o);
781   DECLARE_WRITE16_MEMBER(write_r);
782   DECLARE_READ8_MEMBER(read_k);
783};
784
785// handlers
786
787WRITE16_MEMBER(majestic_state::write_r)
788{
742789   // note: 1st digit only has segments B,F,G,DP
743790   m_display_segmask[0] = 0xe2;
744791
r245577r245578
747794   display_matrix_seg(8, 9, o, data, 0xff);
748795}
749796
750WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
797WRITE16_MEMBER(majestic_state::write_o)
751798{
752799   // O0-O2,O4-O7: input mux
753800   // O0-O7: digit segments
r245577r245578
755802   m_o = data;
756803}
757804
758READ8_MEMBER(ticalc1x_state::ti30_read_k)
805READ8_MEMBER(majestic_state::read_k)
759806{
760807   // note: the Vss row is always on
761808   return m_inp_matrix[7]->read() | read_inputs(7);
762809}
763810
764811
812// config
813
765814static INPUT_PORTS_START( ti30 )
766815   PORT_START("IN.0") // O0
767816   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X)
r245577r245578
814863
815864   // note: even though power buttons are on the matrix, they are not CPU-controlled
816865   PORT_START("IN.7") // Vss!
817   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
866   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
818867   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
819868   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
820869   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
821   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
870   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
822871INPUT_PORTS_END
823872
824873
r245577r245578
874923
875924   // note: even though power buttons are on the matrix, they are not CPU-controlled
876925   PORT_START("IN.7") // Vss!
877   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
926   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
878927   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("DEC")
879928   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("OCT")
880929   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("HEX")
881   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
930   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
882931INPUT_PORTS_END
883932
884933
r245577r245578
935984
936985   // note: even though power buttons are on the matrix, they are not CPU-controlled
937986   PORT_START("IN.7") // Vss!
938   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
987   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
939988   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
940989   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2"  " UTF8_SQUAREROOT"x")
941990   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("ln(x)  e" UTF8_POW_X)
942   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
991   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
943992INPUT_PORTS_END
944993
945994
946static MACHINE_CONFIG_START( ti30, ticalc1x_state )
995static MACHINE_CONFIG_START( majestic, majestic_state )
947996
948997   /* basic machine hardware */
949998   MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
950   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
951   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
952   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
953   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, auto_power_off))
999   MCFG_TMS1XXX_READ_K_CB(READ8(majestic_state, read_k))
1000   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(majestic_state, write_o))
1001   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(majestic_state, write_r))
1002   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
9541003
9551004   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
9561005   MCFG_DEFAULT_LAYOUT(layout_ti30)
r245577r245578
11141163
11151164/*    YEAR  NAME       PARENT COMPAT MACHINE   INPUT      INIT              COMPANY, FULLNAME, FLAGS */
11161165COMP( 1974, tisr16,    0,        0, tisr16,    tisr16,    driver_device, 0, "Texas Instruments", "SR-16", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1117COMP( 1975, tisr16ii,  0,        0, tisr16ii,  tisr16ii,  driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1166COMP( 1975, tisr16ii,  0,        0, tisr16,    tisr16ii,  driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
11181167
11191168COMP( 1976, ti1270,    0,        0, ti1270,    ti1270,    driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
11201169COMP( 1977, ti1000,    0,        0, ti1000,    ti1000,    driver_device, 0, "Texas Instruments", "TI-1000", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
r245577r245578
11221171COMP( 1976, lilprof,   0,        0, lilprof,   lilprof,   driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
11231172COMP( 1978, lilprof78, lilprof,  0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
11241173
1125COMP( 1976, ti30,      0,        0, ti30,      ti30,      driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1126COMP( 1977, tiprog,    0,        0, ti30,      tiprog,    driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1127COMP( 1979, tibusan1,  0,        0, ti30,      tibusan1,  driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1174COMP( 1976, ti30,      0,        0, majestic,  ti30,      driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1175COMP( 1977, tiprog,    0,        0, majestic,  tiprog,    driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1176COMP( 1979, tibusan1,  0,        0, majestic,  tibusan1,  driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
trunk/src/mess/drivers/tispeak.c
r245577r245578
314314   // cartridge
315315   UINT32 m_cart_max_size;
316316   UINT8* m_cart_base;
317   void init_cartridge();
317318   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
318319   DECLARE_DRIVER_INIT(snspell);
319320   DECLARE_DRIVER_INIT(lantutor);
r245577r245578
326327
327328   DECLARE_INPUT_CHANGED_MEMBER(snspell_power_button);
328329   void snspell_power_off();
329   void snspell_display();
330   void prepare_display();
330331
331332protected:
332333   virtual void machine_start();
333334};
334335
335336
337void tispeak_state::machine_start()
338{
339   hh_tms1k_state::machine_start();
340   memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
341   
342   init_cartridge();
343}
336344
345
346
337347/***************************************************************************
338348
339  File Handling
349  Cartridge Handling
340350
341351***************************************************************************/
342352
353void tispeak_state::init_cartridge()
354{
355   if (m_cart != NULL && m_cart->exists())
356   {
357      astring region_tag;
358      memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
359      if (src)
360         memcpy(m_cart_base, src->base(), src->bytes());
361   }
362}
363
343364DEVICE_IMAGE_LOAD_MEMBER(tispeak_state, tispeak_cartridge)
344365{
345366   UINT32 size = m_cart->common_get_size("rom");
r245577r245578
379400
380401// common/snspell
381402
382void tispeak_state::snspell_display()
403void tispeak_state::prepare_display()
383404{
384   for (int y = 0; y < 16; y++)
385      m_display_segmask[y] = 0x3fff;
386
387   display_matrix(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0);
405   display_matrix_seg(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0, 0x3fff);
388406}
389407
390READ8_MEMBER(tispeak_state::snspell_read_k)
391{
392   // note: the Vss row is always on
393   return m_inp_matrix[8]->read() | read_inputs(8);
394}
395
396408WRITE16_MEMBER(tispeak_state::snspell_write_r)
397409{
398410   // R13: power-off request, on falling edge
r245577r245578
403415   // R15: filament on
404416   // other bits: MCU internal use
405417   m_r = m_inp_mux = data;
406   snspell_display();
418   prepare_display();
407419}
408420
409421WRITE16_MEMBER(tispeak_state::snspell_write_o)
r245577r245578
411423   // reorder opla to led14seg, plus DP as d14 and AP as d15:
412424   // E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
413425   m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
414   snspell_display();
426   prepare_display();
415427}
416428
429READ8_MEMBER(tispeak_state::snspell_read_k)
430{
431   // note: the Vss row is always on
432   return m_inp_matrix[8]->read() | read_inputs(8);
433}
417434
435
418436void tispeak_state::snspell_power_off()
419437{
420438   m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
r245577r245578
432450   // reorder opla to led14seg, plus DP as d14 and AP as d15:
433451   // [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
434452   m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
435   snspell_display();
453   prepare_display();
436454}
437455
438456
r245577r245578
442460{
443461   // same as default, except R13 is used for an extra digit
444462   m_r = m_inp_mux = data;
445   snspell_display();
463   prepare_display();
446464}
447465
448466
r245577r245578
639657
640658***************************************************************************/
641659
642void tispeak_state::machine_start()
643{
644   hh_tms1k_state::machine_start();
645
646   // init cartridge
647   if (m_cart != NULL && m_cart->exists())
648   {
649      astring region_tag;
650      memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
651      if (src)
652         memcpy(m_cart_base, src->base(), src->bytes());
653   }
654}
655
656
657660static MACHINE_CONFIG_START( snmath, tispeak_state )
658661
659662   /* basic machine hardware */
r245577r245578
919922
920923
921924
922COMP( 1978, snspell,    0,       0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1978 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
923COMP( 1979, snspella,   snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1979 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
924COMP( 1980, snspellb,   snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1980 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
925COMP( 1978, snspelluk,  snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK, 1978 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
926COMP( 1981, snspelluka, snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK, 1981 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
927COMP( 1979, snspelljp,  snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
928COMP( 1980, ladictee,   snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "La Dictee Magique (France)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
925/*    YEAR  NAME        PARENT COMPAT MACHINE  INPUT     INIT                     COMPANY, FULLNAME, FLAGS */
926COMP( 1978, snspell,    0,        0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1978 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
927COMP( 1979, snspella,   snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1979 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
928COMP( 1980, snspellb,   snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US, 1980 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
929COMP( 1978, snspelluk,  snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK, 1978 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
930COMP( 1981, snspelluka, snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK, 1981 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
931COMP( 1979, snspelljp,  snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
932COMP( 1980, ladictee,   snspell,  0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "La Dictee Magique (France)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
929933
930COMP( 1986, snmath,     0,       0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US, 1986 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
931COMP( 1980, snmathp,    snmath,  0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US, 1980 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
934COMP( 1986, snmath,     0,        0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US, 1986 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
935COMP( 1980, snmathp,    snmath,   0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US, 1980 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
932936
933COMP( 1980, snread,     0,       0, snread,   snread,   tispeak_state, snspell,  "Texas Instruments", "Speak & Read (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
937COMP( 1980, snread,     0,        0, snread,   snread,   tispeak_state, snspell,  "Texas Instruments", "Speak & Read (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
934938
935COMP( 1979, lantutor,   0,       0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
939COMP( 1979, lantutor,   0,        0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
trunk/src/mess/includes/hh_tms1k.h
r245577r245578
4646   // display common
4747   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
4848   int m_display_maxy;                 // display matrix number of rows
49   int m_display_maxx;                 // display matrix number of columns
49   int m_display_maxx;                 // display matrix number of columns (max 31 for now)
5050
5151   UINT32 m_display_state[0x20];       // display matrix rows data (last bit is used for always-on)
5252   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
r245577r245578
5757   void display_update();
5858   void set_display_size(int maxx, int maxy);
5959   void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
60   void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
6061
61   // game-specific handlers
62   void mathmagi_display();
63   DECLARE_WRITE16_MEMBER(mathmagi_write_r);
64   DECLARE_WRITE16_MEMBER(mathmagi_write_o);
65   DECLARE_READ8_MEMBER(mathmagi_read_k);
66
67   void amaztron_display();
68   DECLARE_WRITE16_MEMBER(amaztron_write_r);
69   DECLARE_WRITE16_MEMBER(amaztron_write_o);
70   DECLARE_READ8_MEMBER(amaztron_read_k);
71
72   void tc4_display();
73   DECLARE_WRITE16_MEMBER(tc4_write_r);
74   DECLARE_WRITE16_MEMBER(tc4_write_o);
75   DECLARE_READ8_MEMBER(tc4_read_k);
76
77   void ebball_display();
78   DECLARE_WRITE16_MEMBER(ebball_write_r);
79   DECLARE_WRITE16_MEMBER(ebball_write_o);
80   DECLARE_READ8_MEMBER(ebball_read_k);
81
82   void ebball2_display();
83   DECLARE_WRITE16_MEMBER(ebball2_write_r);
84   DECLARE_WRITE16_MEMBER(ebball2_write_o);
85   DECLARE_READ8_MEMBER(ebball2_read_k);
86
87   void ebball3_display();
88   DECLARE_WRITE16_MEMBER(ebball3_write_r);
89   DECLARE_WRITE16_MEMBER(ebball3_write_o);
90   DECLARE_READ8_MEMBER(ebball3_read_k);
91   void ebball3_set_clock();
92   DECLARE_INPUT_CHANGED_MEMBER(ebball3_difficulty_switch);
93   DECLARE_MACHINE_RESET(ebball3);
94
95   DECLARE_WRITE16_MEMBER(elecdet_write_r);
96   DECLARE_WRITE16_MEMBER(elecdet_write_o);
97   DECLARE_READ8_MEMBER(elecdet_read_k);
98
99   void starwbc_display();
100   DECLARE_WRITE16_MEMBER(starwbc_write_r);
101   DECLARE_WRITE16_MEMBER(starwbc_write_o);
102   DECLARE_READ8_MEMBER(starwbc_read_k);
103
104   void astro_display();
105   DECLARE_WRITE16_MEMBER(astro_write_r);
106   DECLARE_WRITE16_MEMBER(astro_write_o);
107   DECLARE_READ8_MEMBER(astro_read_k);
108
109   DECLARE_WRITE16_MEMBER(comp4_write_r);
110   DECLARE_WRITE16_MEMBER(comp4_write_o);
111   DECLARE_READ8_MEMBER(comp4_read_k);
112
113   DECLARE_WRITE16_MEMBER(simon_write_r);
114   DECLARE_WRITE16_MEMBER(simon_write_o);
115   DECLARE_READ8_MEMBER(simon_read_k);
116
117   DECLARE_WRITE16_MEMBER(ssimon_write_r);
118   DECLARE_WRITE16_MEMBER(ssimon_write_o);
119   DECLARE_READ8_MEMBER(ssimon_read_k);
120   void ssimon_set_clock();
121   DECLARE_INPUT_CHANGED_MEMBER(ssimon_speed_switch);
122   DECLARE_MACHINE_RESET(ssimon);
123
124   DECLARE_WRITE16_MEMBER(cnsector_write_r);
125   DECLARE_WRITE16_MEMBER(cnsector_write_o);
126   DECLARE_READ8_MEMBER(cnsector_read_k);
127
128   DECLARE_WRITE16_MEMBER(merlin_write_r);
129   DECLARE_WRITE16_MEMBER(merlin_write_o);
130   DECLARE_READ8_MEMBER(merlin_read_k);
131
132   DECLARE_WRITE16_MEMBER(stopthief_write_r);
133   DECLARE_WRITE16_MEMBER(stopthief_write_o);
134   DECLARE_READ8_MEMBER(stopthief_read_k);
135
136   DECLARE_WRITE16_MEMBER(bankshot_write_r);
137   DECLARE_WRITE16_MEMBER(bankshot_write_o);
138   DECLARE_READ8_MEMBER(bankshot_read_k);
139
140   DECLARE_WRITE16_MEMBER(splitsec_write_r);
141   DECLARE_WRITE16_MEMBER(splitsec_write_o);
142   DECLARE_READ8_MEMBER(splitsec_read_k);
143
144   void tandy12_display();
145   DECLARE_WRITE16_MEMBER(tandy12_write_r);
146   DECLARE_WRITE16_MEMBER(tandy12_write_o);
147   DECLARE_READ8_MEMBER(tandy12_read_k);
148
14962protected:
15063   virtual void machine_start();
15164   virtual void machine_reset();
trunk/src/mess/layout/elecbowl.lay
r245577r245578
99      <led7seg><color red="1.0" green="0.2" blue="0.2" /></led7seg>
1010   </element>
1111
12   <element name="lamp" defstate="0">
13      <disk state="0"><color red="0.2" green="0.18" blue="0.16" /></disk>
14      <disk state="1"><color red="1.0" green="0.95" blue="0.9" /></disk>
15   </element>
1216
1317
18
1419<!-- build screen -->
1520
1621   <view name="Internal Layout">
r245577r245578
1924         <bounds left="0" right="100" top="0" bottom="100" />
2025      </bezel>
2126
27      <bezel name="digit2" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
28      <bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
29      <bezel name="digit0" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
2230
31      <bezel name="digit4" element="digit"><bounds x="50" y="0" width="10" height="15" /></bezel>
32      <bezel name="digit3" element="digit"><bounds x="60" y="0" width="10" height="15" /></bezel>
33
34
35      <bezel name="lamp52" element="lamp"><bounds x="0" y="20" width="10" height="10" /></bezel>
36      <bezel name="lamp53" element="lamp"><bounds x="10" y="20" width="10" height="10" /></bezel>
37      <bezel name="lamp57" element="lamp"><bounds x="20" y="20" width="10" height="10" /></bezel>
38      <bezel name="lamp56" element="lamp"><bounds x="30" y="20" width="10" height="10" /></bezel>
39
40      <bezel name="lamp51" element="lamp"><bounds x="5" y="30" width="10" height="10" /></bezel>
41      <bezel name="lamp61" element="lamp"><bounds x="15" y="30" width="10" height="10" /></bezel>
42      <bezel name="lamp55" element="lamp"><bounds x="25" y="30" width="10" height="10" /></bezel>
43
44      <bezel name="lamp50" element="lamp"><bounds x="10" y="40" width="10" height="10" /></bezel>
45      <bezel name="lamp54" element="lamp"><bounds x="20" y="40" width="10" height="10" /></bezel>
46
47      <bezel name="lamp60" element="lamp"><bounds x="15" y="50" width="10" height="10" /></bezel>
48
49
50      <bezel name="lamp64" element="lamp"><bounds x="0" y="70" width="10" height="10" /></bezel>
51      <bezel name="lamp65" element="lamp"><bounds x="10" y="70" width="10" height="10" /></bezel>
52      <bezel name="lamp66" element="lamp"><bounds x="20" y="70" width="10" height="10" /></bezel>
53
54      <bezel name="lamp62" element="lamp"><bounds x="50" y="70" width="10" height="10" /></bezel>
55      <bezel name="lamp63" element="lamp"><bounds x="50" y="80" width="10" height="10" /></bezel>
56
57
2358   </view>
2459</mamelayout>
trunk/src/osd/modules/font/font_osx.c
r245577r245578
196196   }
197197
198198};
199#else /* SDLMAME_UNIX */
199#else /* SDLMAME_MACOSX */
200200   MODULE_NOT_SUPPORTED(font_osx, OSD_FONT_PROVIDER, "osx")
201201#endif
202202
trunk/src/osd/modules/lib/osdobj_common.c
r245577r245578
163163   REGISTER_MODULE(m_mod_man, FONT_NONE);
164164
165165   REGISTER_MODULE(m_mod_man, SOUND_DSOUND);
166   REGISTER_MODULE(m_mod_man, SOUND_COREAUDIO);
166167   REGISTER_MODULE(m_mod_man, SOUND_JS);
167168   REGISTER_MODULE(m_mod_man, SOUND_SDL);
168169   REGISTER_MODULE(m_mod_man, SOUND_NONE);
r245577r245578
204205
205206#if 0
206207   // Register midi options and update options
207   m_mod_man.get_module_names(OSD_DEBUG_PROVIDER, 20, &num, names);
208   m_mod_man.get_module_names(OSD_MIDI_PROVIDER, 20, &num, names);
208209   dnames.reset();
209210   for (int i = 0; i < num; i++)
210211      dnames.append(names[i]);
211   update_option(OSD_DEBUG_PROVIDER, dnames);
212   update_option(OSD_MIDI_PROVIDER, dnames);
212213#endif
213214
214215   // Register debugger options and update options
trunk/src/osd/modules/netdev/pcap.c
r245577r245578
189189
190190int netdev_pcap::send(UINT8 *buf, int len)
191191{
192   if(!m_p) return 0;
192   int ret;
193   if(!m_p) {
194      printf("send invoked, but no pcap context\n");
195      return 0;
196   }
197   ret = pcap_sendpacket_dl(m_p, buf, len);
198   printf("sent packet length %d, returned %d\n", len, ret);
199   return ret ? len : 0;
193200   return (!pcap_sendpacket_dl(m_p, buf, len))?len:0;
194201}
195202
r245577r245578
219226netdev_pcap::~netdev_pcap()
220227{
221228   if(m_p) pcap_close_dl(m_p);
229   m_p = NULL;
222230}
223231
224232static CREATE_NETDEV(create_pcap)
r245577r245578
279287
280288   while(devs)
281289   {
282      add_netdev(devs->name, devs->description, create_pcap);
290      if(devs->description) {
291         add_netdev(devs->name, devs->description, create_pcap);
292      } else {
293         add_netdev(devs->name, devs->name, create_pcap);
294      }
283295      devs = devs->next;
284296   }
285297   return 0;
trunk/src/osd/modules/render/drawogl.c
r245577r245578
3232#include "modules/lib/osdlib.h"
3333#include "modules/lib/osdobj_common.h"
3434
35#ifdef OSD_WINDOWS
36#define SDLMAME_SDL2 1
35#if defined(OSD_WINDOWS) && !defined(SDLMAME_SDL2)
36#define SDLMAME_SDL2 0
3737#endif
3838
3939// OpenGL headers
r245577r245578
189189//  TYPES
190190//============================================================
191191
192#if (SDLMAME_SDL2)
192#if defined(OSD_WINDOWS)
193193
194#ifdef OSD_WINDOWS
195194class win_gl_context : public osd_gl_context
196195{
197196public:
r245577r245578
347346HMODULE win_gl_context::m_module;
348347
349348
350#else
349#elif SDLMAME_SDL2
350
351351class sdl_gl_context : public osd_gl_context
352352{
353353public:
r245577r245578
396396   SDL_Window *m_window;
397397   char m_error[256];
398398};
399#endif
399
400400#else
401401// SDL 1.2
402402class sdl12_gl_context : public osd_gl_context
r245577r245578
442442   char m_error[256];
443443};
444444
445
446445#endif
447446
448447//============================================================
r245577r245578
763762   dll_loaded = 0;
764763
765764   load_gl_lib(machine);
766   if (SDLMAME_SDL2)
767   {
768      osd_printf_verbose("Using SDL multi-window OpenGL driver (SDL 2.0+)\n");
769   }
770   else
771      osd_printf_verbose("Using SDL single-window OpenGL driver (SDL 1.2)\n");
765#if defined(OSD_WINDOWS)
766   osd_printf_verbose("Using Windows OpenGL driver\n");
767#elif SDLMAME_SDL2
768   osd_printf_verbose("Using SDL multi-window OpenGL driver (SDL 2.0+)\n");
769#else
770   osd_printf_verbose("Using SDL single-window OpenGL driver (SDL 1.2)\n");
771#endif
772772
773773   return 0;
774774}
r245577r245578
10301030
10311031int sdl_info_ogl::create()
10321032{
1033#if (SDLMAME_SDL2)
10341033   // create renderer
1035#ifdef OSD_WINDOWS
1034#if defined(OSD_WINDOWS)
10361035   m_gl_context = global_alloc(win_gl_context(window().m_hwnd));
1037#else
1036#elif SDLMAME_SDL2
10381037   m_gl_context = global_alloc(sdl_gl_context(window().sdl_window()));
1039#endif
10401038#else
10411039   m_gl_context = global_alloc(sdl12_gl_context(window().sdl_surface()));
10421040#endif
r245577r245578
15301528   if (m_init_context)
15311529   {
15321530      // do some one-time OpenGL setup
1533#if (SDLMAME_SDL2)
1531#if SDLMAME_SDL2
15341532      // FIXME: SRGB conversion is working on SDL2, may be of use
15351533      // when we eventually target gamma and monitor profiles.
15361534      //glEnable(GL_FRAMEBUFFER_SRGB);
r245577r245578
15601558         loadGLExtensions();
15611559      }
15621560
1563#if (!SDLMAME_SDL2)
1561#if !defined(OSD_WINDOWS) && !SDLMAME_SDL2
15641562      // force all textures to be regenerated
15651563      destroy_all_textures();
15661564#endif
trunk/src/osd/modules/sound/coreaudio_sound.c
r0r245578
1// license:BSD-3-Clause
2// copyright-holders:Vas Crabb
3//============================================================
4//
5//  sound.c - CoreAudio implementation of MAME sound routines
6//
7//  Copyright (c) 1996-2015, Nicola Salmoria and the MAME Team.
8//  Visit http://mamedev.org for licensing and usage restrictions.
9//
10//============================================================
11
12#include "sound_module.h"
13#include "modules/osdmodule.h"
14
15#ifdef SDLMAME_MACOSX
16
17#include <AudioUnit/AudioUnit.h>
18#include <CoreAudio/CoreAudio.h>
19#include <CoreServices/CoreServices.h>
20
21
22class sound_coreaudio : public osd_module, public sound_module
23{
24public:
25   sound_coreaudio() :
26      osd_module(OSD_SOUND_PROVIDER, "coreaudio"),
27      sound_module(),
28      m_open(false),
29      m_sample_bytes(0),
30      m_headroom(0),
31      m_buffer_size(0),
32      m_buffer(NULL),
33      m_playpos(0),
34      m_writepos(0),
35      m_in_underrun(false),
36      m_scale(128),
37      m_overflows(0),
38      m_underflows(0)
39   {
40   }
41   virtual ~sound_coreaudio()
42   {
43   }
44
45   virtual int init();
46   virtual void exit();
47
48   // sound_module
49
50   virtual void update_audio_stream(bool is_throttled, INT16 const *buffer, int samples_this_frame);
51   virtual void set_mastervolume(int attenuation);
52
53private:
54   enum
55   {
56      LATENCY_MIN = 1,
57      LATENCY_MAX = 5
58   };
59
60   UINT32 clamped_latency() const { return MAX(MIN(m_audio_latency, LATENCY_MAX), LATENCY_MIN); }
61   UINT32 buffer_avail() const { return ((m_writepos >= m_playpos) ? m_buffer_size : 0) + m_playpos - m_writepos; }
62   UINT32 buffer_used() const { return ((m_playpos > m_writepos) ? m_buffer_size : 0) + m_writepos - m_playpos; }
63
64   void copy_scaled(void *dst, void const *src, UINT32 bytes) const
65   {
66      bytes /= sizeof(INT16);
67      INT16 const *s = (INT16 const *)src;
68      for (INT16 *d = (INT16 *)dst; bytes > 0; bytes--, s++, d++)
69         *d = (*s * m_scale) >> 7;
70   }
71
72   OSStatus render(
73         AudioUnitRenderActionFlags  *action_flags,
74         const AudioTimeStamp        *timestamp,
75         UInt32                      bus_number,
76         UInt32                      number_frames,
77         AudioBufferList             *data);
78
79   static OSStatus render_callback(
80         void                        *refcon,
81         AudioUnitRenderActionFlags  *action_flags,
82         const AudioTimeStamp        *timestamp,
83         UInt32                      bus_number,
84         UInt32                      number_frames,
85         AudioBufferList             *data);
86
87   bool        m_open;
88   AudioUnit   m_output;
89   UINT32      m_sample_bytes;
90   UINT32      m_headroom;
91   UINT32      m_buffer_size;
92   INT8        *m_buffer;
93   UINT32      m_playpos;
94   UINT32      m_writepos;
95   bool        m_in_underrun;
96   INT32       m_scale;
97   unsigned    m_overflows;
98   unsigned    m_underflows;
99};
100
101
102int sound_coreaudio::init()
103{
104   OSStatus err;
105
106   // Don't bother with any of this if sound is disabled
107   if (sample_rate() == 0)
108      return 0;
109
110   // Get the Default Output AudioUnit component and open an instance
111   ComponentDescription output_desc;
112   output_desc.componentType           = kAudioUnitType_Output;
113   output_desc.componentSubType        = kAudioUnitSubType_DefaultOutput;
114   output_desc.componentManufacturer   = kAudioUnitManufacturer_Apple;
115   output_desc.componentFlags          = 0;
116   output_desc.componentFlagsMask      = 0;
117   Component output_comp = FindNextComponent(NULL, &output_desc);
118   if (!output_comp)
119   {
120      osd_printf_error("Could not find Default Output AudioUnit component\n");
121      return -1;
122   }
123   err = OpenAComponent(output_comp, &m_output);
124   if (noErr != err)
125   {
126      osd_printf_error("Could not open Default Output AudioUnit component (%ld)\n", (long)err);
127      return -1;
128   }
129
130   // Set render callback
131   AURenderCallbackStruct renderer;
132   renderer.inputProc          = sound_coreaudio::render_callback;
133   renderer.inputProcRefCon    = this;
134   err = AudioUnitSetProperty(m_output, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &renderer, sizeof(renderer));
135   if (noErr != err)
136   {
137      CloseComponent(m_output);
138      osd_printf_error("Could not set audio output render callback (%ld)\n", (long)err);
139      return -1;
140   }
141
142   // Set audio stream format for two-channel native-endian 16-bit packed linear PCM
143   AudioStreamBasicDescription format;
144   format.mSampleRate          = sample_rate();
145   format.mFormatID            = kAudioFormatLinearPCM;
146   format.mFormatFlags         = kAudioFormatFlagsNativeEndian
147                        | kLinearPCMFormatFlagIsSignedInteger
148                        | kLinearPCMFormatFlagIsPacked;
149   format.mFramesPerPacket     = 1;
150   format.mChannelsPerFrame    = 2;
151   format.mBitsPerChannel      = 16;
152   format.mBytesPerFrame       = format.mChannelsPerFrame * format.mBitsPerChannel / 8;
153   format.mBytesPerPacket      = format.mFramesPerPacket * format.mBytesPerFrame;
154   err = AudioUnitSetProperty(m_output, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &format, sizeof(format));
155   if (noErr != err)
156   {
157      CloseComponent(m_output);
158      osd_printf_error("Could not set audio output stream format (%ld)\n", (long)err);
159      return -1;
160   }
161   m_sample_bytes = format.mBytesPerFrame;
162
163   // Allocate buffer
164   m_headroom = m_sample_bytes * (clamped_latency() * sample_rate() / 40);
165   m_buffer_size = m_sample_bytes * MAX(sample_rate() * (clamped_latency() + 3) / 40, 256);
166   m_buffer = global_alloc_array_clear(INT8, m_buffer_size);
167   if (!m_buffer)
168   {
169      CloseComponent(m_output);
170      osd_printf_error("Could not allocate stream buffer\n");
171      return -1;
172   }
173   m_playpos = 0;
174   m_writepos = m_headroom;
175   m_in_underrun = false;
176   m_scale = 128;
177   m_overflows = m_underflows = 0;
178
179   // Initialise and start
180   err = AudioUnitInitialize(m_output);
181   if (noErr != err)
182   {
183      CloseComponent(m_output);
184      global_free_array(m_buffer);
185      m_buffer = NULL;
186      osd_printf_error("Could not initialize audio output (%ld)\n", (long)err);
187      return -1;
188   }
189   err = AudioOutputUnitStart(m_output);
190   if (noErr != err)
191   {
192      AudioUnitUninitialize(m_output);
193      CloseComponent(m_output);
194      global_free_array(m_buffer);
195      m_buffer = NULL;
196      osd_printf_error("Could not start audio output (%ld)\n", (long)err);
197      return -1;
198   }
199   m_open = true;
200   osd_printf_verbose("Audio: End initialization\n");
201   return 0;
202}
203
204
205void sound_coreaudio::exit()
206{
207   if (m_open)
208   {
209      osd_printf_verbose("Closing output AudioUnit component\n");
210      AudioOutputUnitStop(m_output);
211      AudioUnitUninitialize(m_output);
212      CloseComponent(m_output);
213      m_open = false;
214   }
215   if (m_buffer)
216   {
217      global_free_array(m_buffer);
218      m_buffer = NULL;
219   }
220   if (m_overflows || m_underflows)
221      osd_printf_verbose("Sound buffer: overflows=%u underflows=%u\n", m_overflows, m_underflows);
222}
223
224
225void sound_coreaudio::update_audio_stream(bool is_throttled, INT16 const *buffer, int samples_this_frame)
226{
227   if ((sample_rate() == 0) || !m_buffer)
228      return;
229
230   UINT32 const bytes_this_frame = samples_this_frame * m_sample_bytes;
231   if (bytes_this_frame >= buffer_avail())
232   {
233      m_overflows++;
234      return;
235   }
236
237   UINT32 const chunk = MIN(m_buffer_size - m_writepos, bytes_this_frame);
238   memcpy(m_buffer + m_writepos, (INT8 *)buffer, chunk);
239   m_writepos += chunk;
240   if (m_writepos >= m_buffer_size)
241      m_writepos = 0;
242
243   if (chunk < bytes_this_frame)
244   {
245      assert(0U == m_writepos);
246      assert(m_playpos > (bytes_this_frame - chunk));
247      memcpy(m_buffer, (INT8 *)buffer + chunk, bytes_this_frame - chunk);
248      m_writepos += bytes_this_frame - chunk;
249   }
250}
251
252
253void sound_coreaudio::set_mastervolume(int attenuation)
254{
255   int const clamped_attenuation = MAX(MIN(attenuation, 0), -32);
256   m_scale = (-32 == clamped_attenuation) ? 0 : (INT32)(pow(10.0, clamped_attenuation / 20.0) * 128);
257}
258
259
260OSStatus sound_coreaudio::render(
261      AudioUnitRenderActionFlags  *action_flags,
262      const AudioTimeStamp        *timestamp,
263      UInt32                      bus_number,
264      UInt32                      number_frames,
265      AudioBufferList             *data)
266{
267   UINT32 const number_bytes = number_frames * m_sample_bytes;
268   UINT32 const used = buffer_used();
269   if (m_in_underrun && (used < m_headroom))
270   {
271      memset(data->mBuffers[0].mData, 0, number_bytes);
272      return noErr;
273   }
274   m_in_underrun = false;
275   if (number_bytes > used)
276   {
277      m_in_underrun = true;
278      m_underflows++;
279      memset(data->mBuffers[0].mData, 0, number_bytes);
280      return noErr;
281   }
282
283   UINT32 const chunk = MIN(m_buffer_size - m_playpos, number_bytes);
284   copy_scaled((INT8 *)data->mBuffers[0].mData, m_buffer + m_playpos, chunk);
285   m_playpos += chunk;
286   if (m_playpos >= m_buffer_size)
287      m_playpos = 0;
288
289   if (chunk < number_bytes)
290   {
291      assert(0U == m_playpos);
292      assert(m_writepos >= (number_bytes - chunk));
293      copy_scaled((INT8 *)data->mBuffers[0].mData + chunk, m_buffer, number_bytes - chunk);
294      m_playpos += number_bytes - chunk;
295   }
296
297   return noErr;
298}
299
300
301OSStatus sound_coreaudio::render_callback(
302      void                        *refcon,
303      AudioUnitRenderActionFlags  *action_flags,
304      const AudioTimeStamp        *timestamp,
305      UInt32                      bus_number,
306      UInt32                      number_frames,
307      AudioBufferList             *data)
308{
309   return ((sound_coreaudio *)refcon)->render(action_flags, timestamp, bus_number, number_frames, data);
310}
311
312#else /* SDLMAME_MACOSX */
313   MODULE_NOT_SUPPORTED(sound_coreaudio, OSD_SOUND_PROVIDER, "coreaudio")
314#endif
315
316MODULE_DEFINITION(SOUND_COREAUDIO, sound_coreaudio)
trunk/src/osd/modules/sound/direct_sound.c
r245577r245578
275275   }
276276
277277   // set the cooperative level
278   #ifdef SDLMAME_WIN32
278#ifdef SDLMAME_WIN32
279279   SDL_SysWMinfo wminfo;
280280   SDL_VERSION(&wminfo.version);
281281#if (SDLMAME_SDL2)
r245577r245578
287287#endif
288288   #else
289289   result = IDirectSound_SetCooperativeLevel(dsound, win_window_list->m_hwnd, DSSCL_PRIORITY);
290   #endif
290#endif
291291   if (result != DS_OK)
292292   {
293293      osd_printf_error("Error setting DirectSound cooperative level: %08x\n", (UINT32)result);
trunk/src/osd/modules/sound/sdl_sound.c
r245577r245578
332332void sound_sdl::set_mastervolume(int _attenuation)
333333{
334334   // clamp the attenuation to 0-32 range
335   if (_attenuation > 0)
336      _attenuation = 0;
337   if (_attenuation < -32)
338      _attenuation = -32;
335   attenuation = MAX(MIN(_attenuation, 0), -32);
339336
340   attenuation = _attenuation;
341
342   if ((attenuation == -32) && (stream_in_initialized))
337   if (stream_in_initialized)
343338   {
344      SDL_PauseAudio(1);
339      if (attenuation == -32)
340         SDL_PauseAudio(1);
341      else
342         SDL_PauseAudio(0);
345343   }
346   else if (stream_in_initialized)
347   {
348      SDL_PauseAudio(0);
349   }
350344}
351345
352346//============================================================
r245577r245578
455449
456450      sdl_xfer_samples = obtained.samples;
457451
458      audio_latency = m_audio_latency;
459
460452      // pin audio latency
461      if (audio_latency > MAX_AUDIO_LATENCY)
462      {
463         audio_latency = MAX_AUDIO_LATENCY;
464      }
465      else if (audio_latency < 1)
466      {
467         audio_latency = 1;
468      }
453      audio_latency = MAX(MIN(m_audio_latency, MAX_AUDIO_LATENCY), 1);
469454
470455      // compute the buffer sizes
471456      stream_buffer_size = (sample_rate() * 2 * sizeof(INT16) * (2 + audio_latency)) / 30;
trunk/src/osd/modules/sync/osdsync.h
r245577r245578
1717    SYNCHRONIZATION INTERFACES - Events
1818***************************************************************************/
1919
20#define OSD_EVENT_WAIT_INFINITE -1
20#define OSD_EVENT_WAIT_INFINITE (~(osd_ticks_t)0)
2121
2222/* osd_event is an opaque type which represents a setable/resetable event */
2323
trunk/src/osd/osdepend.h
r245577r245578
7474   // midi interface
7575   virtual osd_midi_device *create_midi_device() = 0;
7676
77protected:
78   virtual ~osd_interface() { }
7779};
7880
7981#endif  /* __OSDEPEND_H__ */
trunk/src/osd/osdnet.c
r245577r245578
3939osd_netdev::osd_netdev(class device_network_interface *ifdev, int rate)
4040{
4141   m_dev = ifdev;
42   ifdev->device().machine().scheduler().timer_pulse(attotime::from_hz(rate), timer_expired_delegate(FUNC(osd_netdev::recv), this));
42   m_stop = false;
43   m_timer = ifdev->device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(osd_netdev::recv), this));
44   m_timer->adjust(attotime::from_hz(rate), 0, attotime::from_hz(rate));
4345}
4446
4547osd_netdev::~osd_netdev()
4648{
49   m_stop = true;
50   m_timer->reset();
4751}
4852
4953int osd_netdev::send(UINT8 *buf, int len)
r245577r245578
5660   UINT8 *buf;
5761   int len;
5862   //const char atalkmac[] = { 0x09, 0x00, 0x07, 0xff, 0xff, 0xff };
59   while((len = recv_dev(&buf)))
63   while((!m_stop) && (len = recv_dev(&buf)))
6064   {
6165#if 0
6266      if(buf[0] & 1)
trunk/src/osd/osdnet.h
r245577r245578
3636   void recv(void *ptr, int param);
3737
3838   class device_network_interface *m_dev;
39   emu_timer *m_timer;
40   bool m_stop;
3941};
4042
4143class osd_netdev *open_netdev(int id, class device_network_interface *ifdev, int rate);
trunk/src/osd/sdl/main.c
r245577r245578
3737   int i, rc;
3838   char **utf8_argv;
3939
40#ifdef OSD_SDL
41#ifdef MALLOC_DEBUG
42{
43   extern int winalloc_in_main_code;
44   winalloc_in_main_code = TRUE;
45#endif
46#endif
47
4840   /* convert arguments to UTF-8 */
4941   utf8_argv = (char **) malloc(argc * sizeof(*argv));
5042   if (utf8_argv == NULL)
r245577r245578
6456      osd_free(utf8_argv[i]);
6557   free(utf8_argv);
6658
67#ifdef OSD_SDL
68#ifdef MALLOC_DEBUG
69   {
70      void check_unfreed_mem(void);
71      check_unfreed_mem();
72   }
73   winalloc_in_main_code = FALSE;
74}
75#endif
76#endif
77
7859   return rc;
7960}
trunk/src/osd/sdl/sdlmain.c
r245577r245578
252252
253253   // FIXME: this should be done differently
254254
255   #ifdef SDLMAME_UNIX
255#ifdef SDLMAME_UNIX
256256   sdl_entered_debugger = 0;
257   #if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU)) && (!defined(SDLMAME_EMSCRIPTEN))
257#if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU)) && (!defined(SDLMAME_EMSCRIPTEN))
258258   FcInit();
259   #endif
260   #endif
259#endif
260#endif
261261
262   #ifdef SDLMAME_OS2
262#ifdef SDLMAME_OS2
263263   MorphToPM();
264   #endif
264#endif
265265
266266#if defined(SDLMAME_X11) && (SDL_MAJOR_VERSION == 1) && (SDL_MINOR_VERSION == 2)
267267   if (SDL_Linked_Version()->patch < 10)
r245577r245578
290290      res = frontend.execute(argc, argv);
291291   }
292292
293#ifdef MALLOC_DEBUG
294   {
295      void check_unfreed_mem(void);
296      check_unfreed_mem();
297   }
298#endif
299
300   #ifdef SDLMAME_UNIX
301   #if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU)) && (!defined(SDLMAME_EMSCRIPTEN))
293#ifdef SDLMAME_UNIX
294#if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU)) && (!defined(SDLMAME_EMSCRIPTEN))
302295   if (!sdl_entered_debugger)
303296   {
304297      FcFini();
305298   }
306   #endif
307   #endif
299#endif
300#endif
308301
309302   exit(res);
310303}
trunk/src/osd/sdl/video.h
r245577r245578
1212#ifndef __SDLVIDEO__
1313#define __SDLVIDEO__
1414
15#if defined(SDLMAME_WIN32) && !(SDLMAME_SDL2)
16#define WIN32_LEAN_AND_MEAN
17#include <windows.h>
18#endif
19
1520#include "osdsdl.h"
1621
1722//============================================================
trunk/src/osd/sdl/window.c
r245577r245578
99//
1010//============================================================
1111
12#ifdef SDLMAME_WIN32
13#define WIN32_LEAN_AND_MEAN
14#include <windows.h>
15#endif
16
1217// standard SDL headers
1318#include "sdlinc.h"
1419
r245577r245578
6065// minimum window dimension
6166#define MIN_WINDOW_DIM                  200
6267
63//#ifndef SDLMAME_WIN32
64#define WMSZ_TOP        (0)
65#define WMSZ_BOTTOM     (1)
68#ifndef SDLMAME_WIN32
69#define WMSZ_TOP            (0)
70#define WMSZ_BOTTOM         (1)
6671#define WMSZ_BOTTOMLEFT     (2)
6772#define WMSZ_BOTTOMRIGHT    (3)
68#define WMSZ_LEFT       (4)
73#define WMSZ_LEFT           (4)
6974#define WMSZ_TOPLEFT        (5)
7075#define WMSZ_TOPRIGHT       (6)
71#define WMSZ_RIGHT      (7)
72//#endif
76#define WMSZ_RIGHT          (7)
77#endif
7378
7479//============================================================
7580//  GLOBAL VARIABLES
trunk/src/osd/windows/main.c
r245577r245578
77//============================================================
88
99// standard windows headers
10#ifdef OSD_SDL
11#define _WIN32_WINNT 0x0400
12#endif
1310#define WIN32_LEAN_AND_MEAN
1411#include <windows.h>
1512#include <tchar.h>
r245577r245578
3734   int i, rc;
3835   char **utf8_argv;
3936
40#ifdef OSD_SDL
41#ifdef MALLOC_DEBUG
42{
43   extern int winalloc_in_main_code;
44   winalloc_in_main_code = TRUE;
45#endif
46#endif
47
4837   /* convert arguments to UTF-8 */
4938   utf8_argv = (char **) malloc(argc * sizeof(*argv));
5039   if (utf8_argv == NULL)
r245577r245578
6453      osd_free(utf8_argv[i]);
6554   free(utf8_argv);
6655
67#ifdef OSD_SDL
68#ifdef MALLOC_DEBUG
69   {
70      void check_unfreed_mem(void);
71      check_unfreed_mem();
72   }
73   winalloc_in_main_code = FALSE;
74}
75#endif
76#endif
77
7856   return rc;
7957}
trunk/src/ume/tiny.lst
r245577r245578
77
88******************************************************************************/
99
10#src/mame/tiny.lst
11#src/mess/tiny.lst
10#../../../../../src/mame/tiny.lst
11#../../../../../src/mess/tiny.lst
trunk/src/ume/ume.lst
r245577r245578
77
88******************************************************************************/
99
10#src/mame/mame.lst
11#src/mess/mess.lst
10#../../../../../src/mame/mame.lst
11#../../../../../src/mess/mess.lst


Previous 199869 Revisions Next


© 1997-2024 The MAME Team