Added multiple breakpoints feature and their key bindings
authorJean-Paul Mari <djipi.mari@gmail.com>
Tue, 23 Oct 2018 09:17:38 +0000 (05:17 -0400)
committerJean-Paul Mari <djipi.mari@gmail.com>
Tue, 23 Oct 2018 09:17:38 +0000 (05:17 -0400)
24 files changed:
Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp
Win-VS2017/virtualjaguar.vcxproj
Win-VS2017/virtualjaguar.vcxproj.filters
docs/vj_HistoryNotes.txt [moved from docs/vj_ReleaseNotes.txt with 94% similarity]
res/debug-breakpoints.png [new file with mode: 0644]
res/debug-deleteallbreakpoints.png [new file with mode: 0644]
res/debug-disableallbreakpoints.png [new file with mode: 0644]
src/debugger/BreakpointsWin.cpp [new file with mode: 0644]
src/debugger/BreakpointsWin.h [new file with mode: 0644]
src/debugger/NewFnctBreakpointWin.cpp [new file with mode: 0644]
src/debugger/NewFnctBreakpointWin.h [new file with mode: 0644]
src/debugger/brkWin.cpp [deleted file]
src/debugger/brkWin.h [deleted file]
src/gui/debug/cpubrowser.cpp
src/gui/debug/cpubrowser.h
src/gui/keybindingstab.cpp
src/gui/keybindingstab.h
src/gui/mainwin.cpp
src/gui/mainwin.h
src/gui/virtualjaguar.qrc
src/jaguar.cpp
src/jaguar.h
src/m68000/m68kinterface.h
virtualjaguar.pro

