-- Added the relative directory path for the Qt include files
20) Merge the Linux build fixes from @richard42
-- Jaguar core's makefile and Qt pro file updates, fix filenames case sensitive & fixes for Linux
+21) Updated the M68K exception catch
+-- Added a M68K exception catch check in the Alpine tab settings
+-- Added a specific breakpoint for the M68K bus error exception
Release 4a (15th August 2019)
-----------------------------
// --- ---------- ------------------------------------------------------------
// JLH 07/15/2011 Created this file
// JPM 09/03/2018 Depend the platform transform slashes or backslashes
+// JPM Feb./2021 Added a M68K exception catch check
//
#include "alpinetab.h"
layout4->addLayout(layout3);
// Checkboxes...
- writeROM = new QCheckBox(tr("Allow writes to cartridge ROM"));
+ writeROM = new QCheckBox(tr("Allow writes to cartridge ROM"));
+ M68KExceptionCatch = new QCheckBox(tr("Allow M68000 exception catch"));
// useDSP = new QCheckBox(tr("Enable DSP"));
// useHostAudio = new QCheckBox(tr("Enable audio playback"));
// useUnknownSoftware = new QCheckBox(tr("Allow unknown software in file chooser"));
//writeROM->setDisabled(true);
layout4->addWidget(writeROM);
+ layout4->addWidget(M68KExceptionCatch);
// layout4->addWidget(useDSP);
// layout4->addWidget(useHostAudio);
// layout4->addWidget(useUnknownSoftware);
edit2->setText(vjs.absROMPath);
edit3->setText(v.toString());
writeROM->setChecked(vjs.allowWritesToROM);
+ M68KExceptionCatch->setChecked(vjs.allowM68KExceptionCatch);
}
strcpy(vjs.absROMPath, CheckForSlashes(edit2->text()).toUtf8().data());
vjs.refresh = edit3->text().toUInt(&ok, 10);
vjs.allowWritesToROM = writeROM->isChecked();
+ vjs.allowM68KExceptionCatch = M68KExceptionCatch->isChecked();
}
// QLineEdit * edit3;\r
// QLineEdit * edit4;\r
QCheckBox * writeROM;\r
+ QCheckBox * M68KExceptionCatch;\r
// QCheckBox * useDSP;\r
// QCheckBox * useHostAudio;\r
// QCheckBox * useUnknownSoftware;\r
strcpy(vjs.absROMPath, settings.value("DefaultABS", "").toString().toUtf8().data());\r
vjs.refresh = settings.value("refresh", 60).toUInt();\r
vjs.allowWritesToROM = settings.value("writeROM", false).toBool();\r
+ vjs.allowM68KExceptionCatch = settings.value("M68KExceptionCatch", false).toBool();\r
settings.endGroup();\r
\r
// Read settings from the Keybindings\r
settings.setValue("DefaultROM", vjs.alpineROMPath);\r
settings.setValue("DefaultABS", vjs.absROMPath);\r
settings.setValue("writeROM", vjs.allowWritesToROM);\r
+ settings.setValue("M68KExceptionCatch", vjs.allowM68KExceptionCatch);\r
settings.endGroup();\r
\r
// Write settings from the Debugger mode\r
// JPM 10/13/2018 Added breakpoints features
// JPM Aug./2019 Fix specific breakpoint for ROM cartridge or unknown memory location writing; added a specific breakpoint for the M68K illegal & unimplemented instruction, unknown exceptions and address error exceptions
// JPM Aug./2019 Fix potential emulator freeze after an exception has occured
+// JPM Feb./2021 Added a specific breakpoint for the M68K bus error exception, and a M68K exception catch detection
//
//uint32_t retVal = 0;
// check exception vectors access
- if ((address >= 0x8) && (address <= 0x7c))
+ if (vjs.allowM68KExceptionCatch && (address >= 0x8) && (address <= 0x7c))
{
switch (address)
{
+ case 0x08:
+ m68k_read_exception_vector(address, "Bus error");
+ break;
+
case 0x0c:
m68k_read_exception_vector(address, "Address error");
break;
uint32_t frameSkip;\r
uint32_t renderType;\r
uint32_t refresh;\r
+ bool allowM68KExceptionCatch; // Allow M68K exception catch\r
bool allowWritesToROM; // Allow writing to ROM cartdridge\r
uint32_t biosType; // Bios type used\r
uint32_t jaguarModel; // Jaguar model\r