index 034b169..f13aef4 100644 (file)
@@ -31965,6 +31965,107 @@ static const unsigned char qt_resource_data[] = {
   0x43,0x99,0x60,0x4d,0x7a,0x78,0x13,0x73,0x52,0x87,0x7d,0xb4,0xf6,0xc9,0x27,0xff,\r
   0x7,0x6e,0x8,0x77,0x55,0xb3,0x24,0xb6,0xea,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,\r
   0x44,0xae,0x42,0x60,0x82,\r
   0x43,0x99,0x60,0x4d,0x7a,0x78,0x13,0x73,0x52,0x87,0x7d,0xb4,0xf6,0xc9,0x27,0xff,\r
   0x7,0x6e,0x8,0x77,0x55,0xb3,0x24,0xb6,0xea,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,\r
   0x44,0xae,0x42,0x60,0x82,\r
+    // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-breakpoints.png\r
+  0x0,0x0,0x6,0x18,\r
+  0x89,\r
+  0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,\r
+  0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x8,0x6,0x0,0x0,0x0,0xc3,0x3e,0x61,0xcb,\r
+  0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,\r
+  0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,\r
+  0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f,\r
+  0xa8,0x64,0x0,0x0,0x5,0xad,0x49,0x44,0x41,0x54,0x78,0x5e,0xed,0xdd,0x4d,0x68,\r
+  0x1c,0x65,0x1c,0x6,0xf0,0xcc,0xec,0x6e,0x93,0x90,0x56,0xa8,0x7a,0xd0,0x98,0xa4,\r
+  0x35,0x12,0x91,0xfa,0x95,0x88,0x60,0xb1,0x48,0x14,0xc1,0xaf,0x83,0xe2,0xc9,0xf,\r
+  0x10,0xf1,0x68,0xac,0x18,0x50,0x90,0x16,0x15,0x9,0x7e,0xb4,0xa0,0xa6,0x3d,0xd4,\r
+  0x42,0x7b,0x91,0x78,0x10,0xbd,0x8,0x9e,0x4,0x23,0xd2,0x83,0x7,0x45,0xb1,0xd4,\r
+  0x4a,0xab,0x31,0x69,0x4c,0xcd,0x26,0x25,0xd4,0x36,0x4d,0x93,0xec,0x66,0x67,0x76,\r
+  0xec,0xf8,0x7f,0xc0,0x79,0xdf,0x5,0xc7,0xcd,0x4e,0xa6,0xbb,0xf9,0x3f,0x3f,0x78,\r
+  0xe9,0xd3,0x86,0x40,0xa,0xf,0xb3,0xff,0x7d,0xe7,0xdd,0x89,0x73,0xe1,0x62,0x39,\r
+  0x68,0x22,0xb5,0x5c,0xfc,0x49,0x4a,0xb1,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca,\r
+  0xb1,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca,0xd5,0xbe,0xf,0xc0,0x5d,0x84,0xfa,\r
+  0xe2,0xe0,0xcf,0xff,0x89,0x57,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0x9f,\r
+  0x1,0x16,0x97,0xa,0x48,0x62,0xfc,0xf7,0x5f,0x91,0x44,0xb1,0x70,0x1,0x89,0x56,\r
+  0xa3,0xa3,0xeb,0x66,0x24,0x71,0xed,0x35,0x57,0x22,0x1,0x67,0x0,0xaa,0x6,0xb,\r
+  0xa0,0x1c,0xb,0xa0,0x5c,0xe2,0x33,0x40,0x3e,0x7f,0x1a,0x49,0xec,0x1b,0xde,0x83,\r
+  0x24,0x26,0x27,0x4f,0x21,0xd1,0x6a,0xbc,0xb0,0x73,0x10,0x49,0xf4,0xf7,0x3f,0x80,\r
+  0x4,0x9c,0x1,0xa8,0x1a,0x2c,0x80,0x72,0x2c,0x80,0x72,0x89,0xcf,0x0,0xd3,0xd3,\r
+  0x53,0x48,0xe2,0xfd,0xf7,0xde,0x42,0x12,0x13,0x13,0x13,0x48,0xb4,0x1a,0x83,0x83,\r
+  0x2f,0x23,0x89,0x7b,0xef,0x7b,0x18,0x9,0x38,0x3,0x50,0x35,0x58,0x0,0xe5,0x58,\r
+  0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,\r
+  0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x52,0xbf,0x17,0x30,0x35,0x65,\r
+  0x7e,0x7d,0xf3,0xe6,0xab,0x90,0x28,0x54,0x28,0x2c,0x23,0x89,0x85,0x5,0xf3,0xc,\r
+  0x25,0xef,0x5,0x50,0xa2,0x58,0x0,0xe5,0x58,0x0,0xe5,0x52,0x9f,0x1,0x7c,0x1f,\r
+  0x1,0xf6,0xee,0x3d,0x80,0x44,0xa1,0x23,0x47,0xbe,0x42,0x12,0x7,0xf,0x7e,0x80,\r
+  0x24,0x38,0x3,0x50,0xa2,0x58,0x0,0xe5,0x58,0x0,0xe5,0xd6,0xbc,0x0,0xb9,0x5c,\r
+  0xce,0x58,0x6d,0x1b,0x37,0x19,0xcb,0x75,0x1c,0x63,0x65,0xb2,0xae,0xb1,0xb2,0x39,\r
+  0xc7,0x5a,0xe1,0xbf,0xfd,0xbb,0x5c,0xf7,0xd2,0xf7,0x45,0xd6,0x3f,0xaf,0x81,0xd1,\r
+  0x45,0xff,0x89,0x57,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0xdf,0x7,0x98,\r
+  0x9f,0x3f,0x87,0x24,0x8e,0x1f,0x3f,0x8a,0x24,0x3a,0xbb,0x6e,0x44,0x12,0x5d,0x9d,\r
+  0xd7,0x21,0x25,0xa3,0x6c,0xfd,0x77,0x2,0xeb,0xef,0x9e,0x5f,0x46,0x12,0xf6,0xd7,\r
+  0x2f,0x37,0xee,0x3,0x50,0xaa,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0x9f,0x1,0x2a,\r
+  0x94,0x56,0x10,0x20,0x3f,0x8e,0x20,0xbc,0x6f,0xbf,0x41,0x12,0xfe,0x89,0x9f,0x91,\r
+  0x44,0x70,0xde,0x9c,0x29,0x9c,0x4d,0x57,0x20,0x89,0xcc,0x2d,0x7d,0x48,0x22,0xb7,\r
+  0xe3,0x1e,0x24,0x11,0xb4,0xdf,0x80,0x24,0xca,0xd9,0x16,0x24,0xe1,0x97,0xcc,0x99,\r
+  0xc0,0xb7,0x66,0x84,0xb4,0x71,0x6,0xa0,0x54,0xb1,0x0,0xca,0xb1,0x0,0xca,0x25,\r
+  0x3e,0x3,0x4,0xa7,0x7e,0x41,0x12,0xde,0xc8,0x87,0x48,0x62,0xe5,0xb3,0x8f,0x91,\r
+  0x44,0xb0,0x78,0x11,0x29,0x19,0x4e,0x5b,0x1b,0x92,0xc8,0x3e,0xf8,0x18,0x92,0xd8,\r
+  0xf0,0xe2,0x6b,0x48,0xc2,0xb9,0xde,0xdc,0x97,0xf0,0x4a,0x8,0xe0,0x79,0xd6,0x1,\r
+  0x86,0x35,0xc6,0x19,0x80,0x52,0xc5,0x2,0x28,0xc7,0x2,0x28,0x17,0x3b,0x3,0x4,\r
+  0x81,0xf9,0x65,0xc7,0x7e,0x91,0x99,0x31,0x9f,0xfb,0xb7,0x3c,0xf0,0x24,0x92,0xf0,\r
+  0x8f,0xfd,0x84,0x4,0xbe,0x87,0x90,0x12,0xd7,0xec,0x78,0xf6,0xae,0x1d,0x48,0xa2,\r
+  0x65,0xd7,0x3b,0x48,0x22,0xb8,0xf5,0x6e,0x24,0xe1,0xa5,0xbc,0x4f,0xc0,0x19,0x80,\r
+  0x52,0xc5,0x2,0x28,0xc7,0x2,0x28,0x57,0x31,0x3,0xd8,0x3,0x81,0x63,0xbf,0xcf,\r
+  0x3f,0x3d,0x86,0x24,0x8a,0x83,0xcf,0x20,0x9,0xef,0xc7,0xef,0x91,0x1a,0x83,0xdb,\r
+  0xdd,0x83,0x24,0x5a,0x47,0xbe,0x44,0x82,0xf6,0xad,0x8,0xa2,0x54,0x32,0xf7,0x5,\r
+  0xec,0xf3,0x7,0xb5,0xe2,0xc,0x40,0xa9,0x62,0x1,0x94,0x63,0x1,0x94,0xab,0xdc,\r
+  0x7,0xb0,0x5f,0xd2,0x56,0xcc,0xdf,0x1,0x54,0xda,0xff,0x26,0x92,0x28,0x1e,0x1a,\r
+  0x46,0x82,0x92,0xb5,0x99,0xde,0x60,0x36,0x3c,0xf7,0x3c,0x92,0x68,0x7e,0x63,0x1f,\r
+  0x92,0xf0,0xfc,0xc,0x92,0xb0,0x67,0x82,0x5a,0x71,0x6,0xa0,0x54,0xb1,0x0,0xca,\r
+  0xb1,0x0,0xca,0xc5,0xcf,0x0,0xb3,0xe6,0xe7,0xfd,0x97,0x1e,0x37,0xf7,0xd2,0xcb,\r
+  0x33,0xd3,0x48,0xeb,0x83,0xbb,0xd5,0x3c,0x43,0xd8,0x32,0xfc,0x11,0x92,0x70,0x7a,\r
+  0xcd,0x7b,0x5,0xc5,0x82,0x3d,0x3,0xd4,0xb6,0x2f,0xc0,0x19,0x80,0x52,0xc5,0x2,\r
+  0x28,0xc7,0x2,0x28,0x17,0x5b,0x80,0x60,0xea,0x37,0x63,0x95,0x67,0xf3,0xc6,0x5a,\r
+  0x6f,0xca,0x67,0xe7,0xcc,0x35,0x76,0xd2,0x58,0x8e,0xe3,0x18,0x2b,0x3c,0x6e,0x10,\r
+  0x5d,0x8d,0xa6,0x1,0x7f,0x64,0x4a,0x12,0xb,0xa0,0x1c,0xb,0xa0,0x5c,0x6c,0x1,\r
+  0xfc,0xc9,0x71,0x63,0x35,0x85,0x67,0x4,0xa3,0x6b,0xbd,0x9,0x3f,0xa7,0x10,0x59,\r
+  0xe5,0x33,0xb3,0xc6,0xaa,0x10,0x3e,0x97,0x28,0xba,0x1a,0xc,0xaf,0x0,0xca,0xb1,\r
+  0x0,0xca,0xb1,0x0,0xca,0xc5,0x16,0xc0,0x71,0x33,0xc6,0x5a,0xff,0xc2,0xd7,0xf1,\r
+  0xc8,0xba,0xf4,0x5e,0x3f,0xba,0xc2,0x33,0x80,0xd1,0x35,0x33,0x7b,0xce,0x58,0xf9,\r
+  0xd9,0xb9,0x9a,0xd6,0xf9,0xf9,0x5,0x63,0xad,0x35,0x5e,0x1,0x94,0x63,0x1,0x94,\r
+  0x63,0x1,0x94,0x8b,0x3d,0xf,0x10,0x7c,0x37,0x8a,0x24,0x16,0x9f,0x7a,0x8,0x9,\r
+  0xca,0x97,0xf7,0x99,0x3a,0x89,0xb3,0x9e,0x41,0xd4,0xfc,0xba,0x79,0x3f,0xde,0x7f,\r
+  0xf4,0x69,0x24,0x31,0x34,0xb4,0x1b,0x49,0x4c,0x4f,0xff,0x89,0xb4,0x3a,0x2b,0x2b,\r
+  0x45,0x24,0xb1,0xbc,0xb4,0x88,0x24,0x78,0x1e,0x80,0x12,0xc5,0x2,0x28,0xc7,0x2,\r
+  0x28,0x17,0x3f,0x3,0xcc,0x99,0xfb,0xdf,0xcb,0x4f,0xf4,0x23,0x89,0xf2,0x84,0xf9,\r
+  0x59,0xc1,0x46,0x97,0xe9,0xb9,0x9,0x49,0xb4,0x1c,0xf8,0x4,0x49,0xf8,0xdd,0xdb,\r
+  0x90,0xc4,0xe8,0xa8,0xf9,0x59,0xc2,0xd2,0x1a,0x7f,0x2e,0xa2,0xaf,0xef,0xe,0x24,\r
+  0xd1,0xd1,0x61,0x7e,0x76,0x91,0x33,0x0,0x55,0x85,0x5,0x50,0x8e,0x5,0x50,0x2e,\r
+  0xfe,0x73,0x1,0x9e,0xf9,0xac,0x5f,0xef,0xd0,0x1e,0x24,0x51,0xd8,0xff,0x2e,0x12,\r
+  0x14,0xcd,0xf7,0xb1,0x75,0x2f,0xdc,0xe3,0x8f,0x68,0xde,0xf9,0x2a,0x92,0xc8,0xd,\r
+  0xe,0x21,0x41,0x26,0x8b,0x50,0xa7,0x38,0x3,0x50,0x35,0x58,0x0,0xe5,0x58,0x0,\r
+  0xe5,0x2a,0x66,0x80,0xd8,0xe7,0x2,0x9e,0x99,0x44,0x10,0x85,0xdd,0x3,0x48,0xc2,\r
+  0xfb,0xda,0x7a,0xc6,0x4e,0x9d,0xcb,0xf4,0xde,0x89,0x24,0x5a,0xf,0x7f,0x8e,0x24,\r
+  0x82,0xab,0xdb,0x91,0xc0,0x9a,0x19,0xea,0x4d,0xb5,0x3f,0x1e,0xaf,0x0,0xca,0xb1,\r
+  0x0,0xca,0xb1,0x0,0xca,0x55,0xee,0x3,0x58,0xec,0xa3,0xff,0x4e,0x93,0x79,0xff,\r
+  0xdf,0xc9,0x4f,0x20,0x89,0xe5,0x97,0x9e,0x45,0x12,0xde,0xd1,0x1f,0x90,0x20,0xed,\r
+  0x67,0x8,0x65,0xcc,0x73,0x8c,0x99,0xed,0xe6,0xef,0x14,0x6a,0x7e,0xe5,0x6d,0x24,\r
+  0xe1,0xf6,0x6e,0x47,0x82,0x6,0x3c,0xeb,0x5f,0xd,0x5e,0x1,0x94,0x63,0x1,0x94,\r
+  0x63,0x1,0x94,0x8b,0x9d,0x1,0x6c,0xf6,0x3e,0x41,0x38,0x15,0x44,0x65,0xce,0x9a,\r
+  0xcf,0x14,0x2a,0x8e,0x1c,0x46,0x12,0xa5,0x2f,0x3e,0x45,0x12,0xe5,0x3f,0xcc,0x19,\r
+  0xa2,0xea,0x33,0x86,0xd6,0x87,0xf2,0xdd,0xce,0x2d,0x48,0x22,0x77,0xff,0x23,0x48,\r
+  0x22,0x3b,0xb0,0xb,0x49,0x38,0xf6,0xfb,0x7c,0x4b,0x60,0x8d,0x0,0xeb,0x6d,0x22,\r
+  0xe0,0x15,0x40,0x39,0x16,0x40,0x39,0x16,0x40,0xb9,0xaa,0x67,0x0,0x5b,0xc5,0x48,\r
+  0x60,0xdf,0x4b,0xf0,0xcc,0xf3,0x1,0xc1,0xa4,0x75,0x86,0x70,0xec,0x18,0x82,0xf0,\r
+  0x4e,0x98,0xbf,0x77,0x30,0x98,0xff,0xb,0x9,0x36,0x9a,0xe7,0xf6,0xb3,0xdb,0x6e,\r
+  0x47,0x82,0x9e,0xdb,0x10,0x84,0xbb,0xa5,0x1b,0x9,0x5a,0xcd,0xdf,0x2b,0xa8,0x1d,\r
+  0xaf,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca,0xd5,0x3c,0x3,0xd8,0x2a,0x66,0x2,\r
+  0x4b,0xdc,0xfb,0x68,0xfb,0xdb,0xab,0x7d,0xdf,0x5d,0xb1,0x4f,0x61,0xdd,0x20,0xaf,\r
+  0xf3,0xdb,0xf9,0xa9,0xe3,0x15,0x40,0x39,0x16,0x40,0x39,0x16,0x40,0xb9,0xc4,0x67,\r
+  0x80,0x5a,0xc5,0xbc,0x84,0x53,0xc2,0x78,0x5,0x50,0x8e,0x5,0x50,0x8e,0x5,0x50,\r
+  0xae,0xee,0xa,0x10,0xbe,0xe6,0x47,0x17,0xad,0x2d,0x5e,0x1,0x94,0x63,0x1,0x94,\r
+  0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x54,0x6b,\r
+  0x6a,0xfa,0x1b,0x6c,0xf5,0x55,0xe9,0x85,0x29,0x3e,0x41,0x0,0x0,0x0,0x0,0x49,\r
+  0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/screenshot.png\r
   0x0,0x0,0x1b,0x4b,\r
   0x89,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/screenshot.png\r
   0x0,0x0,0x1b,0x4b,\r
   0x89,\r
@@ -72281,6 +72382,108 @@ static const unsigned char qt_resource_data[] = {
   0x69,0x4,0xf,0xd1,0x3c,0x0,0xf8,0xbd,0x3e,0xcd,0x66,0x15,0xb7,0xbd,0xb3,0xf9,\r
   0x4f,0x9f,0x8d,0xec,0xfc,0x5a,0x0,0xfc,0x1b,0x86,0xab,0xd5,0xc0,0xad,0xe8,0x69,\r
   0xfc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
   0x69,0x4,0xf,0xd1,0x3c,0x0,0xf8,0xbd,0x3e,0xcd,0x66,0x15,0xb7,0xbd,0xb3,0xf9,\r
   0x4f,0x9f,0x8d,0xec,0xfc,0x5a,0x0,0xfc,0x1b,0x86,0xab,0xd5,0xc0,0xad,0xe8,0x69,\r
   0xfc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
+    // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-disableallbreakpoints.png\r
+  0x0,0x0,0x6,0x22,\r
+  0x89,\r
+  0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,\r
+  0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4,\r
+  0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,\r
+  0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,\r
+  0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f,\r
+  0xa8,0x64,0x0,0x0,0x5,0xb7,0x49,0x44,0x41,0x54,0x58,0x47,0xc5,0x56,0x6d,0x6c,\r
+  0x93,0x55,0x14,0x7e,0xfa,0xb9,0x96,0xb2,0x8f,0xee,0xb,0x6,0xb,0xeb,0x36,0xdc,\r
+  0x2c,0x4b,0x18,0x63,0x6a,0x47,0x1c,0x3,0x6,0x26,0x33,0x41,0x45,0x85,0x1,0x8e,\r
+  0x88,0xc1,0x8,0x51,0x1,0xa3,0x33,0x18,0x31,0xd1,0x1f,0x6,0x4c,0x14,0x51,0x7e,\r
+  0xf0,0x47,0xd,0x1f,0x41,0x16,0x25,0x1b,0xa,0x91,0x41,0x62,0x8,0xc8,0x6,0xc,\r
+  0xd6,0xd,0xb7,0x31,0x18,0x1b,0xa5,0x4c,0xa4,0xdd,0xf7,0xdc,0x68,0xd7,0x76,0x5d,\r
+  0x5b,0xcf,0xbd,0x7d,0x5b,0xca,0xe8,0xb6,0x96,0x69,0x78,0xd6,0xbd,0xb7,0xef,0x7b,\r
+  0xef,0x7d,0xcf,0x73,0xce,0x79,0xce,0x3d,0x15,0xd,0x5a,0xdc,0x1e,0x3c,0x46,0x88,\r
+  0x85,0x71,0x92,0x20,0x1f,0x44,0x74,0xa5,0xc1,0xc3,0x2f,0xc2,0xe3,0x10,0x30,0xa9,\r
+  0x8,0x30,0x5b,0x3e,0xb8,0x5c,0x6e,0x58,0xad,0x16,0x78,0xdc,0x4e,0x88,0x25,0x11,\r
+  0x50,0x44,0x28,0x20,0x97,0x4b,0xfd,0x5c,0x44,0x44,0x30,0x18,0x26,0x4d,0xc0,0xe1,\r
+  0x18,0x41,0xfd,0x15,0x3d,0xea,0xf5,0x35,0xe8,0xe8,0x30,0xc1,0xed,0xb2,0x43,0x22,\r
+  0x55,0x21,0x26,0x46,0x8d,0x39,0x73,0x32,0xa0,0x5b,0x50,0x84,0xd8,0x18,0x5,0xdc,\r
+  0xb4,0x98,0x91,0x10,0x8d,0x62,0xf2,0x68,0x4,0x68,0x87,0xd3,0xe9,0x82,0xc1,0x78,\r
+  0x1b,0xe5,0x3f,0xff,0x80,0xa6,0xab,0x4d,0x98,0xa2,0x54,0x42,0x35,0x35,0xa,0x32,\r
+  0xb9,0xa,0xce,0x61,0x2b,0x86,0xac,0xf7,0x28,0x22,0x56,0x24,0x24,0x4c,0xc3,0xab,\r
+  0x2b,0xd7,0x40,0x97,0xb7,0x8,0xa,0x85,0x1c,0x62,0xf1,0x24,0x8,0xf0,0x85,0x74,\r
+  0xf1,0xd0,0x16,0x7d,0x7d,0x3,0xf6,0x7d,0xff,0xd,0xfa,0xfb,0x7b,0xe8,0xe5,0x4b,\r
+  0x50,0x50,0xb0,0x10,0x49,0x49,0xc9,0x50,0xaa,0x62,0x61,0xb3,0xf6,0xa1,0xb7,0xb7,\r
+  0x83,0x22,0xd3,0x80,0x53,0x95,0x47,0x21,0x95,0x4a,0xb1,0xfc,0x85,0x55,0x58,0x55,\r
+  0xfc,0x1a,0x98,0x7d,0x51,0x0,0x89,0xf0,0x8,0x8,0x2b,0x8d,0xb7,0xda,0xb0,0x67,\r
+  0xcf,0x97,0xe8,0xed,0xe9,0xc6,0x96,0x2d,0xef,0x63,0x6e,0xb6,0x8e,0xbc,0x53,0x3c,\r
+  0x94,0x67,0xa7,0xd3,0x89,0xc6,0xa6,0x6b,0x38,0x74,0x70,0x2f,0xba,0xba,0x3a,0xf0,\r
+  0xd6,0xc6,0xcd,0x44,0x74,0x19,0x8f,0x82,0x8f,0x44,0x98,0x55,0xe0,0x21,0xb1,0x79,\r
+  0x50,0x76,0x78,0x1f,0x3a,0x3b,0xcc,0x28,0x5e,0xbd,0x8e,0x87,0x56,0xa9,0x7c,0xd8,\r
+  0x38,0x83,0x4c,0x26,0x43,0xce,0xbc,0xb9,0x78,0x65,0xd5,0x7a,0xd2,0x85,0x1c,0x95,\r
+  0x95,0x27,0x70,0xd7,0x64,0xe2,0x3a,0xe0,0xd5,0x42,0x8,0x8f,0x0,0xed,0x31,0xdc,\r
+  0x6c,0x46,0x73,0xf3,0x55,0x64,0x64,0x6a,0x91,0x9f,0xbf,0x44,0x98,0x18,0x1b,0xcc,\r
+  0xdb,0x3c,0x9d,0xe,0xf9,0xcf,0xe6,0xe3,0xb6,0xb1,0x15,0x2d,0x37,0xae,0xf1,0x48,\r
+  0xfa,0xc4,0x18,0x32,0x1,0xdf,0xa6,0xce,0x4e,0x33,0xf7,0x2c,0x3d,0x5d,0x8b,0xe8,\r
+  0xe8,0x58,0x61,0x76,0x7c,0xc8,0x65,0x52,0xcc,0xcd,0xc9,0xe3,0x29,0x31,0xdc,0xbc,\r
+  0x41,0x51,0x1c,0x9,0x2d,0x2,0x6c,0x11,0x5b,0xc7,0x8d,0xb,0xcf,0x72,0x73,0x17,\r
+  0x60,0xc7,0x8e,0x6f,0x49,0x54,0x2f,0x43,0x22,0x9,0x12,0xf7,0x31,0xa0,0xd1,0x64,\r
+  0xf2,0xd1,0x32,0xd8,0x43,0xef,0x73,0xd3,0xfb,0x26,0x88,0x80,0x97,0xa1,0x8,0x3,\r
+  0x83,0x56,0xb4,0x5c,0x6f,0x44,0x75,0xf5,0x19,0x9c,0x3e,0x7d,0xa,0x57,0xea,0x2f,\r
+  0x63,0xc8,0x66,0x21,0x65,0xcb,0xbd,0x55,0x11,0x22,0x2c,0x54,0x92,0xc,0x62,0xf1,\r
+  0x83,0x26,0xa5,0xc2,0x78,0x1f,0xcc,0x63,0x1a,0x86,0x86,0x86,0xc9,0xd8,0x5,0x1c,\r
+  0x3f,0xfe,0x2b,0xfa,0xfb,0xba,0x60,0xb3,0xd9,0xe0,0x76,0x13,0x73,0x4a,0x83,0x4a,\r
+  0x35,0x15,0x9,0x89,0x49,0x28,0x2c,0x5c,0x46,0xaa,0x2e,0xa4,0x94,0xc8,0xbd,0x7b,\r
+  0xc7,0x41,0xfb,0xad,0x26,0x3e,0xaa,0xe3,0x66,0x11,0x9,0x89,0x3f,0xa4,0x41,0xcb,\r
+  0xb0,0xbd,0xdd,0x8c,0xb2,0xb2,0x3,0xa8,0xab,0xfd,0x3,0xd1,0x74,0xa2,0xb1,0x7c,\r
+  0x27,0xcf,0x4c,0xa2,0x43,0x25,0x9e,0xea,0xbb,0xf,0xb7,0xff,0xfa,0x1b,0xed,0xc6,\r
+  0x16,0x74,0x77,0x77,0x63,0x61,0xc1,0x62,0xac,0x5e,0xf3,0x26,0x66,0xce,0x48,0x22,\r
+  0x72,0xc2,0xb,0x46,0xa1,0xb7,0xb7,0x7,0xbb,0x76,0x7d,0x8e,0xe,0xb3,0x9,0x5b,\r
+  0xdf,0xdb,0x86,0x9c,0x9c,0xa7,0xc9,0x49,0x76,0x32,0x8a,0xee,0x47,0x80,0xb3,0x20,\r
+  0x2e,0xf7,0x2c,0x4e,0xec,0xdf,0xb7,0x17,0x8d,0xd,0x97,0xa1,0xd5,0x6a,0xb1,0xb6,\r
+  0x64,0x13,0xd2,0xd2,0xd2,0xa1,0x54,0x44,0xf8,0xd,0x58,0xac,0x76,0xb4,0xb6,0xb6,\r
+  0xe2,0x68,0xc5,0x8f,0xb8,0x70,0xbe,0x8a,0xf7,0x81,0x4d,0x9b,0xb6,0x92,0x28,0x63,\r
+  0xbc,0xb,0x2,0xe0,0x18,0x76,0xe1,0xe4,0xa9,0x93,0x74,0x76,0x18,0xb0,0x68,0xf1,\r
+  0x52,0x64,0x66,0x66,0xf1,0xe7,0xbe,0x2a,0xb8,0x1f,0x1,0xba,0x3a,0x1c,0xe,0x5e,\r
+  0xe3,0x95,0x95,0xc7,0x29,0xb4,0x8b,0xb1,0x61,0xc3,0x3b,0x74,0xbc,0x46,0xf2,0xe9,\r
+  0x60,0x70,0xd1,0xd6,0x5d,0x5f,0xed,0x44,0xcd,0xc5,0xb3,0x28,0x2a,0x2a,0xa2,0x83,\r
+  0xa6,0x94,0xc2,0xeb,0x9d,0x1b,0x26,0xc3,0x5d,0x5d,0x26,0x1c,0x39,0x72,0x90,0x48,\r
+  0x56,0x23,0x45,0x93,0x8a,0xed,0x9f,0x7c,0x8d,0xb8,0xd8,0x29,0xfe,0xf0,0x33,0x8,\r
+  0xcb,0xbd,0x1c,0x8c,0xc6,0x36,0xd4,0xd6,0xd6,0x20,0x71,0xfa,0xc,0x2c,0x7f,0xb1,\r
+  0x64,0x5c,0xe3,0xc,0x12,0xaa,0xf1,0xe2,0xe2,0x12,0x52,0xb8,0x6,0x55,0x55,0x55,\r
+  0x30,0x99,0xda,0xf9,0xf3,0x13,0xbf,0x55,0x60,0xf7,0xee,0x1d,0xf8,0x62,0xe7,0xa7,\r
+  0x38,0x5f,0x5d,0x85,0xf9,0x4f,0x2d,0xc4,0xbb,0x9b,0x3f,0x44,0x2c,0x33,0x3e,0xa,\r
+  0x2,0x1,0x11,0xef,0x56,0xd7,0x5b,0xc,0x30,0x53,0x9e,0x16,0x15,0x14,0x20,0x55,\r
+  0x93,0xec,0x9d,0x9a,0x0,0x29,0x9a,0x14,0xcc,0x9b,0x9f,0x47,0x1e,0x93,0x68,0xaf,\r
+  0xd4,0xf2,0x67,0xd,0xd,0x75,0x68,0x6b,0x6d,0x26,0x7,0xd4,0xd8,0xb2,0x75,0x1b,\r
+  0x4a,0x4b,0x3f,0x46,0x5a,0x6a,0x3a,0xcf,0x7b,0xa0,0xf7,0xc,0x9c,0x0,0x2b,0x39,\r
+  0xb7,0xcb,0x85,0xee,0xae,0x3b,0xfc,0xfb,0xac,0x94,0x39,0x7c,0x32,0x14,0x88,0x29,\r
+  0x97,0xc9,0x24,0x40,0xb9,0x5c,0x4e,0xe4,0xcd,0xfc,0xd9,0x9a,0xb5,0x6f,0xe0,0x83,\r
+  0xd2,0xed,0xd8,0xf6,0xd1,0x67,0x3c,0xef,0x72,0x19,0x59,0xa5,0xf,0x5b,0x3b,0x1a,\r
+  0x9c,0x80,0xf7,0x50,0xf0,0x60,0x64,0xc4,0xce,0x6e,0x11,0x15,0x9d,0xc8,0xc7,0x50,\r
+  0x11,0x19,0x19,0x49,0x87,0x92,0x4,0xc3,0xa4,0x21,0x86,0xb4,0xb4,0xc,0x64,0x65,\r
+  0x65,0x23,0x3e,0x2e,0x9a,0xee,0x48,0xed,0x1,0xdd,0x6f,0x34,0x84,0x14,0x10,0x9,\r
+  0x91,0x18,0x11,0xca,0x78,0xfe,0xdd,0x7c,0xf7,0x3a,0x1f,0x43,0x85,0x99,0x1a,0x13,\r
+  0x13,0x70,0x54,0x54,0x14,0xbf,0xf7,0x87,0x9a,0xfe,0x7d,0x6a,0x1f,0xb,0x7e,0x2,\r
+  0xcc,0x83,0x8c,0x27,0x52,0xa9,0xb3,0x29,0xd1,0xd4,0x58,0x4f,0x39,0x75,0xa,0x33,\r
+  0xe3,0xc3,0x3a,0x44,0x25,0xd9,0x66,0xe4,0x87,0x54,0x66,0xa6,0x90,0xba,0x9,0x8c,\r
+  0x6,0xc2,0x4b,0x40,0x58,0x3f,0x7b,0xf6,0x93,0x48,0xa3,0x43,0x47,0xaf,0xd7,0xe3,\r
+  0x5c,0xd5,0x39,0x5e,0x66,0x13,0xa1,0x4e,0x7f,0x1e,0x7f,0xd2,0x89,0x39,0x7d,0x7a,\r
+  0x12,0xb4,0x59,0xb9,0x5c,0x43,0xa1,0x9b,0xf,0x88,0x0,0xdb,0x38,0x2d,0x31,0x11,\r
+  0x2b,0x56,0xac,0xe0,0xb5,0x7c,0xb4,0xe2,0x10,0x6a,0x2e,0xd5,0xc0,0xee,0x8,0x1e,\r
+  0x9,0xbb,0xdd,0x4e,0xbf,0x8a,0x9a,0x71,0x60,0xff,0x77,0x3c,0x7a,0x2b,0x57,0x6f,\r
+  0x24,0x2d,0x28,0xc3,0xf2,0x9e,0xe1,0x81,0xa3,0x98,0x38,0x50,0x28,0x3d,0x38,0x76,\r
+  0xac,0x2,0xbf,0x54,0x1c,0xe6,0xed,0x73,0xd9,0x73,0x2f,0x41,0xa7,0x9b,0x8f,0xf8,\r
+  0x44,0xd,0xd4,0x6a,0x35,0x6,0x7,0x6,0x48,0x23,0x6,0xd4,0xea,0x2f,0xe1,0xec,\r
+  0x99,0xdf,0x79,0x73,0x29,0x29,0x79,0x1d,0x4b,0xa,0x9f,0xa7,0xdf,0x83,0x11,0xfc,\r
+  0x3d,0xe1,0x70,0x78,0xa8,0x17,0x30,0x2,0x2c,0xff,0x75,0xfa,0x8b,0x28,0x2f,0xff,\r
+  0x9,0x66,0xd3,0x1d,0xae,0x8b,0x8,0x85,0x8a,0x97,0x9a,0x93,0xe6,0x6c,0xb6,0x7b,\r
+  0xbc,0xee,0xd5,0xea,0x38,0xac,0x5b,0xff,0x36,0x72,0x73,0xb2,0x21,0xa5,0x86,0xc4,\r
+  0xd4,0x1e,0x9e,0xff,0x41,0x8,0xf0,0x36,0x4c,0x1f,0xa6,0xde,0xbe,0x7f,0x6c,0xb8,\r
+  0x50,0x7d,0x92,0x44,0x66,0xc0,0x40,0x7f,0x27,0x29,0xdd,0xce,0x49,0xb0,0x8e,0x96,\r
+  0xa5,0x4d,0x47,0xee,0x33,0x5,0x88,0x53,0x47,0x7b,0x55,0x4f,0xa6,0xc3,0x8c,0x3e,\r
+  0x47,0xd0,0x6e,0xc8,0xc0,0x78,0x78,0xbf,0x50,0xbe,0xc9,0xb0,0x7d,0xc8,0x82,0x11,\r
+  0xfa,0x25,0xc3,0xf2,0xad,0x9c,0x12,0x43,0xcd,0x49,0xe6,0x9d,0x7f,0x4,0xa3,0x81,\r
+  0x18,0x93,0x80,0xf,0x3c,0x22,0xcc,0x8,0x1f,0x4,0x6b,0x34,0x70,0xb5,0x3f,0x8a,\r
+  0xcb,0xa3,0xe0,0xaf,0x82,0xb1,0xc0,0x8c,0xf0,0x3f,0x66,0x8c,0xd9,0xf3,0x71,0xf8,\r
+  0xf,0x8c,0x33,0x4c,0x48,0xe0,0xff,0xc6,0x63,0x26,0x0,0xfc,0xb,0x16,0x3b,0x5c,\r
+  0x80,0x54,0xa2,0x16,0x5e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,\r
+  0x82,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/upper-left.png\r
   0x0,0x0,0x1,0xf1,\r
   0x89,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/upper-left.png\r
   0x0,0x0,0x1,0xf1,\r
   0x89,\r
@@ -72316,6 +72519,120 @@ static const unsigned char qt_resource_data[] = {
   0x83,0x24,0xc0,0xdb,0x7f,0x63,0x20,0x84,0x22,0x40,0x8d,0x7f,0x9f,0xa7,0xb9,0xf7,\r
   0xd7,0x6e,0xaa,0x9b,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
   \r
   0x83,0x24,0xc0,0xdb,0x7f,0x63,0x20,0x84,0x22,0x40,0x8d,0x7f,0x9f,0xa7,0xb9,0xf7,\r
   0xd7,0x6e,0xaa,0x9b,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
   \r
+    // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-deleteallbreakpoints.png\r
+  0x0,0x0,0x6,0xeb,\r
+  0x89,\r
+  0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,\r
+  0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4,\r
+  0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,\r
+  0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,\r
+  0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f,\r
+  0xa8,0x64,0x0,0x0,0x6,0x80,0x49,0x44,0x41,0x54,0x58,0x47,0xc5,0x56,0x6b,0x50,\r
+  0x94,0x55,0x18,0x7e,0xf6,0xe,0xbb,0xb0,0x82,0x9,0x2c,0xea,0xa2,0xdc,0x2f,0xa2,\r
+  0x48,0x99,0x5d,0xd0,0x34,0x5,0x49,0x29,0x47,0xc1,0x69,0x34,0x9a,0xb1,0x66,0x6c,\r
+  0xbc,0x84,0x36,0xa3,0x65,0xc6,0x8f,0xd4,0x29,0xcc,0xcb,0x94,0x93,0x8e,0xe6,0x94,\r
+  0x58,0x16,0x36,0x93,0xa1,0x46,0x5a,0x31,0x95,0x33,0x35,0xa5,0x79,0x41,0x1b,0x6e,\r
+  0xa,0x22,0xf7,0xdb,0x82,0x5c,0x6c,0x59,0x6e,0xcb,0xee,0xd2,0x7b,0xce,0xf7,0xed,\r
+  0xc7,0x62,0x60,0x6c,0xfe,0xe8,0x19,0x3e,0xbe,0x73,0xde,0x73,0xbe,0xf3,0x3e,0xe7,\r
+  0x79,0xdf,0xf3,0x9e,0x95,0x99,0x2d,0x8e,0x41,0xfc,0x8f,0x90,0x8b,0x6f,0xc,0x32,\r
+  0x1a,0x2e,0xcf,0x20,0x19,0x46,0x64,0x76,0xcf,0x3c,0x6,0x3e,0x57,0xec,0xb3,0xb6,\r
+  0xd3,0x3e,0x16,0x70,0x2,0xec,0x1b,0x19,0xef,0x12,0xf8,0x4a,0xec,0x2d,0x3e,0x22,\r
+  0xf8,0xb8,0xb3,0xef,0xf4,0xe6,0xd2,0x64,0xe3,0x82,0x73,0x46,0x66,0x88,0x10,0x7b,\r
+  0xb8,0x7d,0x14,0x8,0x21,0xe0,0x13,0x7,0x61,0xa9,0x2e,0x85,0xe9,0x42,0x3e,0x26,\r
+  0x3c,0x32,0x1b,0x3e,0x31,0x9,0x64,0x54,0xf0,0x95,0xd9,0xb0,0x4c,0x5c,0xc3,0x6a,\r
+  0xee,0x44,0x7b,0xc1,0x79,0x4c,0x98,0x35,0x7,0x2a,0xbd,0x1,0x36,0xbb,0x3,0x6d,\r
+  0x77,0x5a,0xd1,0xdc,0xdc,0x88,0xca,0xea,0x26,0xf4,0x74,0x35,0x41,0xa9,0xd6,0xc3,\r
+  0x10,0x38,0x19,0xc1,0x41,0x6,0x4,0x4e,0xa,0x86,0x87,0x46,0x29,0xac,0x21,0xed,\r
+  0x72,0x8,0x12,0x1,0x87,0xcd,0x8a,0x8a,0x63,0x7b,0x70,0xf3,0xc8,0x3e,0x8c,0xb,\r
+  0x8f,0x41,0xfc,0xce,0xfd,0xf0,0x89,0x7a,0x8c,0xa6,0x48,0x51,0x42,0x7f,0x47,0xb,\r
+  0x6a,0x4e,0x65,0x43,0x1f,0x12,0xe,0x43,0x62,0x2a,0x7a,0x7a,0x80,0xf3,0x3f,0xe5,\r
+  0xe1,0x8f,0x4b,0x17,0x51,0x59,0x71,0x3,0xfd,0xfd,0xfd,0xe2,0x4c,0x40,0xa9,0x54,\r
+  0xc2,0x60,0x30,0xe0,0x89,0x84,0x45,0x48,0x4a,0x5c,0x0,0x3f,0x7f,0x3,0xe4,0x4e,\r
+  0x6,0x2e,0x44,0xa4,0xd5,0x65,0xa,0x25,0xf4,0x31,0x31,0xf0,0x98,0xe0,0xf,0x73,\r
+  0x55,0x39,0x6e,0x1e,0xde,0x8b,0x9e,0xa6,0x5a,0x71,0x74,0x10,0xd6,0x6e,0x13,0xd9,\r
+  0xde,0x81,0x5c,0x21,0x47,0xc0,0x9c,0x25,0x18,0xb0,0x2,0xe7,0xbe,0xfd,0xa,0x27,\r
+  0x72,0xb2,0x71,0xa3,0xe4,0xcf,0x61,0xce,0x19,0x6c,0x36,0x1b,0x1a,0x1a,0x1a,0x90,\r
+  0x77,0x26,0x7,0x87,0xf,0x7d,0x80,0xba,0xba,0x6,0x41,0x68,0x61,0x58,0x82,0xe2,\r
+  0xad,0xcc,0xed,0x3b,0xb8,0x4,0x32,0x39,0xbc,0xa7,0x44,0xc0,0x2b,0x38,0x14,0x9d,\r
+  0x25,0xd7,0xd1,0x59,0x7c,0x1d,0xbd,0xad,0x8d,0x8,0x78,0x72,0x21,0xed,0xbc,0xe,\r
+  0xc5,0x7b,0x32,0xa1,0xf4,0xd0,0x21,0xfc,0xe5,0x2d,0x18,0x54,0x7b,0xe2,0xfc,0xcf,\r
+  0xdf,0xe1,0xeb,0x93,0x39,0xa4,0x2,0xc9,0x70,0x1f,0xd8,0xed,0x76,0x98,0x4c,0xcd,\r
+  0xa8,0xaa,0xbc,0x89,0xf8,0xf8,0xd9,0xd0,0xe9,0x74,0x9c,0x84,0x53,0xc,0x4e,0x80,\r
+  0x69,0xc2,0x12,0x45,0x46,0x31,0xf7,0xa,0x8a,0x84,0x6e,0xa2,0x11,0xe6,0xdb,0x37,\r
+  0xd0,0x56,0x70,0x11,0x36,0x4b,0x7,0x1a,0xf2,0x4f,0x63,0xa0,0xab,0x1b,0xb1,0x9b,\r
+  0xb3,0x48,0xa1,0x40,0x14,0x16,0x5e,0xc5,0x17,0x9f,0x67,0xa3,0xb3,0xb3,0x53,0x58,\r
+  0x65,0xc,0xb8,0x7b,0xf7,0x2e,0x39,0x96,0x23,0x3a,0x7a,0x6,0x94,0xa4,0xa2,0x4c,\r
+  0x64,0xc0,0x43,0xc0,0xda,0x72,0x39,0x91,0xe0,0x26,0x20,0x20,0x21,0x19,0x71,0xdb,\r
+  0xf6,0x91,0x22,0x61,0xa8,0x3e,0x73,0x2,0x5d,0x55,0x15,0x88,0xde,0xb4,0x15,0xda,\r
+  0xc0,0x29,0xe8,0x1f,0x70,0x90,0xec,0xc7,0xd1,0xda,0xda,0x2a,0xce,0x1e,0x1b,0x98,\r
+  0x12,0x5,0x57,0x2e,0x50,0x28,0x2a,0xb9,0x73,0xe7,0xc9,0x18,0xca,0x30,0x17,0xb0,\r
+  0x41,0xc7,0x40,0x3f,0xe5,0x85,0xc0,0x52,0x26,0x57,0xc0,0xd1,0x2b,0x7c,0xd0,0xdb,\r
+  0x3b,0x0,0xb5,0x46,0xcd,0xdb,0xee,0x82,0x9d,0x94,0xb2,0xb2,0x5b,0xb0,0x3b,0x1c,\r
+  0x52,0xc,0x24,0x2,0x8c,0x90,0x18,0x16,0xb4,0xfc,0xfe,0x3,0x8a,0xf6,0x65,0xc2,\r
+  0x5c,0x5d,0x81,0xb0,0x95,0x6b,0xe0,0x1d,0x12,0x81,0xf2,0x8f,0x77,0x53,0x52,0xd6,\r
+  0xc0,0x47,0xaf,0x41,0x7a,0xfa,0x6a,0x4,0x6,0x6,0x8a,0xb3,0xc7,0xe,0xb6,0xb1,\r
+  0xa6,0xc6,0x6a,0x4a,0xd0,0x1,0xc1,0x21,0x41,0x20,0x20,0x3a,0x77,0xd0,0x40,0xe3,\r
+  0x8f,0xb9,0x28,0xda,0xb3,0x15,0x96,0xda,0x4a,0x18,0x97,0xac,0x40,0xd4,0xfa,0xed,\r
+  0x98,0x99,0xf9,0x3e,0xb4,0x86,0x49,0xb8,0x75,0x74,0x37,0xac,0x1d,0x26,0x44,0x45,\r
+  0xcd,0xc0,0xda,0x75,0xaf,0x61,0xfa,0xf4,0x38,0x68,0x34,0x1a,0x29,0x9e,0x63,0x81,\r
+  0xa5,0xab,0x3,0x83,0xa4,0x80,0x4c,0xdc,0xee,0x90,0x2,0x64,0x34,0xfd,0x7a,0xe,\r
+  0x45,0x7b,0xb7,0xa2,0xaf,0xad,0x5,0x86,0xa7,0x16,0x22,0x66,0xe3,0xe,0x28,0x3c,\r
+  0x75,0xd0,0xf8,0x5,0x21,0x2e,0x73,0x1f,0xe4,0x9e,0x1e,0xa8,0xc9,0xfd,0x4,0x72,\r
+  0x7b,0x2f,0x65,0xf4,0xa3,0xd8,0xbe,0xf3,0x7d,0xac,0x5b,0xbf,0x11,0xe1,0x11,0xd1,\r
+  0x50,0x28,0xa8,0x68,0x8d,0x1,0x72,0xf9,0xf0,0xa8,0xbb,0x10,0xb0,0xa1,0xeb,0x76,\r
+  0x31,0x1d,0xb9,0x36,0xe8,0x83,0x23,0x11,0xbd,0xf6,0x4d,0x78,0xfa,0x4f,0x42,0x6d,\r
+  0xbd,0x9,0x65,0xe5,0x15,0x80,0xda,0x17,0x91,0xaf,0x6c,0x83,0x4c,0xa5,0x81,0xe9,\r
+  0x97,0xb3,0xfc,0x1b,0x95,0x52,0x86,0xf9,0x4f,0x3f,0x43,0x6a,0x6c,0x26,0x55,0xa6,\r
+  0x71,0xdb,0xbf,0x41,0xef,0x33,0x91,0x6a,0x89,0x52,0xec,0xb9,0x10,0x90,0x2b,0x54,\r
+  0x98,0xbc,0x64,0x15,0x65,0xff,0x6e,0xcc,0xda,0x75,0x4,0xfa,0xf0,0x87,0x61,0xe9,\r
+  0xee,0xc3,0xa1,0x83,0xbb,0x70,0xe0,0xc3,0x5d,0xb8,0x52,0x50,0x4,0xa5,0x77,0x0,\r
+  0x82,0x57,0xbe,0xa,0xd5,0xb8,0x87,0xf8,0xf1,0x64,0x38,0x9d,0xfb,0x25,0x2,0x2,\r
+  0xc,0xd8,0x90,0xf1,0x3a,0x22,0x22,0xa3,0xb8,0x6d,0x34,0xb0,0x70,0x45,0x45,0x46,\r
+  0xf0,0x2a,0x29,0xd4,0x7f,0x91,0x0,0x6f,0x52,0x1c,0x75,0xc6,0x70,0x4,0x3f,0xbf,\r
+  0x1,0x5e,0xa1,0x71,0xb8,0xd3,0xd6,0x8e,0x4f,0x8f,0x1d,0x44,0x79,0x59,0x29,0x1a,\r
+  0x1b,0xea,0x70,0xe4,0x50,0x16,0x7e,0xbb,0x70,0x19,0x76,0xb9,0x1a,0x7e,0x8f,0x27,\r
+  0x43,0xe9,0x35,0x9e,0x7d,0x85,0x93,0x27,0x4f,0x20,0x37,0x37,0x7,0xbe,0x3e,0xbe,\r
+  0x48,0x5b,0xb1,0x1a,0xbe,0xbe,0xbe,0xdc,0x7e,0x2f,0x58,0x9e,0xc4,0xc5,0xc5,0x63,\r
+  0x5a,0xcc,0x34,0xb1,0x24,0xb,0x39,0x20,0x14,0x22,0x6a,0x3b,0xd3,0xc8,0x64,0x6a,\r
+  0xc0,0xb5,0x6b,0x97,0x90,0x97,0x77,0xa,0x57,0x2e,0x5f,0xe4,0xe7,0x97,0xa1,0xaf,\r
+  0xaf,0x17,0xb7,0xa9,0xde,0x2b,0x95,0x72,0x38,0xec,0xfd,0x68,0xa7,0x3c,0x69,0x6b,\r
+  0x33,0x21,0x3f,0xff,0x7b,0x22,0x58,0x8b,0xa9,0x53,0x8c,0x94,0x94,0x33,0xe9,0xfb,\r
+  0x26,0xd4,0xd6,0x54,0x4b,0xe7,0xdc,0x9,0xad,0xd6,0xb,0x2f,0xae,0xce,0x40,0x68,\r
+  0x48,0x8,0x3f,0x81,0xce,0xbc,0x1d,0xfa,0x41,0x42,0xff,0xdb,0x3b,0xfe,0xc2,0x47,\r
+  0x87,0xf7,0xa3,0xb8,0xe8,0x2a,0xac,0x56,0x2b,0x1c,0xec,0xbc,0xde,0x3,0x26,0xa3,\r
+  0x4a,0xa5,0x12,0x7b,0x94,0xd5,0x16,0xb,0x7f,0x87,0x86,0x85,0x23,0xeb,0xbd,0x3,\r
+  0x74,0x29,0x95,0x22,0xeb,0xdd,0xb7,0xa5,0x12,0xcd,0x76,0xae,0xd3,0x79,0x23,0x35,\r
+  0x35,0xd,0xcb,0x96,0xbf,0xc0,0x93,0x90,0xaa,0xbe,0x4,0xa1,0xc9,0x28,0xd0,0x53,\r
+  0x4d,0x97,0x50,0x79,0x59,0x21,0xed,0xb6,0x6f,0x44,0xe7,0xc,0xec,0xd2,0x61,0x4e,\r
+  0x9d,0x8f,0x13,0x4d,0x8d,0x8d,0x28,0x2d,0x29,0x44,0xd0,0xd4,0x58,0xee,0xd0,0x89,\r
+  0xd0,0xb0,0x8,0xac,0x59,0xbb,0x5,0xcf,0x2d,0x5d,0xc9,0xab,0xad,0xab,0x73,0x6,\r
+  0xa1,0x4b,0x72,0xd8,0x49,0xb2,0x9a,0xfa,0x16,0x98,0xcd,0x66,0x6e,0x72,0x17,0x3,\r
+  0x74,0x3d,0x56,0x55,0x96,0x41,0xef,0xa5,0xa2,0x50,0xc4,0x52,0xcd,0x8f,0xc6,0xb2,\r
+  0xb4,0x97,0xb0,0x71,0xd3,0x1b,0x98,0x3b,0x27,0x1,0x6a,0x35,0x65,0xbe,0x53,0x77,\r
+  0x17,0x48,0xbf,0x7,0xac,0xb4,0xc0,0xf1,0xcf,0xb2,0x71,0xee,0x6c,0xae,0x38,0xe4,\r
+  0x1e,0x98,0xd4,0x89,0x49,0x8b,0x91,0x91,0xb1,0x85,0xca,0x75,0xf,0x57,0x50,0xad,\r
+  0xf6,0x80,0x52,0x45,0x19,0x4f,0x9b,0x63,0xe3,0x23,0xf8,0x1f,0x3a,0x86,0xac,0x34,\r
+  0xda,0x6d,0x7d,0x62,0xc7,0x7d,0xf0,0xfb,0x43,0xc,0x9b,0xa7,0xa7,0x16,0x5a,0xba,\r
+  0x76,0x55,0xe4,0x9c,0xc5,0x56,0xc6,0xa4,0x1f,0xc1,0x39,0x83,0x44,0x40,0x26,0x53,\r
+  0xc0,0x43,0xeb,0x27,0xf6,0xdc,0x7,0x4b,0x2e,0xbd,0x5e,0xcf,0xdb,0x4c,0x52,0x5e,\r
+  0x9e,0xd9,0x1f,0xdb,0x39,0xb7,0x8e,0xc,0x89,0x0,0x63,0x1b,0x19,0x39,0x95,0xd8,\r
+  0x7b,0x8a,0x16,0xf7,0xa0,0x56,0x6b,0x28,0xee,0xb1,0x42,0x67,0xb4,0xed,0x8e,0x0,\r
+  0x29,0x9,0x19,0x8c,0xc6,0x10,0x18,0x83,0x42,0x84,0x8e,0x9b,0xf0,0xf3,0xf3,0xa7,\r
+  0x3b,0x21,0x4e,0x88,0xb7,0x68,0x1b,0xb,0x24,0x5,0x98,0x6c,0x6,0x2a,0xa9,0xf3,\r
+  0xe6,0xcd,0xa7,0xdd,0xb8,0x77,0xdf,0x33,0xf9,0x17,0x24,0xa5,0x52,0x15,0xf4,0x72,\r
+  0x6b,0xf7,0xc,0x2e,0x39,0x20,0xe3,0x55,0x6e,0x51,0xf2,0x52,0x22,0xb1,0x70,0x58,\r
+  0xb1,0xb9,0x1f,0x18,0xd9,0x94,0x94,0x67,0xb1,0x28,0x71,0x9e,0x68,0x71,0xf,0x12,\r
+  0x1,0x6,0x56,0x8f,0x58,0x2e,0xac,0x4a,0x5f,0x43,0x44,0x52,0xf8,0xf,0xc8,0xfb,\r
+  0x81,0x39,0x5f,0x9c,0x92,0x8a,0xd4,0xb4,0x74,0x9a,0x4b,0xbb,0x27,0xb8,0x29,0x80,\r
+  0x4b,0x29,0x16,0xc1,0x62,0x48,0x7f,0xe8,0xb6,0x74,0xe1,0xea,0xb5,0x12,0x7c,0x73,\r
+  0xea,0x28,0xea,0xeb,0xeb,0x87,0x55,0x46,0x76,0xf7,0x87,0x50,0x4d,0x4f,0x4a,0x5e,\r
+  0x8e,0x84,0x84,0xb9,0xd0,0x69,0x29,0x71,0x59,0xb6,0xbb,0xe9,0x9c,0xe1,0x1f,0x4,\r
+  0x24,0x90,0x95,0x11,0xb1,0xd1,0x65,0xd4,0x6c,0x6a,0x41,0x53,0x43,0x5,0xba,0xbb,\r
+  0xbb,0xc8,0x99,0xe,0x81,0xc6,0xe9,0x30,0x4e,0x1c,0xcf,0xc3,0xe6,0x3c,0x6e,0xff,\r
+  0x15,0xa3,0x12,0x10,0x6e,0x33,0xb6,0xb2,0x38,0x4c,0x2f,0xee,0x4c,0x68,0x72,0x76,\r
+  0xf,0xea,0x9c,0x61,0x58,0xe,0xb8,0x42,0xd8,0x9d,0xf3,0xcd,0x1b,0x82,0x33,0xb1,\r
+  0x29,0xf5,0x1f,0x8,0xc0,0xdf,0x81,0xe6,0x97,0xc8,0x26,0x97,0x96,0xa9,0x0,0x0,\r
+  0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/tool-op.png\r
   0x0,0x0,0x17,0xf4,\r
   0x89,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/tool-op.png\r
   0x0,0x0,0x17,0xf4,\r
   0x89,\r
@@ -74823,6 +75140,12 @@ static const unsigned char qt_resource_name[] = {
   0x5,0x1c,0xe9,0x27,\r
   0x0,0x74,\r
   0x0,0x6f,0x0,0x6f,0x0,0x6c,0x0,0x2d,0x0,0x63,0x0,0x70,0x0,0x75,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
   0x5,0x1c,0xe9,0x27,\r
   0x0,0x74,\r
   0x0,0x6f,0x0,0x6f,0x0,0x6c,0x0,0x2d,0x0,0x63,0x0,0x70,0x0,0x75,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
+    // debug-breakpoints.png\r
+  0x0,0x15,\r
+  0x5,0xdd,0xf,0x27,\r
+  0x0,0x64,\r
+  0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73,\r
+  0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
     // screenshot.png\r
   0x0,0xe,\r
   0xa,0x70,0xc2,0x7,\r
     // screenshot.png\r
   0x0,0xe,\r
   0xa,0x70,0xc2,0x7,\r
@@ -74978,11 +75301,23 @@ static const unsigned char qt_resource_name[] = {
   0x4,0x94,0x86,0xc7,\r
   0x0,0x77,\r
   0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
   0x4,0x94,0x86,0xc7,\r
   0x0,0x77,\r
   0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
+    // debug-disableallbreakpoints.png\r
+  0x0,0x1f,\r
+  0xd,0xee,0x7d,0xc7,\r
+  0x0,0x64,\r
+  0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x62,\r
+  0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
     // upper-left.png\r
   0x0,0xe,\r
   0x5,0xf,0xe8,0x7,\r
   0x0,0x75,\r
   0x0,0x70,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x2d,0x0,0x6c,0x0,0x65,0x0,0x66,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
     // upper-left.png\r
   0x0,0xe,\r
   0x5,0xf,0xe8,0x7,\r
   0x0,0x75,\r
   0x0,0x70,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x2d,0x0,0x6c,0x0,0x65,0x0,0x66,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
+    // debug-deleteallbreakpoints.png\r
+  0x0,0x1e,\r
+  0x9,0xc6,0xc5,0xc7,\r
+  0x0,0x64,\r
+  0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x62,0x0,0x72,\r
+  0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,\r
     // tool-op.png\r
   0x0,0xb,\r
   0x4,0x95,0x9c,0xa7,\r
     // tool-op.png\r
   0x0,0xb,\r
   0x4,0x95,0x9c,0xa7,\r
@@ -75007,19 +75342,19 @@ static const unsigned char qt_resource_struct[] = {
   0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,\r
 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\r
   // :/res\r
   0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,\r
 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\r
   // :/res\r
-  0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x2,\r
+  0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x2,\r
 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\r
   // :/res/power-on-red.png\r
 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\r
   // :/res/power-on-red.png\r
-  0x0,0x0,0x4,0x54,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0x9c,0x96,\r
+  0x0,0x0,0x4,0x84,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xa2,0xb2,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/upper-right.png\r
   0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x46,0x8b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3,\r
   // :/res/vj_title_small.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/upper-right.png\r
   0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x46,0x8b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3,\r
   // :/res/vj_title_small.png\r
-  0x0,0x0,0x5,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x8b,0xde,\r
+  0x0,0x0,0x5,0xc2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x91,0xfa,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa5,\r
   // :/res/debug-memory.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa5,\r
   // :/res/debug-memory.png\r
-  0x0,0x0,0x2,0xc2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x6f,0x9e,\r
+  0x0,0x0,0x2,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x75,0xba,\r
 0x0,0x0,0x1,0x65,0x8e,0x90,0xe0,0x82,\r
   // :/res/test-pattern.jpg\r
   0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0xe4,0x84,\r
 0x0,0x0,0x1,0x65,0x8e,0x90,0xe0,0x82,\r
   // :/res/test-pattern.jpg\r
   0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0xe4,0x84,\r
@@ -75028,118 +75363,127 @@ static const unsigned char qt_resource_struct[] = {
   0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9b,\r
   // :/res/help.html\r
   0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9b,\r
   // :/res/help.html\r
-  0x0,0x0,0x6,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xb5,0x97,\r
+  0x0,0x0,0x7,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xc8,0xc8,\r
 0x0,0x0,0x1,0x66,0x31,0x6,0xe3,0x3b,\r
   // :/res/test-pattern-pal.jpg\r
 0x0,0x0,0x1,0x66,0x31,0x6,0xe3,0x3b,\r
   // :/res/test-pattern-pal.jpg\r
-  0x0,0x0,0x4,0x96,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xc5,0x91,\r
+  0x0,0x0,0x4,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xcb,0xad,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa1,\r
   // :/res/tool-risc-dis.png\r
   0x0,0x0,0x1,0xb8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x86,0xbf,\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0xc7,0x8e,\r
   // :/res/fullscreen.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa1,\r
   // :/res/tool-risc-dis.png\r
   0x0,0x0,0x1,0xb8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x86,0xbf,\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0xc7,0x8e,\r
   // :/res/fullscreen.png\r
-  0x0,0x0,0x3,0xbe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x9f,0x26,\r
+  0x0,0x0,0x3,0xee,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xa5,0x42,\r
 0x0,0x0,0x1,0x65,0x70,0x5,0x8a,0x8c,\r
   // :/res/zoom200.png\r
 0x0,0x0,0x1,0x65,0x70,0x5,0x8a,0x8c,\r
   // :/res/zoom200.png\r
-  0x0,0x0,0x3,0xa2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x72,0xd,\r
+  0x0,0x0,0x3,0xd2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x78,0x29,\r
 0x0,0x0,0x1,0x65,0x6e,0x11,0x2,0x62,\r
   // :/res/wrench.png\r
 0x0,0x0,0x1,0x65,0x6e,0x11,0x2,0x62,\r
   // :/res/wrench.png\r
-  0x0,0x0,0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x92,0xa8,\r
+  0x0,0x0,0x6,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x98,0xc4,\r
 0x0,0x0,0x1,0x65,0x6e,0x8d,0x95,0xe8,\r
   // :/res/tool-op.png\r
 0x0,0x0,0x1,0x65,0x6e,0x8d,0x95,0xe8,\r
   // :/res/tool-op.png\r
-  0x0,0x0,0x6,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x9d,0x9f,\r
+  0x0,0x0,0x6,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xb0,0xd0,\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0x83,0x71,\r
   // :/res/blur-on.png\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0x83,0x71,\r
   // :/res/blur-on.png\r
-  0x0,0x0,0x4,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xab,0x7b,\r
+  0x0,0x0,0x4,0xaa,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xb1,0x97,\r
 0x0,0x0,0x1,0x65,0x6f,0xcd,0x68,0xeb,\r
   // :/res/tool-68k-dis.png\r
   0x0,0x0,0x1,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x64,0x74,\r
 0x0,0x0,0x1,0x65,0x70,0x59,0x79,0xa6,\r
   // :/res/upper-left.png\r
 0x0,0x0,0x1,0x65,0x6f,0xcd,0x68,0xeb,\r
   // :/res/tool-68k-dis.png\r
   0x0,0x0,0x1,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x64,0x74,\r
 0x0,0x0,0x1,0x65,0x70,0x59,0x79,0xa6,\r
   // :/res/upper-left.png\r
-  0x0,0x0,0x6,0x20,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x9b,0xaa,\r
+  0x0,0x0,0x6,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa7,0xec,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2,\r
   // :/res/tool-cpu.png\r
   0x0,0x0,0x2,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xb0,0xc2,\r
 0x0,0x0,0x1,0x65,0x70,0x59,0xd6,0x94,\r
   // :/res/zoom100.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2,\r
   // :/res/tool-cpu.png\r
   0x0,0x0,0x2,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xb0,0xc2,\r
 0x0,0x0,0x1,0x65,0x70,0x59,0xd6,0x94,\r
   // :/res/zoom100.png\r
-  0x0,0x0,0x3,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0xfa,0x4e,\r
+  0x0,0x0,0x3,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x0,0x6a,\r
 0x0,0x0,0x1,0x65,0x6e,0x10,0xa4,0xe6,\r
   // :/res/frame-advance.png\r
   0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x3e,0x4f,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d,\r
 0x0,0x0,0x1,0x65,0x6e,0x10,0xa4,0xe6,\r
   // :/res/frame-advance.png\r
   0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x3e,0x4f,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d,\r
+  // :/res/debug-breakpoints.png\r
+  0x0,0x0,0x2,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xca,0x1c,\r
+0x0,0x0,0x1,0x66,0x6a,0xa5,0x70,0xc0,\r
   // :/res/debug-stepinto.png\r
   0x0,0x0,0x0,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x13,0xbb,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/power-on-green.png\r
   // :/res/debug-stepinto.png\r
   0x0,0x0,0x0,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x13,0xbb,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/power-on-green.png\r
-  0x0,0x0,0x5,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x6f,0x8e,\r
+  0x0,0x0,0x5,0x70,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x75,0xaa,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/pal.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/pal.png\r
-  0x0,0x0,0x3,0x8e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x40,0x3,\r
+  0x0,0x0,0x3,0xbe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x46,0x1f,\r
 0x0,0x0,0x1,0x65,0x70,0x1b,0x2f,0x31,\r
   // :/res/unknown-file.png\r
 0x0,0x0,0x1,0x65,0x70,0x1b,0x2f,0x31,\r
   // :/res/unknown-file.png\r
-  0x0,0x0,0x5,0xbc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0xc1,0xdd,\r
+  0x0,0x0,0x5,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0xc7,0xf9,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2,\r
   // :/res/zoom300.png\r
   0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xf,0xa7,\r
 0x0,0x0,0x1,0x65,0x6e,0x11,0x9f,0xb,\r
   // :/res/software.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2,\r
   // :/res/zoom300.png\r
   0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xf,0xa7,\r
 0x0,0x0,0x1,0x65,0x6e,0x11,0x9f,0xb,\r
   // :/res/software.png\r
-  0x0,0x0,0x4,0xc4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x23,0xa,\r
+  0x0,0x0,0x4,0xf4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x29,0x26,\r
 0x0,0x0,0x1,0x65,0x6f,0xba,0x25,0x7b,\r
   // :/res/generic.png\r
 0x0,0x0,0x1,0x65,0x6f,0xba,0x25,0x7b,\r
   // :/res/generic.png\r
-  0x0,0x0,0x2,0xa6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x69,0xa1,\r
+  0x0,0x0,0x2,0xd6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x6f,0xbd,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/pause-off.png\r
   0x0,0x0,0x1,0xfe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xab,0x7b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f,\r
   // :/res/blur-off.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/pause-off.png\r
   0x0,0x0,0x1,0xfe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xab,0x7b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f,\r
   // :/res/blur-off.png\r
-  0x0,0x0,0x3,0x70,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x2d,0x3d,\r
+  0x0,0x0,0x3,0xa0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x33,0x59,\r
 0x0,0x0,0x1,0x65,0x6f,0xcc,0x2d,0x33,\r
   // :/res/label-blank.png\r
 0x0,0x0,0x1,0x65,0x6f,0xcc,0x2d,0x33,\r
   // :/res/label-blank.png\r
-  0x0,0x0,0x5,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x2a,0xc,\r
+  0x0,0x0,0x6,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x30,0x28,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e,\r
   // :/res/cart-blank.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e,\r
   // :/res/cart-blank.png\r
-  0x0,0x0,0x4,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xfa,0xc,\r
+  0x0,0x0,0x4,0x62,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xc,0x0,0x28,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/ELF-file.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/ELF-file.png\r
-  0x0,0x0,0x2,0xe8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x75,0x87,\r
+  0x0,0x0,0x3,0x18,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x7b,0xa3,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d,\r
+  // :/res/debug-deleteallbreakpoints.png\r
+  0x0,0x0,0x6,0xb6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa9,0xe1,\r
+0x0,0x0,0x1,0x66,0x6c,0x28,0x7,0x5,\r
   // :/res/debug-watch.png\r
   0x0,0x0,0x0,0xac,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xb8,0xe,\r
 0x0,0x0,0x1,0x65,0x70,0x2b,0x45,0x73,\r
   // :/res/debug-local.png\r
   // :/res/debug-watch.png\r
   0x0,0x0,0x0,0xac,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xb8,0xe,\r
 0x0,0x0,0x1,0x65,0x70,0x2b,0x45,0x73,\r
   // :/res/debug-local.png\r
-  0x0,0x0,0x3,0x22,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x1f,0x8f,\r
+  0x0,0x0,0x3,0x52,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x25,0xab,\r
 0x0,0x0,0x1,0x65,0x78,0x43,0x3b,0x64,\r
   // :/res/screenshot.png\r
 0x0,0x0,0x1,0x65,0x78,0x43,0x3b,0x64,\r
   // :/res/screenshot.png\r
-  0x0,0x0,0x2,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xca,0x1c,\r
+  0x0,0x0,0x2,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xd0,0x38,\r
 0x0,0x0,0x1,0x65,0xe2,0x30,0xaa,0x81,\r
   // :/res/vj-icon.png\r
   0x0,0x0,0x1,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x48,0x9b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3,\r
   // :/res/power-off.png\r
 0x0,0x0,0x1,0x65,0xe2,0x30,0xaa,0x81,\r
   // :/res/vj-icon.png\r
   0x0,0x0,0x1,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x48,0x9b,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3,\r
   // :/res/power-off.png\r
-  0x0,0x0,0x4,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x29,0x32,\r
+  0x0,0x0,0x5,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x2f,0x4e,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f,\r
   // :/res/tool-stack.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f,\r
   // :/res/tool-stack.png\r
-  0x0,0x0,0x2,0x84,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x59,0xdb,\r
+  0x0,0x0,0x2,0xb4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x5f,0xf7,\r
 0x0,0x0,0x1,0x65,0x79,0x79,0x1d,0xe5,\r
   // :/res/ntsc.png\r
 0x0,0x0,0x1,0x65,0x79,0x79,0x1d,0xe5,\r
   // :/res/ntsc.png\r
-  0x0,0x0,0x4,0x1c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xc7,0xbd,\r
+  0x0,0x0,0x4,0x4c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xcd,0xd9,\r
 0x0,0x0,0x1,0x65,0x70,0x17,0x5e,0xb2,\r
   // :/res/status.png\r
 0x0,0x0,0x1,0x65,0x70,0x17,0x5e,0xb2,\r
   // :/res/status.png\r
-  0x0,0x0,0x5,0x26,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x54,0x6c,\r
+  0x0,0x0,0x5,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x5a,0x88,\r
 0x0,0x0,0x1,0x65,0x70,0x52,0xab,0x5c,\r
   // :/res/compact-disc.png\r
 0x0,0x0,0x1,0x65,0x70,0x52,0xab,0x5c,\r
   // :/res/compact-disc.png\r
-  0x0,0x0,0x2,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xe5,0x6b,\r
+  0x0,0x0,0x2,0x8e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xeb,0x87,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/insert.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/insert.png\r
-  0x0,0x0,0x3,0xe0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xc8,0xc4,\r
+  0x0,0x0,0x4,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xce,0xe0,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e,\r
   // :/res/tool-memory.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e,\r
   // :/res/tool-memory.png\r
-  0x0,0x0,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x38,0x4e,\r
+  0x0,0x0,0x5,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x3e,0x6a,\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0x34,0xc0,\r
   // :/res/debug-restart.png\r
 0x0,0x0,0x1,0x65,0x70,0x5a,0x34,0xc0,\r
   // :/res/debug-restart.png\r
-  0x0,0x0,0x5,0x6a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x7e,0xb4,\r
+  0x0,0x0,0x5,0x9a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x84,0xd0,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
+  // :/res/debug-disableallbreakpoints.png\r
+  0x0,0x0,0x6,0x50,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa1,0xc6,\r
+0x0,0x0,0x1,0x66,0x6c,0x39,0x5a,0xf0,\r
   // :/res/controller.png\r
   // :/res/controller.png\r
-  0x0,0x0,0x3,0xfa,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xd3,0x89,\r
+  0x0,0x0,0x4,0x2a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xd9,0xa5,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/homebrew-file.png\r
   0x0,0x0,0x0,0xd0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xbd,0x29,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c,\r
   // :/res/homebrew-file.png\r
   0x0,0x0,0x0,0xd0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xbd,0x29,\r
@@ -75151,13 +75495,13 @@ static const unsigned char qt_resource_struct[] = {
   0x0,0x0,0x1,0x7c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x60,0xf0,\r
 0x0,0x0,0x1,0x65,0x70,0x1e,0xc4,0xa5,\r
   // :/res/debug-stepover.png\r
   0x0,0x0,0x1,0x7c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x60,0xf0,\r
 0x0,0x0,0x1,0x65,0x70,0x1e,0xc4,0xa5,\r
   // :/res/debug-stepover.png\r
-  0x0,0x0,0x3,0x46,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x25,0x37,\r
+  0x0,0x0,0x3,0x76,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x2b,0x53,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/skunkboard-file.png\r
   0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x1a,0x27,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/debug-callstack.png\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/skunkboard-file.png\r
   0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x1a,0x27,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/debug-callstack.png\r
-  0x0,0x0,0x6,0x76,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x2f,0x54,\r
+  0x0,0x0,0x7,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x42,0x85,\r
 0x0,0x0,0x1,0x65,0x8e,0x7f,0x88,0xdf,\r
 \r
 };\r
 0x0,0x0,0x1,0x65,0x8e,0x7f,0x88,0xdf,\r
 \r
 };\r
index 24f7707..7a8c8ca 100644 (file)
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\src\crc32.cpp" />\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\src\crc32.cpp" />\r
-    <ClCompile Include="..\src\debugger\brkWin.cpp" />\r
+    <ClCompile Include="..\src\debugger\BreakpointsWin.cpp" />\r
     <ClCompile Include="..\src\debugger\callstackbrowser.cpp" />\r
     <ClCompile Include="..\src\debugger\exceptionvectortablebrowser.cpp" />\r
     <ClCompile Include="..\src\debugger\FilesrcListWin.cpp" />\r
     <ClCompile Include="..\src\debugger\localbrowser.cpp" />\r
     <ClCompile Include="..\src\debugger\callstackbrowser.cpp" />\r
     <ClCompile Include="..\src\debugger\exceptionvectortablebrowser.cpp" />\r
     <ClCompile Include="..\src\debugger\FilesrcListWin.cpp" />\r
     <ClCompile Include="..\src\debugger\localbrowser.cpp" />\r
+    <ClCompile Include="..\src\debugger\NewFnctBreakpointWin.cpp" />\r
     <ClCompile Include="..\src\debugger\VideoWin.cpp" />\r
     <ClCompile Include="..\src\file.cpp" />\r
     <ClCompile Include="..\src\gui\keybindingstab.cpp" />\r
     <ClCompile Include="..\src\debugger\VideoWin.cpp" />\r
     <ClCompile Include="..\src\file.cpp" />\r
     <ClCompile Include="..\src\gui\keybindingstab.cpp" />\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Debug\moc_brkWin.cpp">\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_BreakpointsWin.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_NewFnctBreakpointWin.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_opbrowser.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_opbrowser.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Release\moc_brkWin.cpp">\r
+    <ClCompile Include="GeneratedFiles\Release\moc_BreakpointsWin.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Release\moc_debuggertab.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Release\moc_debuggertab.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_DSPDasmWin.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     <ClCompile Include="GeneratedFiles\Release\moc_DSPDasmWin.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_NewFnctBreakpointWin.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_opbrowser.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     <ClCompile Include="GeneratedFiles\Release\moc_opbrowser.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <CustomBuild Include="..\src\debugger\brkWin.h">\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing brkWin.h...</Message>\r
+    <CustomBuild Include="..\src\debugger\BreakpointsWin.h">\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-IC:\SDK\SDL-1.2.15\include" "-IC:\SDK\mesa-11.2.0-rc4\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-IC:\SDK\SDL-1.2.15\include" "-IC:\SDK\mesa-11.2.0-rc4\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing brkWin.h...</Message>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE  "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.8\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-IC:\SDK\OpenGL\include"</Command>\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing brkWin.h...</Message>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.8\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-IC:\SDK\OpenGL\include"</Command>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing brkWin.h...</Message>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE  "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
-      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
-      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
-      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
-      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\exceptionvectortablebrowser.h">\r
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing exceptionvectortablebrowser.h...</Message>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\exceptionvectortablebrowser.h">\r
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing exceptionvectortablebrowser.h...</Message>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
     </CustomBuild>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
     </CustomBuild>\r
+    <CustomBuild Include="..\src\debugger\NewFnctBreakpointWin.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-IC:\SDK\SDL-1.2.15\include" "-IC:\SDK\mesa-11.2.0-rc4\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.8\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-IC:\SDK\OpenGL\include"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
+    </CustomBuild>\r
     <ClInclude Include="..\src\file.h" />\r
     <CustomBuild Include="..\src\gui\keybindingstab.h">\r
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing keybindingstab.h...</Message>\r
     <ClInclude Include="..\src\file.h" />\r
     <CustomBuild Include="..\src\gui\keybindingstab.h">\r
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing keybindingstab.h...</Message>\r
     </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
     </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <None Include="..\docs\vj_ReleaseNotes.txt">\r
+    <None Include="..\docs\vj_HistoryNotes.txt">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
       <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>\r
     </None>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
       <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>\r
     </None>\r
     </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
     </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
+    <Image Include="..\res\debug-breakpoints.png">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
+    </Image>\r
     <Image Include="..\res\debug-callstack.png" />\r
     <Image Include="..\res\debug-callstack.png" />\r
+    <Image Include="..\res\debug-deleteallbreakpoints.png">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
+    </Image>\r
+    <Image Include="..\res\debug-disableallbreakpoints.png">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
+    </Image>\r
     <Image Include="..\res\debug-memory.png">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
     </Image>\r
     <Image Include="..\res\debug-memory.png">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
     </Image>\r
index 909a45c..0fea985 100644 (file)
     <ClCompile Include="..\src\debugger\DBGManager.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\debugger\DBGManager.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="..\src\debugger\brkWin.cpp">\r
-      <Filter>Source Files\debugger</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="..\src\debugger\exceptionvectortablebrowser.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\debugger\exceptionvectortablebrowser.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_configdialog.cpp">\r
       <Filter>Generated Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_configdialog.cpp">\r
       <Filter>Generated Files</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Debug\moc_brkWin.cpp">\r
-      <Filter>Generated Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Release\moc_brkWin.cpp">\r
-      <Filter>Generated Files</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_alpinetab.cpp">\r
       <Filter>Generated Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_alpinetab.cpp">\r
       <Filter>Generated Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\debugger\FilesrcListWin.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\debugger\FilesrcListWin.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\debugger\BreakpointsWin.cpp">\r
+      <Filter>Source Files\debugger</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_BreakpointsWin.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_BreakpointsWin.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_NewFnctBreakpointWin.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_NewFnctBreakpointWin.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\debugger\NewFnctBreakpointWin.cpp">\r
+      <Filter>Source Files\debugger</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\src\debugger\DWARFManager.h">\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\src\debugger\DWARFManager.h">\r
     <None Include="..\docs\INSTALL">\r
       <Filter>Docs</Filter>\r
     </None>\r
     <None Include="..\docs\INSTALL">\r
       <Filter>Docs</Filter>\r
     </None>\r
-    <None Include="..\docs\vj_ReleaseNotes.txt">\r
-      <Filter>Docs</Filter>\r
-    </None>\r
     <None Include="..\docs\LICENSE">\r
       <Filter>Docs</Filter>\r
     </None>\r
     <None Include="..\docs\LICENSE">\r
       <Filter>Docs</Filter>\r
     </None>\r
     <None Include="..\res\debug-local.png">\r
       <Filter>Resource Files</Filter>\r
     </None>\r
     <None Include="..\res\debug-local.png">\r
       <Filter>Resource Files</Filter>\r
     </None>\r
+    <None Include="..\docs\vj_HistoryNotes.txt">\r
+      <Filter>Docs</Filter>\r
+    </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <CustomBuild Include="..\src\debugger\VideoWin.h">\r
   </ItemGroup>\r
   <ItemGroup>\r
     <CustomBuild Include="..\src\debugger\VideoWin.h">\r
     <CustomBuild Include="..\src\debugger\memory1browser.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\memory1browser.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
-    <CustomBuild Include="..\src\debugger\brkWin.h">\r
-      <Filter>Header Files\debugger</Filter>\r
-    </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\exceptionvectortablebrowser.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\exceptionvectortablebrowser.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\FilesrcListWin.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
     <CustomBuild Include="..\src\debugger\FilesrcListWin.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
+    <CustomBuild Include="..\src\debugger\BreakpointsWin.h">\r
+      <Filter>Header Files\debugger</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="..\src\debugger\NewFnctBreakpointWin.h">\r
+      <Filter>Header Files\debugger</Filter>\r
+    </CustomBuild>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\res\vj.rc">\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\res\vj.rc">\r
     <Image Include="..\res\screenshot.png">\r
       <Filter>Resource Files</Filter>\r
     </Image>\r
     <Image Include="..\res\screenshot.png">\r
       <Filter>Resource Files</Filter>\r
     </Image>\r
+    <Image Include="..\res\debug-breakpoints.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\res\debug-deleteallbreakpoints.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\res\debug-disableallbreakpoints.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
   </ItemGroup>\r
 </Project>
\ No newline at end of file
similarity index 94%
rename from docs/vj_ReleaseNotes.txt
rename to docs/vj_HistoryNotes.txt
index ccb55e6..af829eb 100644 (file)
-Release 4 (TBD)\r
----------------\r
-Git commit: TBD\r
--\r
-0) The zoom value setting has been fixed in the registry\r
-1) Debugger mode now shares the same alpine rom path setting\r
-2) Local variables window displays register name now\r
-3) Switch to Zlib 1.2.11 static library 64bits for VS 2017\r
-4) Switch to SDL 1.2.15 static library 64bits for VS 2017\r
-5) Local variables window displays values from function's parameters\r
-6) Fixed the typedef's name display in Local and Watch variables window\r
-7) Breakpoint may now occur in case of a ROM cartridge writing\r
--- ROM cartridge writing detection follow the alpine "allow writes to cartridge rom"'s flag check\r
--- Alert box will display a message with possibility to pass or not the breakpoint only if this is related to a 8 or 16 bits ROM access\r
-8) Local variables window detects now if a variable is used or not by the code\r
-9) The address provided in the debugger memory windows is now verified to prevent crash\r
--- Wrong address will be displayed in red\r
-10) UI changes \r
--- Added new icons for the exit and status features\r
--- Modified icons for the SP (Stack) browser\r
--- Unified icons sizes depend on their usage (drop down menu and main menu)\r
--- Underline the active M68K line in the disassembly window\r
--- Allow the up/down navigation on the SP (Stack) browser\r
--- Restart function cleans-up the SP (Stack) browser and the heap allocator system\r
--- Fixed the up navigation on the memory window\r
-11) Added some log information for the emulator initialisations\r
-12) Breakpoint will happen in case of writing at unknown memory location\r
--- Alert box will display a message and then the code will stop\r
-13) Added the DRAM size in the emulator status window\r
-14) Debugger sources code clean-up\r
-15) Added a call stack feature\r
-16) Follow platform requirement to prevent source file reading issue\r
-17) UI modifications\r
--- Modified icon for the memory window to make a distinction with the memory browser\r
--- The all watch, and Exception Vector Table windows, can be closed using keyboard\r
--- Renamed the debugger dedicated icons to make a distinction\r
--- Added the call stack window\r
-18) Fixed a crash in the all watch window after loading a new binary without ELF/DWARF information\r
--- Previously used ELF/DWARF information was still accessible\r
-19) Fixed slash/backslash issue, in the Alpine tab, to follow platform requirement\r
-20) Heap allocation window uses the DRAM size limit option and detect if heap allocation shares space with SP (Stack)\r
-21) Added a Jaguar model and BIOS configuration tab\r
-22) Jaguar model and BIOS configuration integration\r
-23) Added LEB128 decoding functions\r
--- It is used for the DWARF decoding information\r
-24) Debugger support improvement\r
--- DWARF support for the enum type (partial), structure and subroutine type\r
--- Debugger can report variable's unsigned char value\r
-25) UI modifications\r
--- Added a status bar, better status report & information display for the heap allocation window\r
--- Added a status bar, better status report & information display for the local variables window\r
--- Added better information display for the exception vectors table window, and added some missing vectors\r
--- Added a status bar, better status report & information display for the call stack window\r
--- Added a status bar, better status report & information display for the all watches window\r
-26) Added screenshot feature\r
--- Not accessible in debugger mode\r
--- Added screenshot editable path in the general tab, and a key binding\r
-27) Minor misspellings fixes\r
-28) DWARF source code directory path clean-up\r
-29) Added a source code files list viewer\r
--- List comes from the DWARF information\r
-30) Check potential variables missing/incomplete description found in the DWARF information\r
--- No crash involved but can help to reduce such as variables duplicate or the blank ones\r
-31) Added a sorting filter in the all watches window\r
-32) Improve source code file reading to avoid additional text/bytes reading\r
-33) Help & content texts updates\r
-34) Fixed a crash legacy issue when emulator launches in Alpine mode without a valid rom\r
-35) Added the support for the used lines source's DWARF structure\r
--- Mostly used to handle missing subprogram's lines information, and missing CU's low/high PC\r
-36) Added the Rx version's contact in the help text\r
-37) Added search paths in case of missing DWARF directories information\r
--- Used to look for the file(s)\r
-\r
-Release 3 (13th November 2017)\r
-------------------------------\r
-Git commit: b1b673a3b0d19e3c2c45b6590b773b11e45bced7\r
--\r
-0) Fixed the windows respawning in the next emulator launch within --alpine or --debugger options\r
-1) Added an Exception Vector Table window\r
-2) Modified the About window to update the credits list in a more appropriate way\r
--- Updated the emulator application credits line\r
-3) Added 'Rx' word to the emulator name\r
-4) Fixed a crash when reading the DWARF information in the case of the DWARF2 format has not been used\r
-5) Added ui, alpine and debugger groups in the settings\r
-6) Added the possibility to erase settings\r
-7) Added the --es-all, --es-ui, --es-alpine and --es-debugger options to erase specific settings\r
-8) Added a key bindings tab and adapted the configuration dialog tabs\r
--- User can modify the key bindings where appropriate\r
--- Key bindings UI is displayed based on the option used (--debugger, -- alpine)\r
-9) Fixed a crash, in Release mode, when the HW labels setting is turn on\r
-10) Solved an interference between the HW labels setting and the one used by the debugger\r
--- The setting is now only the reference used\r
-11) Fixed the SP (Stack) browser UI potential missing data\r
-12) Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist\r
-13) Keep the scrollbar position in accordance of the M68K PC pointer\r
--- UI displays the source without the need to move down/up the scrollbar\r
-14) Fixed a crash when DWARF information report a source line number exceeding the number of lines present in a source file\r
--- This may come from the linker vlink\r
-15) Improved the .heap section detection to avoid a detection error\r
--- Depend vlink version, .heap section may have an Alloc flag\r
-16) Fixed a crash when DWARF information does references to missing source code files\r
-17) Added a local variables window\r
-18) Project has switched to Visual Studio 2017 and QT 5.9.1 library\r
-\r
-Release 2 (3rd September 2017)\r
-------------------------------\r
-0) Added some error detections when reading the ELF executable file\r
-1) Added all hardware labels (based on the document scans from the Version 2.4 - June 7, 1995)\r
-2) "Step Over" code function for BSR/JSR functions\r
-3) Added the .debug_ranges detection to avoid a detection error\r
-4) DWARF support\r
--- TAG: Compilation Unit, Subprogram, Variables, Types\r
--- Line numbers, symbols, functions\r
-5) Added an All Watch window for non-local variables\r
-6) Added a heap allocator window based on my own memory allocation functions\r
-7) Added additional 4 memory windows with address input based on hexa, decimal or symbol name\r
-8) Windows refreshing executed only if windows is visible\r
-9) Added a restart function\r
--- Restart only the 68000 program counter to his original set\r
-10) Modified the icons color backgound for the "Step In" and "Step Over" functions\r
-11) Updated the About window to update the credits list\r
-12) 64 bits Release executable\r
-13) Fixed (hacking) the display of the SP (Stack) browser\r
-14) Set the emulator in Halt mode when launched in alpine debug mode without a loaded rom\r
--- Otherwise the 68000 program counter will have a 0 value and will execute the code at this address\r
-15) Added some information in the --help/-h/-? option\r
-16) --debugger option no longer force the log file\r
-17) Added a --dram-max option to extend the DRAM size to 8MB\r
-18) Added the "enter" key support when setting the BPM (Breapoint)\r
-19) Save the windows positions, size and visibilities (show or hide) status\r
--- Such windows will automatically respawn in the next emulator launch\r
-\r
-Release 1 (12th February 2017)\r
-------------------------------\r
-0) BPM (Breapoint) now stop at the designated address and no longer stop after executing the code\r
-1) Clean-up the tracing / no-tracing flags for better U.I understanding\r
-2) Added SP (Stack) browser\r
-3) User can change now the number of lines of disassembly displayed in the tracing window\r
-4) User can turn on/off the op-codes associated in the disassembly lines displayed in the M68K tracing window\r
-5) Added an emulator status window (GPU status, M68K debugger and tracking status)\r
-6) Added a GPU disassembly tracing window - Display the current PC pointer\r
-7) Added a DSP disassembly tracing window - Display the current PC pointer\r
-8) Added possibility to change refresh rate of browsers when emulation is launched\r
-9) Display partial hardware labels (Internal Memory and Graphics sub-system address space) in the disassembly lines displayed in the M68K tracing window\r
--- Display first the hardware labels (based from the Jag V8 dev. PDF) and then the ones possibly found in the ELF debug symbol\r
-10) Minor U.I cosmetic changes\r
-11) User can turn on/off the hardware labels associated in the disassembly lines displayed in the M68K tracing window\r
--- It doesn't apply to the hardware labels possibly found in the ELF debug symbol\r
-\r
-Release 0 (5th January 2017)\r
-----------------------------\r
-0) New option --debugger\r
-1) ELF format support\r
-2) ELF debug symbol support\r
-3) "Step Into" code function\r
-4) Menus layout dedicated to the debugger\r
-5) Added a dedicated main window for tracing (M68K)\r
-6) Added a Debugger tab in the config tab\r
-7) Visual Studio 2015 project support\r
-8) libelf-0.8.13 library support\r
-9) 64 bits debug executable only\r
-\r
-\r
-Known issues\r
-============\r
-1) Video output is not displayed due to my OpenGL / QT5 5.5.1 integration with VS 2015 but solved when using the QT 5.9.1 package for VS 2017\r
-2) The BPM (Breapoint) remains stuck on his address when user wants to continue the code execution\r
--- Need to trace over the BPM or unset the BPM\r
--- The issue can be prevented if the code doesn't set IRQ, otherwise the IRQ will need to be traced to get back control\r
-3) To support DWARF 2\r
--- With GCC: the code must be compiled with the -gdwarf-2 option\r
-4) The Local and Watch variables window  may display not available type information or empty information\r
--- Such missing information may be included in future release\r
--- The 'const' type may not be reported correctly in the DWARF information \r
-5) The 2MB mirroring is no longer applied in case of --dram-max option usage\r
-6) Stack must reflect the --dram-max option usage otherwise the stack may be corrupted\r
--- The application needs to set the SP (Stack) in accordance\r
-7) The Exception Vector Table window displays only 65 vectors\r
--- Missing vectors may be added in future release\r
-8) User needs to manualy check if the Atari Jaguar executable match his source code files\r
--- Otherwise, source code and assembly may not match or leads to instabilities\r
-9) The emulator needs to be restarted in case of the following actions occur\r
--- Key bindings changes\r
--- BIOS selection changes and without new executable load\r
-10) In the case of a ROM cartridge writing, and with occuring breakpoint, the PC pointer will point at the next instruction and not at the instruction causing the breakpoint\r
-11) Emulator will crash in case of wrong address value provided in the memory browser\r
-12) The RAM access log is limited to the 2MB\r
-13) In various occasions, global variables may be duplicated or without name in the DWARF information\r
--- It may come from the Vlink linker and/or GCC 7.1.0 or 8.2.0 compilation with -gdwarf-2 option\r
-\r
-Cosmetic / UX issues\r
-====================\r
-1) The SP (Stack) icon color backgound doesn't look similar with the other ones\r
-2) The SP (Stack) browser size always open at a forced size no matter if the size has been changed\r
-3) Not every features have associated key bindings\r
-\r
-Legacy issues/hints\r
-===================\r
-1) Emulator seems to have easter egg(s)\r
--- The option --yarrr displays a single message and end the application\r
--- Pressing F8, while in the main window, will create an extra message in the log file\r
-2) The --alpine option force the log file but it can be override if --no-log option is set after the --alpine option\r
-\r
-Project information\r
-===================\r
-1) Code based on the Shamus Hammons source code available via Gethub by the 12th September 2017 (2.1.3 Final)\r
-2) Visual Studio 2015/2017 project support for 64 bits\r
-3) libelf 0.8.13 library 64bits for VS 2015/2017\r
-4) libdwarf 1.41 library 64bits for VS 2015, cygwin64 and Msys2/MinGW64\r
-5) QT 5.5.1 library 64bits for VS 2015\r
-6) QT 5.9.1 library 64bits for VS 2017\r
-7) Zlib 1.2.8 library 64bits for VS 2015\r
-8) Zlib 1.2.11 library 64bits for VS 2017\r
-9) SDL 1.2.15 library 64bits for VS 2015/2017\r
-10) The original make files have been modified to follow the requirements and modifications\r
-11) The 'Rx' word has been added to the emulator name to make distinction with the official version\r
-12) The project is set at https://github.com/djipi/Virtual-Jaguar-Rx\r
-13) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements\r
--- Text / License terms are the same\r
-\r
-\r
-Download statistics\r
--------------------\r
-jaguar64eu : 15 downloads for the Release 0 on the 12th Feb, 2017\r
-jaguar64eu : 18 downloads for the Release 1 on the 21st May, 2017\r
-No downloads statistics available for the Release 2\r
-No downloads statistics available for the Release 3\r
+Release 4 (TBD)
+---------------
+Git commit: TBD
+-
+0) The zoom value setting has been fixed in the registry
+1) Debugger mode now shares the same alpine rom path setting
+2) Local variables window displays register name now
+3) Switch to Zlib 1.2.11 static library 64bits for VS 2017
+4) Switch to SDL 1.2.15 static library 64bits for VS 2017
+5) Local variables window displays values from function's parameters
+6) Fixed the typedef's name display in Local and Watch variables window
+7) Breakpoint may now occur in case of a ROM cartridge writing
+-- ROM cartridge writing detection follow the alpine "allow writes to cartridge rom"'s flag check
+-- Alert box will display a message with possibility to pass or not the breakpoint only if this is related to a 8 or 16 bits ROM access
+8) Local variables window detects now if a variable is used or not by the code
+9) The address provided in the debugger memory windows is now verified to prevent crash
+-- Wrong address will be displayed in red
+10) UI changes 
+-- Added new icons for the exit and status features
+-- Modified icons for the SP (Stack) browser
+-- Unified icons sizes depend on their usage (drop down menu and main menu)
+-- Underline the active M68K line in the disassembly window
+-- Allow the up/down navigation on the SP (Stack) browser
+-- Restart function cleans-up the SP (Stack) browser and the heap allocator system
+-- Fixed the up navigation on the memory window
+11) Added some log information for the emulator initialisations
+12) Breakpoint will happen in case of writing at unknown memory location
+-- Alert box will display a message and then the code will stop
+13) Added the DRAM size in the emulator status window
+14) Debugger sources code clean-up
+15) Added a call stack feature
+16) Follow platform requirement to prevent source file reading issue
+17) UI modifications
+-- Modified icon for the memory window to make a distinction with the memory browser
+-- The all watch, and Exception Vector Table windows, can be closed using keyboard
+-- Renamed the debugger dedicated icons to make a distinction
+-- Added the call stack window
+18) Fixed a crash in the all watch window after loading a new binary without ELF/DWARF information
+-- Previously used ELF/DWARF information was still accessible
+19) Fixed slash/backslash issue, in the Alpine tab, to follow platform requirement
+20) Heap allocation window uses the DRAM size limit option and detect if heap allocation shares space with SP (Stack)
+21) Added a Jaguar model and BIOS configuration tab
+22) Jaguar model and BIOS configuration integration
+23) Added LEB128 decoding functions
+-- It is used for the DWARF decoding information
+24) Debugger support improvement
+-- DWARF support for the enum type (partial), structure and subroutine type
+-- Debugger can report variable's unsigned char value
+25) UI modifications
+-- Added a status bar, better status report & information display for the heap allocation window
+-- Added a status bar, better status report & information display for the local variables window
+-- Added better information display for the exception vectors table window, and added some missing vectors
+-- Added a status bar, better status report & information display for the call stack window
+-- Added a status bar, better status report & information display for the all watches window
+26) Added screenshot feature
+-- Not accessible in debugger mode
+-- Added screenshot editable path in the general tab, and a key binding
+27) Minor misspellings fixes
+28) DWARF source code directory path clean-up
+29) Added a source code files list viewer
+-- List comes from the DWARF information
+30) Check potential variables missing/incomplete description found in the DWARF information
+-- No crash involved but can help to reduce such as variables duplicate or the blank ones
+31) Added a sorting filter in the all watches window
+32) Improve source code file reading to avoid additional text/bytes reading
+33) Help & content texts updates
+34) Fixed a crash legacy issue when emulator launches in Alpine mode without a valid rom
+35) Added the support for the used lines source's DWARF structure
+-- Mostly used to handle missing subprogram's lines information, and missing CU's low/high PC
+36) Added the Rx version's contact in the help text
+37) Added search paths in case of missing DWARF directories information
+-- Used to look for the file(s)
+38) Setup CU's low/high PC in case of the DWARF structures doesn't have it
+-- Used mostly to allow display the source assembled with vasm
+39) Added function name support from ELF structure
+40) Added the return address information in the call stack
+41) Added multiple breakpoints feature and their key bindings
+-- For functions only
+
+Release 3 (13th November 2017)
+------------------------------
+Git commit: b1b673a3b0d19e3c2c45b6590b773b11e45bced7
+-
+0) Fixed the windows respawning in the next emulator launch within --alpine or --debugger options
+1) Added an Exception Vector Table window
+2) Modified the About window to update the credits list in a more appropriate way
+-- Updated the emulator application credits line
+3) Added 'Rx' word to the emulator name
+4) Fixed a crash when reading the DWARF information in the case of the DWARF2 format has not been used
+5) Added ui, alpine and debugger groups in the settings
+6) Added the possibility to erase settings
+7) Added the --es-all, --es-ui, --es-alpine and --es-debugger options to erase specific settings
+8) Added a key bindings tab and adapted the configuration dialog tabs
+-- User can modify the key bindings where appropriate
+-- Key bindings UI is displayed based on the option used (--debugger, -- alpine)
+9) Fixed a crash, in Release mode, when the HW labels setting is turn on
+10) Solved an interference between the HW labels setting and the one used by the debugger
+-- The setting is now only the reference used
+11) Fixed the SP (Stack) browser UI potential missing data
+12) Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist
+13) Keep the scrollbar position in accordance of the M68K PC pointer
+-- UI displays the source without the need to move down/up the scrollbar
+14) Fixed a crash when DWARF information report a source line number exceeding the number of lines present in a source file
+-- This may come from the linker vlink
+15) Improved the .heap section detection to avoid a detection error
+-- Depend vlink version, .heap section may have an Alloc flag
+16) Fixed a crash when DWARF information does references to missing source code files
+17) Added a local variables window
+18) Project has switched to Visual Studio 2017 and QT 5.9.1 library
+
+Release 2 (3rd September 2017)
+------------------------------
+0) Added some error detections when reading the ELF executable file
+1) Added all hardware labels (based on the document scans from the Version 2.4 - June 7, 1995)
+2) "Step Over" code function for BSR/JSR functions
+3) Added the .debug_ranges detection to avoid a detection error
+4) DWARF support
+-- TAG: Compilation Unit, Subprogram, Variables, Types
+-- Line numbers, symbols, functions
+5) Added an All Watch window for non-local variables
+6) Added a heap allocator window based on my own memory allocation functions
+7) Added additional 4 memory windows with address input based on hexa, decimal or symbol name
+8) Windows refreshing executed only if windows is visible
+9) Added a restart function
+-- Restart only the 68000 program counter to his original set
+10) Modified the icons color backgound for the "Step In" and "Step Over" functions
+11) Updated the About window to update the credits list
+12) 64 bits Release executable
+13) Fixed (hacking) the display of the SP (Stack) browser
+14) Set the emulator in Halt mode when launched in alpine debug mode without a loaded rom
+-- Otherwise the 68000 program counter will have a 0 value and will execute the code at this address
+15) Added some information in the --help/-h/-? option
+16) --debugger option no longer force the log file
+17) Added a --dram-max option to extend the DRAM size to 8MB
+18) Added the "enter" key support when setting the BPM (Breapoint)
+19) Save the windows positions, size and visibilities (show or hide) status
+-- Such windows will automatically respawn in the next emulator launch
+
+Release 1 (12th February 2017)
+------------------------------
+0) BPM (Breapoint) now stop at the designated address and no longer stop after executing the code
+1) Clean-up the tracing / no-tracing flags for better U.I understanding
+2) Added SP (Stack) browser
+3) User can change now the number of lines of disassembly displayed in the tracing window
+4) User can turn on/off the op-codes associated in the disassembly lines displayed in the M68K tracing window
+5) Added an emulator status window (GPU status, M68K debugger and tracking status)
+6) Added a GPU disassembly tracing window - Display the current PC pointer
+7) Added a DSP disassembly tracing window - Display the current PC pointer
+8) Added possibility to change refresh rate of browsers when emulation is launched
+9) Display partial hardware labels (Internal Memory and Graphics sub-system address space) in the disassembly lines displayed in the M68K tracing window
+-- Display first the hardware labels (based from the Jag V8 dev. PDF) and then the ones possibly found in the ELF debug symbol
+10) Minor U.I cosmetic changes
+11) User can turn on/off the hardware labels associated in the disassembly lines displayed in the M68K tracing window
+-- It doesn't apply to the hardware labels possibly found in the ELF debug symbol
+
+Release 0 (5th January 2017)
+----------------------------
+0) New option --debugger
+1) ELF format support
+2) ELF debug symbol support
+3) "Step Into" code function
+4) Menus layout dedicated to the debugger
+5) Added a dedicated main window for tracing (M68K)
+6) Added a Debugger tab in the config tab
+7) Visual Studio 2015 project support
+8) libelf-0.8.13 library support
+9) 64 bits debug executable only
+
+
+Known issues
+============
+1) Video output is not displayed due to my OpenGL / QT5 5.5.1 integration with VS 2015 but solved when using the QT 5.9.1 package for VS 2017
+2) The BPM (Breapoint) remains stuck on his address when user wants to continue the code execution
+-- Need to trace over the BPM or unset the BPM
+-- The issue can be prevented if the code doesn't set IRQ, otherwise the IRQ will need to be traced to get back control
+3) DWARF 2 support
+-- With GCC: the code must be compiled with the -gdwarf-2 option
+4) The Local and Watch variables window  may display not available type information or empty information
+-- Such missing information may be included in future release
+-- The 'const' type may not be reported correctly in the DWARF information 
+5) The 2MB mirroring is no longer applied in case of --dram-max option usage
+6) Stack must reflect the --dram-max option usage otherwise the stack may be corrupted
+-- The application needs to set the SP (Stack) in accordance
+7) The Exception Vector Table window displays only 65 vectors
+-- Missing vectors may be added in future release
+8) User needs to manualy check if the Atari Jaguar executable match his source code files
+-- Otherwise, source code and assembly may not match or leads to instabilities
+9) The emulator needs to be restarted in case of the following actions occur
+-- Key bindings changes
+-- BIOS selection changes and without new executable load
+10) In the case of a ROM cartridge writing, and with occuring breakpoint, the PC pointer will point at the next instruction and not at the instruction causing the breakpoint
+11) Emulator will crash in case of wrong address value provided in the memory browser
+12) The RAM access log is limited to the 2MB
+13) In various occasions, global variables may be duplicated or without name in the DWARF information
+-- It may come from the Vlink linker and/or GCC 7.1.0 or 8.2.0 compilation with -gdwarf-2 option
+14) Source code disply only assembled code from vasm with option -dwarf
+15) After a new breakpoint set, the breakpoint list window is not refreshed
+-- User must perform an operation, such code tracing, to see the breakpoints list update
+16) Some ASCII characters may be not displayed correctly
+-- It depend how the text is displayed, this is related to the QT/HTML encoding done when reading DWARF file
+
+Cosmetic / UX issues
+====================
+1) The SP (Stack) icon color backgound doesn't look similar with the other ones
+2) The SP (Stack) browser size always open at a forced size no matter if the size has been changed
+3) Not every features have associated key bindings
+
+Legacy issues/hints
+===================
+1) Emulator seems to have easter egg(s)
+-- The option --yarrr displays a single message and end the application
+-- Pressing F8, while in the main window, will create an extra message in the log file
+2) The --alpine option force the log file but it can be override if --no-log option is set after the --alpine option
+
+Project information
+===================
+1) Code based on the Shamus Hammons source code available via Gethub by the 12th September 2017 (2.1.3 Final)
+2) Visual Studio 2015/2017 project support for 64 bits
+3) libelf 0.8.13 library 64bits for VS 2015/2017
+4) libdwarf 1.41 library 64bits for VS 2015, cygwin64 and Msys2/MinGW64
+5) QT 5.5.1 library 64bits for VS 2015
+6) QT 5.9.1 library 64bits for VS 2017
+7) Zlib 1.2.8 library 64bits for VS 2015
+8) Zlib 1.2.11 library 64bits for VS 2017
+9) SDL 1.2.15 library 64bits for VS 2015/2017
+10) The original make files have been modified to follow the requirements and modifications
+11) The 'Rx' word has been added to the emulator name to make distinction with the official version
+12) The project is set at https://github.com/djipi/Virtual-Jaguar-Rx
+13) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements
+-- Text / License terms are the same
+
+
+Download statistics
+-------------------
+jaguar64eu : 15 downloads for the Release 0 on the 12th Feb, 2017
+jaguar64eu : 18 downloads for the Release 1 on the 21st May, 2017
+No downloads statistics available for the Release 2
+No downloads statistics available for the Release 3
diff --git a/res/debug-breakpoints.png b/res/debug-breakpoints.png
new file mode 100644 (file)
index 0000000..768ab66
Binary files /dev/null and b/res/debug-breakpoints.png differ
diff --git a/res/debug-deleteallbreakpoints.png b/res/debug-deleteallbreakpoints.png
new file mode 100644 (file)
index 0000000..77589b9
Binary files /dev/null and b/res/debug-deleteallbreakpoints.png differ
diff --git a/res/debug-disableallbreakpoints.png b/res/debug-disableallbreakpoints.png
new file mode 100644 (file)
index 0000000..224bebc
Binary files /dev/null and b/res/debug-disableallbreakpoints.png differ
diff --git a/src/debugger/BreakpointsWin.cpp b/src/debugger/BreakpointsWin.cpp
new file mode 100644 (file)
index 0000000..11b922e
--- /dev/null
@@ -0,0 +1,157 @@
+//
+// BreakpointsWin.cpp - Breakpoints
+//
+// by Jean-Paul Mari
+//
+// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JPM  30/08/2017  Created this file
+// JPM   Oct./2018  Added the breakpoints features
+//
+
+// STILL TO DO:
+//
+
+#include "debugger/BreakpointsWin.h"
+#include "jaguar.h"
+#include "debugger/DBGManager.h"
+
+
+//
+BreakpointsWindow::BreakpointsWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
+TableView(new QTableView),
+model(new QStandardItemModel),
+#ifdef BRK_STATUSBAR
+statusbar(new QStatusBar),
+#endif
+#ifdef BRK_REFRESHBUTTON
+refresh(new QPushButton(tr("Refresh"))),
+#endif
+layout(new QVBoxLayout)
+{
+       setWindowTitle(tr("Breakpoints"));
+
+       // Refresh feature
+#ifdef BRK_REFRESH
+       QHBoxLayout *hbox1 = new QHBoxLayout;
+       hbox1->addWidget(refresh);
+#endif
+
+       // Set the font
+       QFont fixedFont("Lucida Console", 8, QFont::Normal);
+       fixedFont.setStyleHint(QFont::TypeWriter);
+
+       // Set the new layout with proper identation and readibility
+       model->setColumnCount(3);
+       model->setHeaderData(0, Qt::Horizontal, QObject::tr("Status"));
+       model->setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));
+#ifdef BRK_HITCOUNTS
+       model->setHeaderData(2, Qt::Horizontal, QObject::tr("Hit Count"));
+#endif
+       // Information table
+       TableView->setModel(model);
+       TableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+       TableView->setShowGrid(0);
+       TableView->setFont(fixedFont);
+       TableView->verticalHeader()->setDefaultSectionSize(TableView->verticalHeader()->minimumSectionSize());
+       TableView->verticalHeader()->setDefaultAlignment(Qt::AlignRight);
+       layout->addWidget(TableView);
+
+       // Status bar
+#ifdef BRK_STATUSBAR
+       layout->addWidget(statusbar);
+#endif
+       // Set layouts
+#ifdef BRK_REFRESHBUTTON
+       layout->addLayout(hbox1);
+#endif 
+       setLayout(layout);
+       // Event setup
+#ifdef BRK_REFRESHBUTTON
+       connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));
+#endif
+}
+
+
+//
+BreakpointsWindow::~BreakpointsWindow(void)
+{
+}
+
+
+// 
+void BreakpointsWindow::UpdateInfos(void)
+{
+       char *FuncName;
+       bool ok;
+       char Addresse[100];
+
+       // Display the BPM as first breakpoint
+       model->setItem(0, 0, new QStandardItem(QString("%1").arg(bpmSaveActive ? "BPM On" : "BPM Off")));
+       if (bpmAddress1)
+       {
+               sprintf(Addresse, "0x%06X", bpmAddress1);
+       }
+       else
+       {
+               strcpy(Addresse, "(null)");
+       }
+       model->setItem(0, 1, new QStandardItem(QString("%1").arg((bpmAddress1 && (FuncName = DBGManager_GetSymbolNameFromAdr(bpmAddress1))) ? FuncName : Addresse)));
+#ifdef BRK_HITCOUNTS
+       model->setItem(0, 2, new QStandardItem(QString("%1").arg(bpmHitCounts)));
+#endif
+
+       // Display all user breakpoints
+       for (size_t i = 0; i < brkNbr; i++)
+       {
+               if (brkInfo[i].Used)
+               {
+                       model->setItem((i + 1), 0, new QStandardItem(QString("%1").arg(brkInfo[i].Active ? "On" : "Off")));
+                       sprintf(Addresse, "0x%06X", brkInfo[i].Adr);
+                       model->setItem((i + 1), 1, new QStandardItem(QString("%1").arg((FuncName = brkInfo[i].Name) ? FuncName : Addresse)));
+                       model->setItem((i + 1), 2, new QStandardItem(QString("%1").arg(brkInfo[i].HitCounts)));
+               }
+       }
+}
+
+
+// 
+void BreakpointsWindow::Reset(void)
+{
+       UpdateTable(true);
+}
+
+
+// 
+void BreakpointsWindow::UpdateTable(bool refresh)
+{
+       if (refresh)
+       {
+               model->setRowCount(0);
+               model->insertRow(brkNbr + 1);
+       }
+}
+
+
+//
+void BreakpointsWindow::RefreshContents(void)
+{
+       if (isVisible())
+       {
+               UpdateTable(true);
+               UpdateInfos();
+       }
+}
+
+
+//
+void BreakpointsWindow::keyPressEvent(QKeyEvent * e)
+{
+       if (e->key() == Qt::Key_Escape)
+       {
+               hide();
+       }
+}
+
diff --git a/src/debugger/BreakpointsWin.h b/src/debugger/BreakpointsWin.h
new file mode 100644 (file)
index 0000000..b7d23e8
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// BreakpointsWin.h: Breakpoints
+//
+// by Jean-Paul Mari
+//
+
+#ifndef __BREAKPOINTSWIN_H__
+#define __BREAKPOINTSWIN_H__
+
+//#define BRK_STATUSBAR                                // Status bar usage
+//#define BRK_REFRESHBUTTON                            // Refresh button
+#define BRK_HITCOUNTS                          // Support the hit count
+
+#include <QtWidgets>
+#include <stdint.h>
+
+
+class BreakpointsWindow: public QWidget
+{
+       Q_OBJECT
+
+       public:
+               BreakpointsWindow(QWidget *parent = 0);
+               ~BreakpointsWindow(void);
+               void Reset(void);
+               void RefreshContents(void);
+
+       public slots:
+
+       protected:
+               void keyPressEvent(QKeyEvent *);
+               void UpdateInfos(void);
+               void UpdateTable(bool refresh);
+
+       private:
+               QVBoxLayout *layout;
+#ifdef BRK_STATUSBAR
+               QStatusBar *statusbar;
+#endif
+               QTableView *TableView;
+               QStandardItemModel *model;
+               QPushButton *refresh;
+};
+
+#endif // __BREAKPOINTSWIN_H__
diff --git a/src/debugger/NewFnctBreakpointWin.cpp b/src/debugger/NewFnctBreakpointWin.cpp
new file mode 100644 (file)
index 0000000..a962ded
--- /dev/null
@@ -0,0 +1,125 @@
+//
+// NewFnctBreakpointsWin.cpp - New function breakpoint
+//
+// by Jean-Paul Mari
+//
+// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JPM  10/19/2018  Created this file
+//
+
+// STILL TO DO:
+// Set information (name, etc.) for the asm function
+// Find a way to refresh the breakpoints list window
+//
+
+#include "debugger/NewFnctBreakpointWin.h"
+#include "jaguar.h"
+#include "debugger/DBGManager.h"
+#include "m68000/m68kinterface.h"
+#include "settings.h"
+
+
+//
+NewFnctBreakpointWindow::NewFnctBreakpointWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog),
+layout(new QVBoxLayout),
+address(new QLineEdit),
+add(new QPushButton(tr("Add")))
+{
+       setWindowTitle(tr("New function breakpoint"));
+
+       address->setPlaceholderText("0x<value>, decimal value or symbol name");
+
+       QHBoxLayout * hbox1 = new QHBoxLayout;
+       hbox1->addWidget(address);
+       hbox1->addWidget(add);
+
+       layout->addLayout(hbox1);
+       setLayout(layout);
+
+       connect(add, SIGNAL(clicked()), this, SLOT(AddBreakpointAddress()));
+}
+
+
+//
+void NewFnctBreakpointWindow::keyPressEvent(QKeyEvent * e)
+{
+       if (e->key() == Qt::Key_Escape)
+       {
+               hide();
+       }
+       else
+       {
+               if (e->key() == Qt::Key_Return)
+               {
+                       AddBreakpointAddress();
+               }
+       }
+}
+
+
+// Add a breakpoint to the address
+// Address can be an hexa, decimal or a symbol name
+void NewFnctBreakpointWindow::AddBreakpointAddress(void)
+{
+       bool ok;
+       size_t len;
+       QString newAddress;
+       size_t adr;
+       S_BrkInfo Brk;
+
+       memset(&Brk, 0, sizeof(Brk));
+       QPalette p = address->palette();
+       newAddress = address->text();
+
+       if ((len = newAddress.size()))
+       {
+               if ((len > 1) && (newAddress.at(0) == QChar('0')) && (newAddress.at(1) == QChar('x')))
+               {
+                       adr = newAddress.toUInt(&ok, 16);
+               }
+               else
+               {
+                       if (!(adr = DBGManager_GetAdrFromSymbolName(newAddress.toLatin1().data())))
+                       {
+                               adr = newAddress.toUInt(&ok, 10);
+                       }
+                       else
+                       {
+                               ok = true;
+                       }
+               }
+
+               // Check validity address
+               if (ok && (adr < 0xffffff))
+               {
+                       // Set information based on address
+                       Brk.Name = DBGManager_GetSymbolNameFromAdr(adr);
+                       Brk.Filename = DBGManager_GetFullSourceFilenameFromAdr(adr, &ok);
+                       Brk.NumLine = DBGManager_GetNumLineFromAdr(adr, DBG_TAG_subprogram);
+                       Brk.LineSrc = DBGManager_GetLineSrcFromAdrNumLine(adr, Brk.NumLine);
+
+                       // In all cases, consider address as valid
+                       Brk.Adr = adr;
+
+                       // Add the breakpoint
+                       if (m68k_brk_add(&Brk))
+                       {
+                               p.setColor(QPalette::Text, Qt::black);
+                       }
+                       else
+                       {
+                               p.setColor(QPalette::Text, Qt::darkYellow);
+                       }
+               }
+               else
+               {
+                       // Address is not valid
+                       p.setColor(QPalette::Text, Qt::red);
+               }
+
+               address->setPalette(p);
+       }
+}
diff --git a/src/debugger/NewFnctBreakpointWin.h b/src/debugger/NewFnctBreakpointWin.h
new file mode 100644 (file)
index 0000000..eb6d3cc
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// NewFnctBreakpointWin.h: New function breakpoint
+//
+// by Jean-Paul Mari
+//
+
+#ifndef __NEWFNCTBREAKPOINTWIN_H__
+#define __NEWFNCTBREAKPOINTWIN_H__
+
+#include <QtWidgets>
+#include <stdint.h>
+
+class NewFnctBreakpointWindow: public QWidget
+{
+       Q_OBJECT
+
+       public:
+               NewFnctBreakpointWindow(QWidget * parent = 0);
+
+       public slots:
+
+       protected:
+               void keyPressEvent(QKeyEvent *);
+
+       protected slots:
+               void AddBreakpointAddress(void);
+
+       private:
+               QVBoxLayout *layout;
+               QLineEdit *address;
+               QPushButton *add;
+};
+
+#endif // __NEWFNCTBREAKPOINTWIN_H__
diff --git a/src/debugger/brkWin.cpp b/src/debugger/brkWin.cpp
deleted file mode 100644 (file)
index 8ad3cc8..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-//\r
-// brkWin.cpp - Breakpoints\r
-//\r
-// by Jean-Paul Mari\r
-//\r
-// JPM = Jean-Paul Mari <djipi.mari@gmail.com>\r
-//\r
-// Who  When        What\r
-// ---  ----------  -----------------------------------------------------------\r
-// JPM  30/08/2017  Created this file\r
-//\r
-\r
-// STILL TO DO:\r
-//\r
-\r
-#include "debugger/brkWin.h"\r
-//#include "memory.h"\r
-#include "debugger/DBGManager.h"\r
-\r
-\r
-//\r
-BrkWindow::BrkWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),\r
-       layout(new QVBoxLayout), text(new QTextBrowser),\r
-//     layout(new QVBoxLayout), text(new QLabel),\r
-//     refresh(new QPushButton(tr("Refresh"))),\r
-       address(new QLineEdit)\r
-//     go(new QPushButton(tr("Go"))),\r
-//     memBase(0),\r
-//     NbWatch(0),\r
-//     PtrWatchInfo(NULL)\r
-{\r
-       setWindowTitle(tr("Breakpoints window"));\r
-\r
-#if 0\r
-//     address->setInputMask("hhhhhh");\r
-//     QHBoxLayout * hbox1 = new QHBoxLayout;\r
-//     hbox1->addWidget(refresh);\r
-//     hbox1->addWidget(address);\r
-//     hbox1->addWidget(go);\r
-\r
-       // Need to set the size as well...\r
-//     resize(560, 480);\r
-\r
-       QFont fixedFont("Lucida Console", 8, QFont::Normal);\r
-//     QFont fixedFont("", 8, QFont::Normal);\r
-       fixedFont.setStyleHint(QFont::TypeWriter);\r
-       text->setFont(fixedFont);\r
-////   layout->setSizeConstraint(QLayout::SetFixedSize);\r
-       setLayout(layout);\r
-\r
-       layout->addWidget(text);\r
-//     layout->addWidget(refresh);\r
-//     layout->addLayout(hbox1);\r
-\r
-//     connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));\r
-//     connect(go, SIGNAL(clicked()), this, SLOT(GoToAddress()));\r
-#endif\r
-}\r
-\r
-\r
-//\r
-BrkWindow::~BrkWindow(void)\r
-{\r
-#if 0\r
-       NbWatch = 0;\r
-       free(PtrWatchInfo);\r
-#endif\r
-}\r
-\r
-\r
-//\r
-void BrkWindow::RefreshContents(void)\r
-{\r
-#if 0\r
-       char string[1024];\r
-//     char buf[64];\r
-       QString WatchAll;\r
-\r
-       if (isVisible())\r
-       {\r
-               if (!NbWatch)\r
-               {\r
-                       if (NbWatch = DBGManager_GetNbGlobalVariables())\r
-                       {\r
-                               PtrWatchInfo = (WatchInfo *)calloc(NbWatch, sizeof(WatchInfo));\r
-#ifdef _MSC_VER\r
-#pragma message("Warning: !!! Need to check the memory desalocation for PtrWatchInfo !!!")\r
-#else\r
-                               #warning "!!! Need to do the memory desalocation for PtrWatchInfo !!!"\r
-#endif // _MSC_VER\r
-                                       \r
-                               for (uint32_t i = 0; i < NbWatch; i++)\r
-                               {\r
-                                       PtrWatchInfo[i].PtrVariableName = DBGManager_GetGlobalVariableName(i + 1);\r
-                                       PtrWatchInfo[i].addr = DBGManager_GetExternalVariableAdr(i + 1);\r
-                                       PtrWatchInfo[i].TypeTag = DBGManager_GetExternalVariableTypeTag(i + 1);\r
-                                       if (!strlen(PtrWatchInfo[i].PtrVariableBaseTypeName = DBGManager_GetGlobalVariableTypeName(i + 1)))\r
-                                       {\r
-                                               PtrWatchInfo[i].PtrVariableBaseTypeName = (char *)"<font color='#ff0000'>N/A</font>";\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               for (uint32_t i = 0; i < NbWatch; i++)\r
-               {\r
-                       if (PtrWatchInfo[i].PtrVariableName && PtrWatchInfo[i].PtrVariableBaseTypeName)\r
-                       {\r
-                               sprintf(string, "%i : %s | %s | 0x%06X | %s", (i + 1), PtrWatchInfo[i].PtrVariableBaseTypeName, PtrWatchInfo[i].PtrVariableName, PtrWatchInfo[i].addr, (PtrWatchInfo[i].TypeTag & 0x8) ? "" : DBGManager_GetExternalVariableValue(i + 1));\r
-                               WatchAll += QString(string);\r
-                               sprintf(string, "<br>");\r
-                               WatchAll += QString(string);\r
-                       }\r
-               }\r
-\r
-               text->clear();\r
-               text->setText(WatchAll);\r
-       }\r
-#endif\r
-}\r
-\r
-\r
-//\r
-void BrkWindow::keyPressEvent(QKeyEvent * e)\r
-{\r
-       if (e->key() == Qt::Key_Escape)\r
-       {\r
-               hide();\r
-       }\r
-       else\r
-       {\r
-               if (e->key() == Qt::Key_PageUp)\r
-               {\r
-#if 0\r
-                       memBase -= 480;\r
-\r
-                       if (memBase < 0)\r
-                               memBase = 0;\r
-\r
-                       RefreshContents();\r
-#endif\r
-               }\r
-               else\r
-               {\r
-                       if (e->key() == Qt::Key_PageDown)\r
-                       {\r
-#if 0\r
-                               memBase += 480;\r
-\r
-                               if (memBase > (0x200000 - 480))\r
-                                       memBase = 0x200000 - 480;\r
-\r
-                               RefreshContents();\r
-#endif\r
-                       }\r
-                       else\r
-                       {\r
-                               if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)\r
-                               {\r
-#if 0\r
-                                       memBase -= 16;\r
-\r
-                                       if (memBase < 0)\r
-                                               memBase = 0;\r
-\r
-                                       RefreshContents();\r
-#endif\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)\r
-                                       {\r
-#if 0\r
-                                               memBase += 16;\r
-\r
-                                               if (memBase > (0x200000 - 480))\r
-                                                       memBase = 0x200000 - 480;\r
-\r
-                                               RefreshContents();\r
-#endif\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               if (e->key() == Qt::Key_Return)\r
-                                               {\r
-                                                       GoToAddress();\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-\r
-//\r
-void BrkWindow::RefreshBrkList(size_t Address)\r
-{\r
-}\r
-\r
-\r
-// Go to the requested address\r
-// Address can be an hexa, decimal or a symbol name\r
-void BrkWindow::GoToAddress(void)\r
-{\r
-       size_t Address;\r
-       bool ok;\r
-       QString newAddress;\r
-\r
-       newAddress = address->text();\r
-\r
-       if ((newAddress.at(0) == QChar('0')) && (newAddress.at(1) == QChar('x')))\r
-       {\r
-               Address = newAddress.toUInt(&ok, 16);\r
-       }\r
-       else\r
-       {\r
-               if (!(Address = DBGManager_GetAdrFromSymbolName(newAddress.toLatin1().data())))\r
-               {\r
-                       Address = newAddress.toUInt(&ok, 10);\r
-               }\r
-       }\r
-\r
-       RefreshBrkList(Address);\r
-}\r
-\r
diff --git a/src/debugger/brkWin.h b/src/debugger/brkWin.h
deleted file mode 100644 (file)
index dd3b085..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// brkWin.h: Breakpoints
-//
-// by Jean-Paul Mari
-//
-
-#ifndef __BRKWIN_H__
-#define __BRKWIN_H__
-
-#include <QtWidgets>
-#include <stdint.h>
-
-
-class BrkWindow: public QWidget
-{
-       Q_OBJECT
-
-       //
-       struct BrkInfo
-       {
-               size_t Adr;
-               bool IsActive;
-               bool IsReached;
-               size_t NbrHit;
-       }S_BrkInfo;
-
-       public:
-               BrkWindow(QWidget *parent = 0);
-               ~BrkWindow(void);
-
-       public slots:
-//             void DefineAllKeys(void);
-               void RefreshContents(void);
-               void RefreshBrkList(size_t Adress);
-               void GoToAddress(void);
-
-       protected:
-               void keyPressEvent(QKeyEvent *);
-
-       private:
-               QVBoxLayout *layout;
-//             QTextBrowser * text;
-//             QLabel *text;
-               QTextBrowser *text;
-//             QPushButton *refresh;
-               QLineEdit *address;
-//             QPushButton *go;
-//             BrkInfo *PtrBrkInfo;
-//             int32_t memBase;
-//             size_t NbBrk;
-};
-
-#endif // __BRKWIN_H__
index 864e4f0..a2c9c8e 100644 (file)
@@ -11,6 +11,7 @@
 // ---  ----------  -----------------------------------------------------------
 // JLH  08/14/2012  Created this file
 // JPM  08/09/2017  Added windows display detection in order to avoid the refresh
 // ---  ----------  -----------------------------------------------------------
 // JLH  08/14/2012  Created this file
 // JPM  08/09/2017  Added windows display detection in order to avoid the refresh
+// JPM  10/13/2018  Added BPM hit counts
 //
 
 // STILL TO DO:
 //
 
 // STILL TO DO:
@@ -268,10 +269,32 @@ void CPUBrowserWindow::UnholdBPM(void)
 }
 
 
 }
 
 
+// Disable BPM
+void CPUBrowserWindow::DisableBPM(void)
+{
+       // Uncheck the BPM checkbox and handle BPM
+       if (bpm->checkState())
+       {
+               bpm->setCheckState(Qt::Unchecked);
+       }
+       HandleBPM(false);
+}
+
+
+// BPM reset
+// Disable checkbox and breakpoint address
+void CPUBrowserWindow::ResetBPM(void)
+{
+       DisableBPM();
+       bpmAddress->setText("");
+}
+
+
 // Toggle breakpoint set
 void CPUBrowserWindow::HandleBPM(bool state)
 {
        bpmSaveActive = bpmActive = state;
 // Toggle breakpoint set
 void CPUBrowserWindow::HandleBPM(bool state)
 {
        bpmSaveActive = bpmActive = state;
+       bpmHitCounts = 0;
 
        if (bpmActive)
        {
 
        if (bpmActive)
        {
@@ -284,7 +307,7 @@ void CPUBrowserWindow::HandleBPM(bool state)
 }
 
 
 }
 
 
-// Breakpoint address set
+// Breakpoint address set and reset the hit counts
 void CPUBrowserWindow::HandleBPMAddress(const QString & newText)
 {
        bool ok;
 void CPUBrowserWindow::HandleBPMAddress(const QString & newText)
 {
        bool ok;
index fb8342f..f8c95da 100644 (file)
@@ -17,16 +17,19 @@ class CPUBrowserWindow: public QWidget
 
        public:
                CPUBrowserWindow(QWidget * parent = 0);
 
        public:
                CPUBrowserWindow(QWidget * parent = 0);
-
+               void DisableBPM(void);
+               void ResetBPM(void);
+               void HoldBPM(void);
+               void UnholdBPM(void);
 
        public slots:
 
        public slots:
-//             void DefineAllKeys(void);
                void RefreshContents(void);
                void RefreshContents(void);
+               void HandleBPMContinue(void);
+
+       private slots:
+//             void DefineAllKeys(void);
                void HandleBPM(bool);
                void HandleBPMAddress(const QString &);
                void HandleBPM(bool);
                void HandleBPMAddress(const QString &);
-               void HandleBPMContinue(void);
-               void HoldBPM(void);
-               void UnholdBPM(void);
 
        protected:
                void keyPressEvent(QKeyEvent *);
 
        protected:
                void keyPressEvent(QKeyEvent *);
index 2757bc9..6ec0cba 100644 (file)
@@ -9,6 +9,7 @@
 // ---  ----------  ------------------------------------------------------------\r
 // JPM  09/10/2017  Created this file\r
 // JPM  Sept./2018  Added screenshot key bindings\r
 // ---  ----------  ------------------------------------------------------------\r
 // JPM  09/10/2017  Created this file\r
 // JPM  Sept./2018  Added screenshot key bindings\r
+// JPM  10/13/2018  Added breakpoints features\r
 //\r
 \r
 \r
 //\r
 \r
 \r
@@ -28,7 +29,10 @@ KeyBindings KeyBindingsTable[KB_END] =       {
                                                                                        { KB_TYPEGENERAL, "KB_Screenshot", "Screenshot", "Screenshot key binding", "F8", NULL, NULL     },\r
                                                                                        { KB_TYPEDEBUGGER, "KB_Restart", "Restart", "Restart key binding", "Ctrl+Shift+F5", NULL, NULL  },\r
                                                                                        { KB_TYPEDEBUGGER, "KB_StepInto", "Step Into", "Step into key binding", "F11", NULL, NULL       },\r
                                                                                        { KB_TYPEGENERAL, "KB_Screenshot", "Screenshot", "Screenshot key binding", "F8", NULL, NULL     },\r
                                                                                        { KB_TYPEDEBUGGER, "KB_Restart", "Restart", "Restart key binding", "Ctrl+Shift+F5", NULL, NULL  },\r
                                                                                        { KB_TYPEDEBUGGER, "KB_StepInto", "Step Into", "Step into key binding", "F11", NULL, NULL       },\r
-                                                                                       { KB_TYPEDEBUGGER, "KB_StepOver", "Step Over", "Step over key binding", "F10", NULL, NULL       }\r
+                                                                                       { KB_TYPEDEBUGGER, "KB_StepOver", "Step Over", "Step over key binding", "F10", NULL, NULL       },\r
+                                                                                       { KB_TYPEDEBUGGER, "KB_FunctionBreakpoint", "Function Breakpoint", "Function breakpoint binding", "Ctrl+B", NULL, NULL  },\r
+                                                                                       { KB_TYPEDEBUGGER, "KB_Breakpoints", "Breakpoints", "Breakpoints binding", "Ctrl+Alt+B", NULL, NULL     },\r
+                                                                                       { KB_TYPEDEBUGGER, "KB_DeleteAllBreakpoints", "Delete All Breakpoints", "Delete all breakpoints binding", "Ctrl+Shift+F9", NULL, NULL   }\r
                                                                                };\r
 \r
 \r
                                                                                };\r
 \r
 \r
index 58fa3d4..1578075 100644 (file)
@@ -35,11 +35,14 @@ enum
        KBEMUSTATUS,\r
        KBPAUSE,\r
        KBFRAMEADVANCE,\r
        KBEMUSTATUS,\r
        KBPAUSE,\r
        KBFRAMEADVANCE,\r
+       KBFULLSCREEN,\r
+       KBSCREENSHOT,\r
        KBRESTART,\r
        KBSTEPINTO,\r
        KBSTEPOVER,\r
        KBRESTART,\r
        KBSTEPINTO,\r
        KBSTEPOVER,\r
-       KBFULLSCREEN,\r
-       KBSCREENSHOT,\r
+       KBFUNCTIONBREAKPOINT,\r
+       KBBREAKPOINTS,\r
+       KBDELETEALLBREAKPOINTS,\r
        KB_END\r
 };\r
 \r
        KB_END\r
 };\r
 \r
index 9b03922..031e6e3 100644 (file)
@@ -20,7 +20,7 @@
 // JPM  11/04/2017  Added the local window\r
 // JPM  08/31/2018  Added the call stack window\r
 // JPM  Sept./2018  Added the new Models and BIOS handler, a screenshot feature and source code files browsing\r
 // JPM  11/04/2017  Added the local window\r
 // JPM  08/31/2018  Added the call stack window\r
 // JPM  Sept./2018  Added the new Models and BIOS handler, a screenshot feature and source code files browsing\r
-// JPM  10/10/2018  Added search paths in the settings\r
+// JPM   Oct./2018  Added search paths in the settings, breakpoints feature\r
 //\r
 \r
 // FIXED:\r
 //\r
 \r
 // FIXED:\r
@@ -91,7 +91,8 @@
 #include "debugger/GPUDasmWin.h"\r
 #include "debugger/DSPDasmWin.h"\r
 #include "debugger/memory1browser.h"\r
 #include "debugger/GPUDasmWin.h"\r
 #include "debugger/DSPDasmWin.h"\r
 #include "debugger/memory1browser.h"\r
-//#include "debugger/brkWin.h"\r
+#include "debugger/BreakpointsWin.h"\r
+#include "debugger/NewFnctBreakpointWin.h"\r
 #include "debugger/FilesrcListWin.h"\r
 #include "debugger/exceptionvectortablebrowser.h"\r
 #include "debugger/allwatchbrowser.h"\r
 #include "debugger/FilesrcListWin.h"\r
 #include "debugger/exceptionvectortablebrowser.h"\r
 #include "debugger/allwatchbrowser.h"\r
@@ -194,7 +195,8 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                allWatchBrowseWin = new AllWatchBrowserWindow(this);\r
                LocalBrowseWin = new LocalBrowserWindow(this);\r
                heapallocatorBrowseWin = new HeapAllocatorBrowserWindow(this);\r
                allWatchBrowseWin = new AllWatchBrowserWindow(this);\r
                LocalBrowseWin = new LocalBrowserWindow(this);\r
                heapallocatorBrowseWin = new HeapAllocatorBrowserWindow(this);\r
-               //brkWin = new BrkWindow(this);\r
+               BreakpointsWin = new BreakpointsWindow(this);\r
+               NewFunctionBreakpointWin = new NewFnctBreakpointWindow(this);\r
                exceptionvectortableBrowseWin = new ExceptionVectorTableBrowserWindow(this);\r
                CallStackBrowseWin = new CallStackBrowserWindow(this);\r
 \r
                exceptionvectortableBrowseWin = new ExceptionVectorTableBrowserWindow(this);\r
                CallStackBrowseWin = new CallStackBrowserWindow(this);\r
 \r
@@ -391,7 +393,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                traceStepOverAct->setDisabled(true);\r
                connect(traceStepOverAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepOver()));\r
 \r
                traceStepOverAct->setDisabled(true);\r
                connect(traceStepOverAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepOver()));\r
 \r
-               // Trace into trace\r
+               // Trace into tracing\r
                traceStepIntoAct = new QAction(QIcon(":/res/debug-stepinto.png"), tr("&Step Into"), this);\r
                traceStepIntoAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSTEPINTO].KBSettingValue)));\r
                traceStepIntoAct->setShortcutContext(Qt::ApplicationShortcut);\r
                traceStepIntoAct = new QAction(QIcon(":/res/debug-stepinto.png"), tr("&Step Into"), this);\r
                traceStepIntoAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSTEPINTO].KBSettingValue)));\r
                traceStepIntoAct->setShortcutContext(Qt::ApplicationShortcut);\r
@@ -399,9 +401,18 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                traceStepIntoAct->setDisabled(true);\r
                connect(traceStepIntoAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepInto()));\r
 \r
                traceStepIntoAct->setDisabled(true);\r
                connect(traceStepIntoAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepInto()));\r
 \r
-               //newBreakpointFunctionAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this);\r
-               //newBreakpointFunctionAct->setShortcut(QKeySequence(tr("Ctrl+B")));\r
-               //connect(newBreakpointFunctionAct, SIGNAL(triggered()), this, SLOT(NewBreakpointFunction()));\r
+               // Function breakpoint\r
+               newFunctionBreakpointAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this);\r
+               newFunctionBreakpointAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBFUNCTIONBREAKPOINT].KBSettingValue)));\r
+               connect(newFunctionBreakpointAct, SIGNAL(triggered()), this, SLOT(ShowNewFunctionBreakpointWin()));\r
+               BreakpointsAct = new QAction(QIcon(":/res/debug-breakpoints.png"), tr("&Breakpoints"), this);\r
+               BreakpointsAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBBREAKPOINTS].KBSettingValue)));\r
+               connect(BreakpointsAct, SIGNAL(triggered()), this, SLOT(ShowBreakpointsWin()));\r
+               deleteAllBreakpointsAct = new QAction(QIcon(":/res/debug-deleteallbreakpoints.png"), tr("&Delete All Breakpoints"), this);\r
+               deleteAllBreakpointsAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBDELETEALLBREAKPOINTS].KBSettingValue)));\r
+               connect(deleteAllBreakpointsAct, SIGNAL(triggered()), this, SLOT(DeleteAllBreakpoints()));\r
+               disableAllBreakpointsAct = new QAction(QIcon(":/res/debug-disableallbreakpoints.png"), tr("&Disable All Breakpoints"), this);\r
+               connect(disableAllBreakpointsAct, SIGNAL(triggered()), this, SLOT(DisableAllBreakpoints()));\r
 \r
                //VideoOutputAct = new QAction(tr("Output Video"), this);\r
                //VideoOutputAct->setStatusTip(tr("Shows the output video window"));\r
 \r
                //VideoOutputAct = new QAction(tr("Output Video"), this);\r
                //VideoOutputAct->setStatusTip(tr("Shows the output video window"));\r
@@ -512,6 +523,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                if (vjs.softTypeDebugger)\r
                {\r
                        debugWindowsMenu = debugMenu->addMenu(tr("&Windows"));\r
                if (vjs.softTypeDebugger)\r
                {\r
                        debugWindowsMenu = debugMenu->addMenu(tr("&Windows"));\r
+                       debugWindowsMenu->addAction(BreakpointsAct);\r
                        debugWindowExceptionMenu = debugWindowsMenu->addMenu(tr("&Exception"));\r
                        debugWindowExceptionMenu->addAction(exceptionVectorTableBrowseAct);\r
                        debugWindowsMenu->addSeparator();\r
                        debugWindowExceptionMenu = debugWindowsMenu->addMenu(tr("&Exception"));\r
                        debugWindowExceptionMenu->addAction(exceptionVectorTableBrowseAct);\r
                        debugWindowsMenu->addSeparator();\r
@@ -548,11 +560,11 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                        debugMenu->addSeparator();\r
                        debugMenu->addAction(traceStepIntoAct);\r
                        debugMenu->addAction(traceStepOverAct);\r
                        debugMenu->addSeparator();\r
                        debugMenu->addAction(traceStepIntoAct);\r
                        debugMenu->addAction(traceStepOverAct);\r
-#if 0\r
                        debugMenu->addSeparator();\r
                        debugNewBreakpointMenu = debugMenu->addMenu(tr("&New Breakpoint"));\r
                        debugMenu->addSeparator();\r
                        debugNewBreakpointMenu = debugMenu->addMenu(tr("&New Breakpoint"));\r
-                       debugNewBreakpointMenu->addAction(newBreakpointFunctionAct);\r
-#endif\r
+                       debugNewBreakpointMenu->addAction(newFunctionBreakpointAct);\r
+                       debugMenu->addAction(deleteAllBreakpointsAct);\r
+                       debugMenu->addAction(disableAllBreakpointsAct);\r
                        //debugMenu->addSeparator();\r
                        //debugMenu->addAction(DasmAct);\r
                }\r
                        //debugMenu->addSeparator();\r
                        //debugMenu->addAction(DasmAct);\r
                }\r
@@ -607,6 +619,8 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                debuggerbar->addSeparator();\r
                debuggerbar->addAction(traceStepIntoAct);\r
                debuggerbar->addAction(traceStepOverAct);\r
                debuggerbar->addSeparator();\r
                debuggerbar->addAction(traceStepIntoAct);\r
                debuggerbar->addAction(traceStepOverAct);\r
+               debuggerbar->addSeparator();\r
+               debuggerbar->addAction(BreakpointsAct);\r
        }\r
 \r
        if (vjs.hardwareTypeAlpine)\r
        }\r
 \r
        if (vjs.hardwareTypeAlpine)\r
@@ -1196,6 +1210,7 @@ void MainWin::TogglePowerState(void)
 \r
                WriteLog("GUI: Resetting Jaguar...\n");\r
                JaguarReset();\r
 \r
                WriteLog("GUI: Resetting Jaguar...\n");\r
                JaguarReset();\r
+               DeleteAllBreakpoints();\r
                DebuggerResetWindows();\r
                DACPauseAudioThread(false);\r
        }\r
                DebuggerResetWindows();\r
                DACPauseAudioThread(false);\r
        }\r
@@ -1258,6 +1273,7 @@ void MainWin::ToggleRunState(void)
                }\r
 \r
                cpuBrowseWin->UnholdBPM();\r
                }\r
 \r
                cpuBrowseWin->UnholdBPM();\r
+               BreakpointsWin->RefreshContents();\r
        }\r
 \r
        // Pause/unpause any running/non-running threads...\r
        }\r
 \r
        // Pause/unpause any running/non-running threads...\r
@@ -1440,10 +1456,36 @@ void MainWin::ToggleCDUsage(void)
 \r
 \r
 //\r
 \r
 \r
 //\r
-void MainWin::NewBreakpointFunction(void)\r
+void MainWin::ShowBreakpointsWin(void)\r
+{\r
+       BreakpointsWin->show();\r
+       BreakpointsWin->RefreshContents();\r
+}\r
+\r
+\r
+//\r
+void MainWin::DeleteAllBreakpoints(void)\r
+{\r
+       cpuBrowseWin->ResetBPM();\r
+       m68k_brk_reset();\r
+       ShowBreakpointsWin();\r
+}\r
+\r
+\r
+//\r
+void MainWin::DisableAllBreakpoints(void)\r
+{\r
+       cpuBrowseWin->DisableBPM();\r
+       m68k_brk_disable();\r
+       ShowBreakpointsWin();\r
+}\r
+\r
+\r
+//\r
+void MainWin::ShowNewFunctionBreakpointWin(void)\r
 {\r
 {\r
-       //brkWin->show();\r
-       //brkWin->RefreshContents();\r
+       NewFunctionBreakpointWin->show();\r
+       ShowBreakpointsWin();\r
 }\r
 \r
 \r
 }\r
 \r
 \r
@@ -1461,7 +1503,7 @@ void MainWin::DebuggerTraceStepInto(void)
 }\r
 \r
 \r
 }\r
 \r
 \r
-// Restart\r
+// Restart the Jaguar executable\r
 void MainWin::DebuggerRestart(void)\r
 {\r
 #if 1\r
 void MainWin::DebuggerRestart(void)\r
 {\r
 #if 1\r
@@ -1471,7 +1513,8 @@ void MainWin::DebuggerRestart(void)
        m68k_set_reg(M68K_REG_SP, vjs.DRAM_size);\r
 #endif\r
        m68k_set_reg(M68K_REG_A6, 0);\r
        m68k_set_reg(M68K_REG_SP, vjs.DRAM_size);\r
 #endif\r
        m68k_set_reg(M68K_REG_A6, 0);\r
-\r
+       m68k_brk_hitcounts_reset();\r
+       bpmHitCounts = 0;\r
        DebuggerResetWindows();\r
        DebuggerRefreshWindows();\r
 #ifdef _MSC_VER\r
        DebuggerResetWindows();\r
        DebuggerRefreshWindows();\r
 #ifdef _MSC_VER\r
@@ -1980,6 +2023,19 @@ void MainWin::ReadUISettings(void)
                size = settings.value("CallStackBrowseWinSize", QSize(400, 400)).toSize();\r
                CallStackBrowseWin->resize(size);\r
 \r
                size = settings.value("CallStackBrowseWinSize", QSize(400, 400)).toSize();\r
                CallStackBrowseWin->resize(size);\r
 \r
+               // Breakpoints UI information\r
+               pos = settings.value("BreakpointsWinPos", QPoint(200, 200)).toPoint();\r
+               BreakpointsWin->move(pos);\r
+               settings.value("BreakpointsWinIsVisible", false).toBool() ? ShowBreakpointsWin() : void();\r
+               size = settings.value("BreakpointsWinSize", QSize(400, 400)).toSize();\r
+               BreakpointsWin->resize(size);\r
+               // New function breakpoint UI information\r
+               pos = settings.value("NewFunctionBreakpointWinPos", QPoint(200, 200)).toPoint();\r
+               NewFunctionBreakpointWin->move(pos);\r
+               settings.value("NewFunctionBreakpointWinIsVisible", false).toBool() ? ShowNewFunctionBreakpointWin() : void();\r
+               size = settings.value("NewFunctionBreakpointWinSize", QSize(400, 400)).toSize();\r
+               NewFunctionBreakpointWin->resize(size);\r
+\r
                // Memories browser UI information\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
                // Memories browser UI information\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
@@ -2180,6 +2236,12 @@ void MainWin::WriteUISettings(void)
                settings.setValue("CallStackBrowseWinPos", CallStackBrowseWin->pos());\r
                settings.setValue("CallStackBrowseWinIsVisible", CallStackBrowseWin->isVisible());\r
                settings.setValue("CallStackBrowseWinSize", CallStackBrowseWin->size());\r
                settings.setValue("CallStackBrowseWinPos", CallStackBrowseWin->pos());\r
                settings.setValue("CallStackBrowseWinIsVisible", CallStackBrowseWin->isVisible());\r
                settings.setValue("CallStackBrowseWinSize", CallStackBrowseWin->size());\r
+               settings.setValue("BreakpointsWinPos", BreakpointsWin->pos());\r
+               settings.setValue("BreakpointsWinIsVisible", BreakpointsWin->isVisible());\r
+               settings.setValue("BreakpointsWinSize", BreakpointsWin->size());\r
+               settings.setValue("NewFunctionBreakpointWinPos", NewFunctionBreakpointWin->pos());\r
+               settings.setValue("NewFunctionBreakpointWinIsVisible", NewFunctionBreakpointWin->isVisible());\r
+               settings.setValue("NewFunctionBreakpointWinSize", NewFunctionBreakpointWin->size());\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
                        sprintf(mem1Name, "mem1BrowseWinPos[%i]", (unsigned int)i);\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
                        sprintf(mem1Name, "mem1BrowseWinPos[%i]", (unsigned int)i);\r
@@ -2216,6 +2278,7 @@ void MainWin::DebuggerResetWindows(void)
                FilesrcListWin->Reset();\r
                allWatchBrowseWin->Reset();\r
                heapallocatorBrowseWin->Reset();\r
                FilesrcListWin->Reset();\r
                allWatchBrowseWin->Reset();\r
                heapallocatorBrowseWin->Reset();\r
+               BreakpointsWin->Reset();\r
 \r
                //ResetAlpineWindows();\r
        }\r
 \r
                //ResetAlpineWindows();\r
        }\r
@@ -2237,6 +2300,7 @@ void MainWin::DebuggerRefreshWindows(void)
                LocalBrowseWin->RefreshContents();\r
                CallStackBrowseWin->RefreshContents();\r
                heapallocatorBrowseWin->RefreshContents();\r
                LocalBrowseWin->RefreshContents();\r
                CallStackBrowseWin->RefreshContents();\r
                heapallocatorBrowseWin->RefreshContents();\r
+               BreakpointsWin->RefreshContents();\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
                        mem1BrowseWin[i]->RefreshContents(i);\r
                for (i = 0; i < vjs.nbrmemory1browserwindow; i++)\r
                {\r
                        mem1BrowseWin[i]->RefreshContents(i);\r
index 2e41579..a7d36af 100644 (file)
@@ -43,7 +43,8 @@ class LocalBrowserWindow;
 class CallStackBrowserWindow;\r
 class HeapAllocatorBrowserWindow;\r
 class Memory1BrowserWindow;\r
 class CallStackBrowserWindow;\r
 class HeapAllocatorBrowserWindow;\r
 class Memory1BrowserWindow;\r
-//class BrkWindow;\r
+class BreakpointsWindow;\r
+class NewFnctBreakpointWindow;\r
 class ExceptionVectorTableBrowserWindow;\r
 class FilesrcListWindow;\r
 \r
 class ExceptionVectorTableBrowserWindow;\r
 class FilesrcListWindow;\r
 \r
@@ -100,7 +101,10 @@ class MainWin: public QMainWindow
                void ShowHeapAllocatorBrowserWin(void);\r
                void ShowMemory1BrowserWin(int NumWin);\r
                void ShowExceptionVectorTableBrowserWin(void);\r
                void ShowHeapAllocatorBrowserWin(void);\r
                void ShowMemory1BrowserWin(int NumWin);\r
                void ShowExceptionVectorTableBrowserWin(void);\r
-               void NewBreakpointFunction(void);\r
+               void ShowNewFunctionBreakpointWin(void);\r
+               void ShowBreakpointsWin(void);\r
+               void DeleteAllBreakpoints(void);\r
+               void DisableAllBreakpoints(void);\r
                //void ShowVideoOutputWin(void);\r
                //void ShowDasmWin(void);\r
                // Alpine\r
                //void ShowVideoOutputWin(void);\r
                //void ShowDasmWin(void);\r
                // Alpine\r
@@ -149,7 +153,8 @@ class MainWin: public QMainWindow
                GPUDasmWindow *GPUDasmWin;\r
                DSPDasmWindow *DSPDasmWin;\r
                FilesrcListWindow *FilesrcListWin;\r
                GPUDasmWindow *GPUDasmWin;\r
                DSPDasmWindow *DSPDasmWin;\r
                FilesrcListWindow *FilesrcListWin;\r
-               //BrkWindow *brkWin;\r
+               BreakpointsWindow *BreakpointsWin;\r
+               NewFnctBreakpointWindow *NewFunctionBreakpointWin;\r
                QTimer *timer;\r
                bool running;\r
                int zoomLevel;\r
                QTimer *timer;\r
                bool running;\r
                int zoomLevel;\r
@@ -205,9 +210,6 @@ class MainWin: public QMainWindow
                QAction *emustatusAct;\r
                QAction *useCDAct;\r
                QAction *frameAdvanceAct;\r
                QAction *emustatusAct;\r
                QAction *useCDAct;\r
                QAction *frameAdvanceAct;\r
-               QAction *traceStepOverAct;\r
-               QAction *traceStepIntoAct;\r
-               QAction *restartAct;\r
                QAction *fullScreenAct;\r
                //QAction *DasmAct;\r
                QAction *screenshotAct;\r
                QAction *fullScreenAct;\r
                //QAction *DasmAct;\r
                QAction *screenshotAct;\r
@@ -221,13 +223,19 @@ class MainWin: public QMainWindow
                QAction *riscDasmBrowseAct;\r
 \r
                // Debugger\r
                QAction *riscDasmBrowseAct;\r
 \r
                // Debugger\r
+               QAction *traceStepOverAct;\r
+               QAction *traceStepIntoAct;\r
+               QAction *restartAct;\r
                //QAction *VideoOutputAct;\r
                QAction *heapallocatorBrowseAct;\r
                QAction *allWatchBrowseAct;\r
                QAction *LocalBrowseAct;\r
                QAction *CallStackBrowseAct;\r
                QAction **mem1BrowseAct;\r
                //QAction *VideoOutputAct;\r
                QAction *heapallocatorBrowseAct;\r
                QAction *allWatchBrowseAct;\r
                QAction *LocalBrowseAct;\r
                QAction *CallStackBrowseAct;\r
                QAction **mem1BrowseAct;\r
-               //QAction *newBreakpointFunctionAct;\r
+               QAction *newFunctionBreakpointAct;\r
+               QAction *BreakpointsAct;\r
+               QAction *deleteAllBreakpointsAct;\r
+               QAction *disableAllBreakpointsAct;\r
                QAction *exceptionVectorTableBrowseAct;\r
 \r
                QIcon powerGreen;\r
                QAction *exceptionVectorTableBrowseAct;\r
 \r
                QIcon powerGreen;\r
index 5f6fbd3..ddedc8f 100644 (file)
@@ -50,5 +50,8 @@
        <file>../../res/debug-callstack.png</file>      \r
        <file>../../res/debug-memory.png</file>\r
        <file>../../res/screenshot.png</file>\r
        <file>../../res/debug-callstack.png</file>      \r
        <file>../../res/debug-memory.png</file>\r
        <file>../../res/screenshot.png</file>\r
+       <file>../../res/debug-breakpoints.png</file>\r
+       <file>../../res/debug-deleteallbreakpoints.png</file>\r
+       <file>../../res/debug-disableallbreakpoints.png</file>\r
 </qresource>\r
 </RCC>\r
 </qresource>\r
 </RCC>\r
index 90c35c9..fe3aa9b 100644 (file)
@@ -14,6 +14,7 @@
 // ---  ----------  -----------------------------------------------------------
 // JLH  11/25/2009  Major rewrite of memory subsystem and handlers
 // JPM  09/04/2018  Added the new Models and BIOS handler
 // ---  ----------  -----------------------------------------------------------
 // JLH  11/25/2009  Major rewrite of memory subsystem and handlers
 // JPM  09/04/2018  Added the new Models and BIOS handler
+// JPM  10/13/2018  Added breakpoints features
 //
 
 
 //
 
 
@@ -43,7 +44,7 @@
 #include "mmu.h"
 #include "settings.h"
 #include "tom.h"
 #include "mmu.h"
 #include "settings.h"
 #include "tom.h"
-//#include "debugger/brkWin.h"
+//#include "debugger/BreakpointsWin.h"
 #ifdef NEWMODELSBIOSHANDLER
 #include "modelsBIOS.h"
 #endif
 #ifdef NEWMODELSBIOSHANDLER
 #include "modelsBIOS.h"
 #endif
@@ -119,8 +120,10 @@ bool startM68KTracing = false;
 // Breakpoint on memory access vars (exported)
 bool bpmActive = false;
 bool bpmSaveActive = false;
 // Breakpoint on memory access vars (exported)
 bool bpmActive = false;
 bool bpmSaveActive = false;
+size_t bpmHitCounts;
 uint32_t bpmAddress1;
 uint32_t bpmAddress1;
-//BrkInfo bpm;
+S_BrkInfo *brkInfo;
+size_t brkNbr;
 
 
 //
 
 
 //
@@ -1048,12 +1051,139 @@ void   M68K_Debughalt(void)
 #endif
 
 
 #endif
 
 
-// 
+// M68000 breakpoints initialisations
+void m68k_brk_init(void)
+{
+       brkNbr = 0;
+       brkInfo = NULL;
+}
+
+
+// Reset the M68000 breakpoints structures
+void m68k_brk_reset(void)
+{
+       // Reset the breakpoints
+       free(brkInfo);
+       brkInfo = NULL;
+       brkNbr = 0;
+}
+
+
+// Delete a M68000 breakpoint (starting from 1)
+void m68k_brk_del(unsigned int NumBrk)
+{
+       // Remove the breakpoint
+       memset((void *)(brkInfo + (NumBrk - 1)), 0, sizeof(S_BrkInfo));
+}
+
+
+// Add a M68000 breakpoint
+// return true if breakpoint has been added, and false if breakpoint already exists
+unsigned int m68k_brk_add(void *PtrInfo)
+{
+       S_BrkInfo *Ptr = NULL;
+
+       // Check if breakpoint already exists
+       for (size_t i = 0; i < brkNbr; i++)
+       {
+               if (brkInfo[i].Used)
+               {
+                       if (brkInfo[i].Adr == ((S_BrkInfo *)PtrInfo)->Adr)
+                       {
+                               return false;
+                       }
+               }
+       }
+
+       // Look for an available breakpoint
+       for (size_t i = 0; i < brkNbr, Ptr; i++)
+       {
+               if (!brkInfo[i].Used)
+               {
+                       Ptr = &brkInfo[i];
+               }
+       }
+
+       // Add a breakpoint
+       if (!Ptr)
+       {
+               brkInfo = (S_BrkInfo *)realloc(brkInfo, (++brkNbr * sizeof(S_BrkInfo)));
+               Ptr = &brkInfo[brkNbr - 1];
+       }
+
+       // Transfert the breakpoint information and init the activities
+       memcpy((void *)Ptr, PtrInfo, sizeof(S_BrkInfo));
+       Ptr->HitCounts = 0;
+       return (Ptr->Active = Ptr->Used = true);
+}
+
+
+// Check if breakpoint has been reached
+unsigned int m68k_brk_check(unsigned int adr)
+{
+       // Check if BPM has been reached
+       if ((adr == bpmAddress1) && bpmActive)
+       {
+               bpmHitCounts++;
+               return true;
+       }
+       else
+       {
+               // Check user breakpoints
+               for (size_t i = 0; i < brkNbr; i++)
+               {
+                       if (brkInfo[i].Used && brkInfo[i].Active)
+                       {
+                               if (brkInfo[i].Adr == adr)
+                               {
+                                       brkInfo[i].HitCounts++;
+                                       return true;
+                               }
+                       }
+               }
+       }
+
+       // No breakpoint found
+       return false;
+}
+
+
+// Disable the M68000 breakpoints
+void m68k_brk_disable(void)
+{
+       // reset active for the breakpoints
+       for (size_t i = 0; i < brkNbr; i++)
+       {
+               brkInfo[i].Active = 0;
+       }
+}
+
+
+// Reset the M68000 breakpoints
+void m68k_brk_hitcounts_reset(void)
+{
+       // reset hit counts for the breakpoints
+       for (size_t i = 0; i < brkNbr; i++)
+       {
+               brkInfo[i].HitCounts = 0;
+       }
+}
+
+
+// Close the M68000 breakpoints structures
+void m68k_brk_close(void)
+{
+       free(brkInfo);
+}
+
+
+// Read 1 byte from address
+// Check if address reaches a breakpoint
 unsigned int m68k_read_memory_8(unsigned int address)
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
 unsigned int m68k_read_memory_8(unsigned int address)
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && address == bpmAddress1)
+       if (!startM68KTracing && m68k_brk_check(address))
        {
                M68KDebugHalt();
        }
        {
                M68KDebugHalt();
        }
@@ -1145,7 +1275,7 @@ unsigned int m68k_read_memory_16(unsigned int address)
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && (address == bpmAddress1))
+       if (!startM68KTracing && m68k_brk_check(address))
        {
                M68KDebugHalt();
        }
        {
                M68KDebugHalt();
        }
@@ -1292,7 +1422,7 @@ unsigned int m68k_read_memory_32(unsigned int address)
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
 {
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && address == bpmAddress1)
+       if (!startM68KTracing && m68k_brk_check(address))
        {
                M68KDebugHalt();
        }
        {
                M68KDebugHalt();
        }
@@ -2213,6 +2343,7 @@ memset(jaguarMainRAM + 0x804, 0xFF, 4);
        TOMInit();
        JERRYInit();
        CDROMInit();
        TOMInit();
        JERRYInit();
        CDROMInit();
+       m68k_brk_init();
 }
 
 
 }
 
 
@@ -2258,7 +2389,6 @@ void JaguarReset(void)
        CDROMReset();
     m68k_pulse_reset();                                                                // Reset the 68000
        WriteLog("Jaguar: 68K reset. PC=%06X SP=%08X\n", m68k_get_reg(NULL, M68K_REG_PC), m68k_get_reg(NULL, M68K_REG_A7));
        CDROMReset();
     m68k_pulse_reset();                                                                // Reset the 68000
        WriteLog("Jaguar: 68K reset. PC=%06X SP=%08X\n", m68k_get_reg(NULL, M68K_REG_PC), m68k_get_reg(NULL, M68K_REG_A7));
-
        lowerField = false;                                                             // Reset the lower field flag
 //     SetCallbackTime(ScanlineCallback, 63.5555);
 //     SetCallbackTime(ScanlineCallback, 31.77775);
        lowerField = false;                                                             // Reset the lower field flag
 //     SetCallbackTime(ScanlineCallback, 63.5555);
 //     SetCallbackTime(ScanlineCallback, 31.77775);
@@ -2368,6 +2498,7 @@ void JaguarDone(void)
        DSPDone();
        TOMDone();
        JERRYDone();
        DSPDone();
        TOMDone();
        JERRYDone();
+       m68k_brk_close();
 
        // temp, until debugger is in place
 //00802016: jsr     $836F1A.l
 
        // temp, until debugger is in place
 //00802016: jsr     $836F1A.l
index d074dea..76f47db 100644 (file)
@@ -4,12 +4,26 @@
 #include <stdint.h>
 #include "memory.h"                                                    // For "UNKNOWN" enum
 
 #include <stdint.h>
 #include "memory.h"                                                    // For "UNKNOWN" enum
 
+// Breakpoint struture
+typedef struct BrkInfo
+{
+       bool Used;                                      // Allocated breakpoint
+       bool Active;                            // Active breakpoint
+       char *Name;                                     // Functions's name
+       char *Filename;                         // Source filename
+       char *LineSrc;                          // Source code line
+       size_t NumLine;                         // Line number
+       size_t Adr;                                     // Breakpoint address
+       size_t HitCounts;                       // Hit counts
+}S_BrkInfo;
+
 void JaguarSetScreenBuffer(uint32_t * buffer);
 void JaguarSetScreenPitch(uint32_t pitch);
 void JaguarSetScreenBuffer(uint32_t * buffer);
 void JaguarSetScreenPitch(uint32_t pitch);
-void JaguarInit(void);
-void JaguarReset(void);
-void JaguarDone(void);
+extern void JaguarInit(void);
+extern void JaguarReset(void);
+extern void JaguarDone(void);
 
 
+// Memory functions
 uint8_t JaguarReadByte(uint32_t offset, uint32_t who = UNKNOWN);
 uint16_t JaguarReadWord(uint32_t offset, uint32_t who = UNKNOWN);
 uint32_t JaguarReadLong(uint32_t offset, uint32_t who = UNKNOWN);
 uint8_t JaguarReadByte(uint32_t offset, uint32_t who = UNKNOWN);
 uint16_t JaguarReadWord(uint32_t offset, uint32_t who = UNKNOWN);
 uint32_t JaguarReadLong(uint32_t offset, uint32_t who = UNKNOWN);
@@ -31,8 +45,11 @@ extern uint32_t jaguarMainROMCRC32, jaguarROMSize, jaguarRunAddress;
 extern char * jaguarEepromsPath;
 extern bool jaguarCartInserted;
 extern bool bpmActive, bpmSaveActive;
 extern char * jaguarEepromsPath;
 extern bool jaguarCartInserted;
 extern bool bpmActive, bpmSaveActive;
+extern size_t bpmHitCounts;
 extern uint32_t bpmAddress1;
 extern bool startM68KTracing;
 extern uint32_t bpmAddress1;
 extern bool startM68KTracing;
+extern S_BrkInfo *brkInfo;
+extern size_t brkNbr;
 
 // Various clock rates
 
 
 // Various clock rates
 
index 3a9c869..95977ea 100644 (file)
@@ -135,6 +135,16 @@ int m68k_cycles_remaining(void);        // Number of cycles left
 void m68k_modify_timeslice(int cycles); // Modify cycles left
 void m68k_end_timeslice(void);          // End timeslice now
 
 void m68k_modify_timeslice(int cycles); // Modify cycles left
 void m68k_end_timeslice(void);          // End timeslice now
 
+// Breakpoints functions
+extern void m68k_brk_init(void);
+extern void m68k_brk_hitcounts_reset(void);
+extern unsigned int m68k_brk_add(void *PtrInfo);
+extern void m68k_brk_del(unsigned int NumBrk);
+extern void m68k_brk_disable(void);
+extern void m68k_brk_reset(void);
+extern void m68k_brk_close(void);
+extern unsigned int m68k_brk_check(unsigned int adr);
+
 #ifdef __cplusplus
 }
 #endif
 #ifdef __cplusplus
 }
 #endif
index e66a3b0..788be89 100644 (file)
@@ -120,11 +120,12 @@ HEADERS = \
        src/debugger/DWARFManager.h \\r
        src/debugger/memory1browser.h \\r
        src/debugger/heapallocatorbrowser.h \\r
        src/debugger/DWARFManager.h \\r
        src/debugger/memory1browser.h \\r
        src/debugger/heapallocatorbrowser.h \\r
-       src/debugger/brkWin.h \\r
+       src/debugger/BreakpointsWin.h \\r
        src/debugger/VideoWin.h \r
        src/debugger/FilesrcListWin.h \\r
        src/debugger/callstackbrowser.h \\r
        src/debugger/exceptionvectortablebrowser.h \\r
        src/debugger/VideoWin.h \r
        src/debugger/FilesrcListWin.h \\r
        src/debugger/callstackbrowser.h \\r
        src/debugger/exceptionvectortablebrowser.h \\r
+       src/debugger/NewFnctBreakpointWin.h \\r
        src/log.h \\r
        src/unzip.h \\r
        src/crc32.h \\r
        src/log.h \\r
        src/unzip.h \\r
        src/crc32.h \\r
@@ -172,11 +173,12 @@ SOURCES = \
        src/debugger/DWARFManager.cpp \\r
        src/debugger/memory1browser.cpp \\r
        src/debugger/heapallocatorbrowser.cpp \\r
        src/debugger/DWARFManager.cpp \\r
        src/debugger/memory1browser.cpp \\r
        src/debugger/heapallocatorbrowser.cpp \\r
-       src/debugger/brkWin.cpp \\r
+       src/debugger/BreakpointsWin.cpp \\r
        src/debugger/VideoWin.cpp \\r
        src/debugger/FilesrcListWin.cpp \\r
        src/debugger/exceptionvectortablebrowser.cpp \\r
        src/debugger/callstackbrowser.cpp \\r
        src/debugger/VideoWin.cpp \\r
        src/debugger/FilesrcListWin.cpp \\r
        src/debugger/exceptionvectortablebrowser.cpp \\r
        src/debugger/callstackbrowser.cpp \\r
+       src/debugger/NewFnctBreakpointWin.cpp \\r
        src/log.cpp \\r
        src/unzip.cpp \\r
        src/crc32.cpp \\r
        src/log.cpp \\r
        src/unzip.cpp \\r
        src/crc32.cpp \\r