]> Shamusworld >> Repos - thunder/commitdiff
Scrubbed all traces of BYTE, WORD, & DWORD out of the code, remove
authorShamus Hammons <jlhamm@acm.org>
Thu, 23 Jul 2009 19:59:46 +0000 (19:59 +0000)
committerShamus Hammons <jlhamm@acm.org>
Thu, 23 Jul 2009 19:59:46 +0000 (19:59 +0000)
unnecessary v6809 core files.

makefile
res/thunder.rc
src/gui.cpp
src/gui.h
src/resource.h
src/thunder.cpp
src/types.h
src/v6809.cpp
src/v6809.h
src/v6809b.cpp [deleted file]
src/v6809b.h [deleted file]

index 4b5bfdf8fb3dc8aafc3263df065a82eff9c5fd80..d0f50c77a5ca82642866676960ae870d82af7cb5 100755 (executable)
--- a/makefile
+++ b/makefile
@@ -117,7 +117,7 @@ obj/%.o: src/%.cpp
        @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@
 
 obj/%.o: src/%.asm
-       nasm -f elf32 -I res/ $< -o $@
+       nasm -f elf32 -I ./res/ $< -o $@
 # *** sigh *** yet another variable... !!! FIX !!!
 #      nasm -f coff $< -o $@
 
index f7a921751f1ae08361b1a86ce56b0d850a30b268..22b02cc6e95301774e14f5804d2081f2d73549df 100755 (executable)
@@ -1,9 +1,9 @@
-#include "winresrc.h"\r
-\r
-//\r
-// Icon\r
-//\r
-\r
-// Icon with lowest ID value placed first to ensure application icon\r
-// remains consistent on all systems.\r
-IDI_ICON1               ICON    DISCARDABLE     "stargem2.ico"\r
+#include "winresrc.h"
+
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1               ICON    DISCARDABLE     "thunder.ico"
index 2305ea6e7eb3f10bc76fb82030829c5249f6667f..cd21ca586bd5c05e9dfcc7ac11468edf49e6e33b 100755 (executable)
 // JLH  07/23/2009  Added changelog ;-)
 //
 
+#include "gui.h"
+
 #include <string>
 #include <fstream>       // Needed for tracelog
-#include "SDL.h"         // Needed for screen.h
+//#include "SDL.h"         // Needed for screen.h
 #include "screen.h"
-#include "gui.h"
 #include "resource.h"    // Thunder graphics & sounds
 
 using namespace std;                                   // Yes!
@@ -24,34 +25,34 @@ using namespace std;                                        // Yes!
 
 extern SDL_Surface * screen;
 
-extern BYTE my_scr[0x14000];                                                   // Screen buffer...
-extern BYTE * gram1;                                                                   // Game RAM (do here??)
-extern BYTE hScrollOffset;                                                             // Horizontal scroll offset
-extern BYTE vScrollOffset;                                                             // Vertical scroll offset
-extern DWORD voffsets[8];
-extern BYTE * voice_rom;                                                               // PCM data pointer
+extern uint8 my_scr[0x14000];                                                  // Screen buffer...
+extern uint8 * gram1;                                                                  // Game RAM (do here??)
+extern uint8 hScrollOffset;                                                            // Horizontal scroll offset
+extern uint8 vScrollOffset;                                                            // Vertical scroll offset
+extern uint32 voffsets[8];
+extern uint8 * voice_rom;                                                              // PCM data pointer
 extern fstream tr;                                                                             // Tracelog
 
 // Global shit
 
-WORD text_life;          // How long text is visible
+uint16 text_life;          // How long text is visible
 bool show_text;          // Whether or not to show text
-WORD show_which_msg;     // Which message to show
+uint16 show_which_msg;     // Which message to show
 bool show_gui;           // Whether or not to show GUI
-WORD selection;          // Which GUI item currently selected
-WORD snd_num;
-WORD gui_debounce;       // GUI key debounce value
-WORD num_coins;          // Number of coins dropped
-WORD blink = 0;          // Used to blink player 1 & 2 start buttons
-WORD flash = 23;         // Used to flash GUI lights
-WORD iline = 0;          // Used to roll line
-WORD dcurcol = 179;      // dipswitch cursor color
+uint16 selection;          // Which GUI item currently selected
+uint16 snd_num;
+uint16 gui_debounce;       // GUI key debounce value
+uint16 num_coins;          // Number of coins dropped
+uint16 blink = 0;          // Used to blink player 1 & 2 start buttons
+uint16 flash = 23;         // Used to flash GUI lights
+uint16 iline = 0;          // Used to roll line
+uint16 dcurcol = 179;      // dipswitch cursor color
 int  dcurdir = 1;        // Initially going up...
 bool blink_on = false;
 bool game_refresh;       // Refresh rate user set
 bool do_decrement;       // Flag to handle decrement...
 bool user_selected_something;  // Flag for well, you know...
-WORD dswitch;            // Which dipswitch is selected...
+uint16 dswitch;            // Which dipswitch is selected...
 
 // The following are global for the sound routines...
 
@@ -59,7 +60,7 @@ const float sampleBase = 22050.0/6000.0;  // Btwn 5512.5 and 6000
 bool snd_go = false;
 bool chan1_go = false, chan2_go = false, chan3_go = false;
 bool chan4_go = false, chan5_go = false, chan6_go = false;
-BYTE * sndp1, * sndp2, * sndp3, * sndp4, * sndp5, * sndp6;
+uint8 * sndp1, * sndp2, * sndp3, * sndp4, * sndp5, * sndp6;
 uint32 rom_pos, end_pos;
 uint32 spos1, end_pos1;
 uint32 spos2, end_pos2;
@@ -74,12 +75,12 @@ float sample2;
 uint8 prevSamp2;
 int8 delta_x2;
 
-BYTE * snd_array[3] = { sunknown, scya, scamera }; // From RESOURCE.H
-DWORD snd_lens[3]   = { sunknownlen, scyalen, scameralen };
+uint8 * snd_array[3] = { sunknown, scya, scamera }; // From RESOURCE.H
+uint32 snd_lens[3]   = { sunknownlen, scyalen, scameralen };
 
 // Bitmaps
 
-BYTE bmp1[] = {
+uint8 bmp1[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,
   0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,
@@ -88,7 +89,7 @@ BYTE bmp1[] = {
   0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-BYTE bmp2[] = {
+uint8 bmp2[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,
   0,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,
@@ -97,7 +98,7 @@ BYTE bmp2[] = {
   0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-BYTE bmp3[] = {
+uint8 bmp3[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,
@@ -106,7 +107,7 @@ BYTE bmp3[] = {
   0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,0,1,1,1,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
   };
-BYTE boptions[] = { // 35x9
+uint8 boptions[] = { // 35x9
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -117,7 +118,7 @@ BYTE boptions[] = { // 35x9
   0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,
   0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-BYTE bn0[] = {
+uint8 bn0[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -126,7 +127,7 @@ BYTE bn0[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn1[] = {
+uint8 bn1[] = {
   0,0,0,0,0,0,
   0,0,1,0,0,0,
   0,1,1,0,0,0,
@@ -135,7 +136,7 @@ BYTE bn1[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn2[] = {
+uint8 bn2[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,0,0,0,1,0,
@@ -144,7 +145,7 @@ BYTE bn2[] = {
   0,1,1,1,1,0,
   0,0,0,0,0,0
   };
-BYTE bn3[] = {
+uint8 bn3[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,0,0,0,1,0,
@@ -153,7 +154,7 @@ BYTE bn3[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn4[] = {
+uint8 bn4[] = {
   0,0,0,0,0,0,
   0,0,0,1,0,0,
   0,1,0,1,0,0,
@@ -162,7 +163,7 @@ BYTE bn4[] = {
   0,0,0,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn5[] = {
+uint8 bn5[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -171,7 +172,7 @@ BYTE bn5[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn6[] = {
+uint8 bn6[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,0,0,
@@ -180,7 +181,7 @@ BYTE bn6[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn7[] = {
+uint8 bn7[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,0,0,0,1,0,
@@ -189,7 +190,7 @@ BYTE bn7[] = {
   0,0,1,0,0,0,
   0,0,0,0,0,0
   };
-BYTE bn8[] = {
+uint8 bn8[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -198,7 +199,7 @@ BYTE bn8[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bn9[] = {
+uint8 bn9[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -207,7 +208,7 @@ BYTE bn9[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bnA[] = {
+uint8 bnA[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -216,7 +217,7 @@ BYTE bnA[] = {
   0,1,0,0,1,0,
   0,0,0,0,0,0
   };
-BYTE bnB[] = {
+uint8 bnB[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,1,0,0,1,0,
@@ -225,7 +226,7 @@ BYTE bnB[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bnC[] = {
+uint8 bnC[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -234,7 +235,7 @@ BYTE bnC[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bnD[] = {
+uint8 bnD[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,1,0,0,1,0,
@@ -243,7 +244,7 @@ BYTE bnD[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-BYTE bnE[] = {
+uint8 bnE[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -252,7 +253,7 @@ BYTE bnE[] = {
   0,1,1,1,1,0,
   0,0,0,0,0,0
   };
-BYTE bnF[] = {
+uint8 bnF[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -321,16 +322,16 @@ void DeactivateGUI(void)  { show_gui = false; }
 //
 // Draw the small icons...
 //
-void DrawSmallIcons(WORD icon_not_to_draw)
+void DrawSmallIcons(uint16 icon_not_to_draw)
 {
-  BYTE * iconmem;
-  BYTE xl, yl;
-  BYTE * sIcons[12] = { inoguis, icoinus, ipl1sts, ipl2sts, ii30hzs, ii60hzs,
+  uint8 * iconmem;
+  uint8 xl, yl;
+  uint8 * sIcons[12] = { inoguis, icoinus, ipl1sts, ipl2sts, ii30hzs, ii60hzs,
                         idipsws, ichecks, ikeycns, isnapss, iresets, ibyebys };
-  BYTE xlens[12] = { 31, 18, 32, 35, 37, 37, 29, 23, 28, 32, 19, 19 };
-  BYTE ylens[12] = { 31, 18, 19, 19, 21, 21, 23, 20, 16, 17, 20, 23 };
-  BYTE xpos[11] = { 33, 48, 63, 78, 104, 0, 184, 210, 225, 240, 255 };
-  BYTE iconidx[11] = { 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 6 };
+  uint8 xlens[12] = { 31, 18, 32, 35, 37, 37, 29, 23, 28, 32, 19, 19 };
+  uint8 ylens[12] = { 31, 18, 19, 19, 21, 21, 23, 20, 16, 17, 20, 23 };
+  uint8 xpos[11] = { 33, 48, 63, 78, 104, 0, 184, 210, 225, 240, 255 };
+  uint8 iconidx[11] = { 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 6 };
 
   if (game_refresh)  iconidx[9] = 5;       // 60 Hz...
 
@@ -338,44 +339,44 @@ void DrawSmallIcons(WORD icon_not_to_draw)
 
   for(int i=0; i<5; i++)
   {
-    WORD idx = i + icon_not_to_draw;          // Get correct start pos.
+    uint16 idx = i + icon_not_to_draw;          // Get correct start pos.
     if (idx > 10)  idx -= 11;
 
     iconmem = sIcons[iconidx[idx]];
     xl = xlens[iconidx[idx]];  yl = ylens[iconidx[idx]];
 
-    DWORD scadr = hScrollOffset + voffsets[vScrollOffset];
+    uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
     scadr += 320*((224-yl)/2);                // Center vertically
     scadr += xpos[i] - (xl/2);                // Center around horiz. pos.
-    WORD bmpptr = 0;
+    uint16 bmpptr = 0;
 
     for(int yy=0; yy<yl; yy++)
     {
       for(int xx=0; xx<xl; xx++)
       {
-        BYTE b = iconmem[bmpptr++];
+        uint8 b = iconmem[bmpptr++];
         if (b)  my_scr[scadr+xx+yy*320] = b;
       }
     }
   }
   for(int i=10; i>5; i--)
   {
-    WORD idx = i + icon_not_to_draw;          // Get correct start pos.
+    uint16 idx = i + icon_not_to_draw;          // Get correct start pos.
     if (idx > 10)  idx -= 11;
 
     iconmem = sIcons[iconidx[idx]];
     xl = xlens[iconidx[idx]];  yl = ylens[iconidx[idx]];
 
-    DWORD scadr = hScrollOffset + voffsets[vScrollOffset];
+    uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
     scadr += 320*((224-yl)/2);                // Center vertically
     scadr += xpos[i] - (xl/2);     // Center around horiz. pos.
-    WORD bmpptr = 0;
+    uint16 bmpptr = 0;
 
     for(int yy=0; yy<yl; yy++)
     {
       for(int xx=0; xx<xl; xx++)
       {
-        BYTE b = iconmem[bmpptr++];
+        uint8 b = iconmem[bmpptr++];
         if (b)  my_scr[scadr+xx+yy*320] = b;
       }
     }
@@ -385,16 +386,16 @@ void DrawSmallIcons(WORD icon_not_to_draw)
 //
 // Draw the large (selected) icon
 //
-void DrawLargeIcon(WORD icon)
+void DrawLargeIcon(uint16 icon)
 {
-  BYTE * iconmem;
-  BYTE xl, yl;
-  BYTE * lIcons[11] = { inoguib, icoinub, ipl1stb, ipl2stb, ii30hzb, ii60hzb,
+  uint8 * iconmem;
+  uint8 xl, yl;
+  uint8 * lIcons[11] = { inoguib, icoinub, ipl1stb, ipl2stb, ii30hzb, ii60hzb,
                         idipswb, ikeycnb, isnapsb, iresetb, ibyebyb };
-  BYTE xlens[11] = { 44, 45, 50, 52, 59, 59, 42, 45, 48, 58, 42 };
-  BYTE ylens[11] = { 44, 40, 33, 29, 52, 52, 34, 45, 37, 40, 50 };
+  uint8 xlens[11] = { 44, 45, 50, 52, 59, 59, 42, 45, 48, 58, 42 };
+  uint8 ylens[11] = { 44, 40, 33, 29, 52, 52, 34, 45, 37, 40, 50 };
 
-  BYTE gsubs1[24] = { 21, 21, 20, 19, 168, 168, 31, 155, 68, 68, 67, 66,
+  uint8 gsubs1[24] = { 21, 21, 20, 19, 168, 168, 31, 155, 68, 68, 67, 66,
                       36, 36, 35, 34, 188, 188, 183, 181, 81, 81, 85, 80 },
        gsubs2[24] = { 20, 20, 19, 19, 31,  31,  155, 155, 67, 67, 66, 66,
                       35, 35, 34, 34, 183, 183, 181, 181, 85, 85, 80, 80 },
@@ -423,16 +424,16 @@ void DrawLargeIcon(WORD icon)
     xl = xlens[6];  yl = ylens[6];
   }
 
-  DWORD scadr = hScrollOffset + voffsets[vScrollOffset];
+  uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
   scadr += 320*((224-yl)/2);                // Center vertically
   scadr += (288-xl)/2;                      // Center horizontally
-  WORD bmpptr = 0;
+  uint16 bmpptr = 0;
 
   for(int yy=0; yy<yl; yy++)
   {
     for(int xx=0; xx<xl; xx++)
     {
-      BYTE b = iconmem[bmpptr++];
+      uint8 b = iconmem[bmpptr++];
       if (b)
       {
         if ((icon == PL1START) && (b == 235) && (num_coins) && !blink_on)
@@ -442,7 +443,7 @@ void DrawLargeIcon(WORD icon)
                                 36,35,34; 188,183,181; 81,85,80 */
         if (icon == NOGUI)
         {
-          BYTE fln = (23 - flash) + 1; // Want to go forward (maybe fix it?)
+          uint8 fln = (23 - flash) + 1; // Want to go forward (maybe fix it?)
           switch (b)
           {
             case 36:   { b = gsubs1[fln];  break; }
@@ -471,21 +472,21 @@ void DrawLargeIcon(WORD icon)
 //
 void DrawDipswitch(void)
 {
-  BYTE dseloff[16] = { 0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 11, 12 };
-  BYTE * dtxt[13] = { idstext1, idstext2, idstext3, idstext4, idstext5,
+  uint8 dseloff[16] = { 0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 11, 12 };
+  uint8 * dtxt[13] = { idstext1, idstext2, idstext3, idstext4, idstext5,
                       idstext2, idstext6, idstext7, idstext8, idstext9,
                       idstext10, idstext11, idstext12 };
 
-  BYTE dtx[13] = { 48, 80, 96, 82, 60, 80, 76, 57, 33, 50, 62, 65, 63 },
+  uint8 dtx[13] = { 48, 80, 96, 82, 60, 80, 76, 57, 33, 50, 62, 65, 63 },
        dty[13] = { 7, 9, 7, 9, 7, 9, 7, 7, 7, 9, 7, 9, 7 };
-  DWORD dtxtoff[13] = { 4*320+24, 14*320-78, 25*320+24, 32*320-80,
+  uint32 dtxtoff[13] = { 4*320+24, 14*320-78, 25*320+24, 32*320-80,
                         39*320+24, 49*320-78,
                         4*320+24, 11*320-55, 18*320+24, 25*320-48,
                         32*320+24, 42*320-63, 53*320+24 };
-  DWORD scadr, bmpptr;
+  uint32 scadr, bmpptr;
   //dsx = //26x65
 
-  DWORD dbase = hScrollOffset + voffsets[vScrollOffset];
+  uint32 dbase = hScrollOffset + voffsets[vScrollOffset];
   dbase += (288-26)/2;                 // Center horizontally
   dbase += 320*((224-((65*2)+8))/2);   // Center vertically
 
@@ -495,7 +496,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<26; xx++)
     {
-      BYTE b = idswitch[bmpptr++];
+      uint8 b = idswitch[bmpptr++];
       if (b)  my_scr[scadr+xx+yy*320] = b;
     }
   }
@@ -505,7 +506,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<26; xx++)
     {
-      BYTE b = idswitch[bmpptr++];
+      uint8 b = idswitch[bmpptr++];
       if (b)  my_scr[scadr+xx+yy*320] = b;
     }
   }
@@ -524,7 +525,7 @@ void DrawDipswitch(void)
       scadr += 315; // Adjust position...
     }
   }
-  BYTE dselected_text = dseloff[dswitch];
+  uint8 dselected_text = dseloff[dswitch];
   for(int i=0; i<13; i++)
   {
     if (dselected_text != i)
@@ -536,7 +537,7 @@ void DrawDipswitch(void)
       {
         for(int xx=0; xx<dtx[i]; xx++)
         {
-          BYTE b = dtxt[i][bmpptr++];
+          uint8 b = dtxt[i][bmpptr++];
           if (b)  my_scr[scadr] = b;
           scadr++;
         }
@@ -551,7 +552,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<dtx[dselected_text]; xx++)
     {
-      BYTE b = dtxt[dselected_text][bmpptr++];
+      uint8 b = dtxt[dselected_text][bmpptr++];
       if (b)  my_scr[scadr] = 125;
       scadr++;
     }
@@ -679,9 +680,9 @@ void SelectDown(void)
 //
 // User selected something! Handle it!
 //
-BYTE UserSelectedSomething(void)
+uint8 UserSelectedSomething(void)
 {
-  //extern BYTE * gram1;
+  //extern uint8 * gram1;
 
   if (!gui_debounce)
   {
@@ -773,12 +774,12 @@ BYTE UserSelectedSomething(void)
 //
 void ShowNumbers(int number)
 {
-  BYTE * bnarray[16] = { bn0, bn1, bn2, bn3, bn4, bn5, bn6, bn7, bn8, bn9,
+  uint8 * bnarray[16] = { bn0, bn1, bn2, bn3, bn4, bn5, bn6, bn7, bn8, bn9,
     bnA, bnB, bnC, bnD, bnE, bnF };
-  DWORD scadr = hScrollOffset + voffsets[vScrollOffset] + 642 + 2560;
-  WORD bmpptr = 0;
+  uint32 scadr = hScrollOffset + voffsets[vScrollOffset] + 642 + 2560;
+  uint16 bmpptr = 0;
 
-  BYTE first_dig = number>>4, second_dig = number&0x0F;
+  uint8 first_dig = number>>4, second_dig = number&0x0F;
   for(int y=0; y<7; y++)
   {
     for(int x=0; x<6; x++)
@@ -801,7 +802,7 @@ void ShowNumbers(int number)
 //
 // Spawn a message
 //
-void SpawnMsg(BYTE msg)
+void SpawnMsg(uint8 msg)
 {
        text_life = 60;                                                                         // 1 second...
        show_text = true;                                                                       // Show the damn thing...
@@ -822,8 +823,8 @@ void DrawText(void)
        text_life--;                                                                            // Your life force is running out...
 
        // Draw the message here...
-       DWORD scadr = hScrollOffset + voffsets[vScrollOffset] + 642;
-       WORD bmpptr = 0;
+       uint32 scadr = hScrollOffset + voffsets[vScrollOffset] + 642;
+       uint16 bmpptr = 0;
 
        for(int y=0; y<7; y++)
        {
@@ -862,12 +863,12 @@ void DrawText(void)
 //
 void SpawnSound(int type, int snd, int channel/* = 0*/)
 {
-       extern DWORD psg_lens[16];
-       extern BYTE * psg_adrs[16];
-       extern DWORD voc_lens[32];
-       extern BYTE * voc_adrs[32];
-       extern DWORD fm_lens[14];
-       extern BYTE * fm_adrs[14];
+       extern uint32 psg_lens[16];
+       extern uint8 * psg_adrs[16];
+       extern uint32 voc_lens[32];
+       extern uint8 * voc_adrs[32];
+       extern uint32 fm_lens[14];
+       extern uint8 * fm_adrs[14];
 
        snd_num = snd;
        SpawnMsg(MSHOWNUMS);
@@ -879,7 +880,7 @@ void SpawnSound(int type, int snd, int channel/* = 0*/)
                if (channel == 0)
                {
                        // 00 nn ss (nn # of repeats of sample ss)
-                       DWORD st = 0;
+                       uint32 st = 0;
 
                        if (snd & 0x40)
                        {
@@ -895,7 +896,7 @@ void SpawnSound(int type, int snd, int channel/* = 0*/)
                }
                else
                {
-                       DWORD st = 0;
+                       uint32 st = 0;
 
                        if (snd & 0x40)
                        {
index 317dce521900e5d22b166a78eb8a6a41e876d37d..7193b7372bae9356e438cbf613f55fd52ced733d 100755 (executable)
--- a/src/gui.h
+++ b/src/gui.h
@@ -1,19 +1,15 @@
 //
 // GUI.H
 //
-// by Jimmy Hamm
-// (C) 1998 Underground Software
+// by James L. Hammmons
+// (C) 1998, 2009 Underground Software
 //
-/*#define BYTE  unsigned char
-#define WORD  unsigned short int
-#define DWORD unsigned long int
-#define int8  char
-#define int16 short
-#define int32 int
-#define uint8  unsigned int8
-#define uint16 unsigned int16
-#define uint32 unsigned int32*/
+
+#ifndef __GUI_H__
+#define __GUI_H__
+
 #include "types.h"
+#include "SDL.h"
 
 // Message macros
 
 #define PL2START  3
 #define REFRESH   4
 #define DIPSWITCH 5
-#define OPTIONS   6 
+#define OPTIONS   6
 #define KEYCONFIG 7
 #define SNAPSHOT  8
 #define RESET     9
 #define EXIT      10
 
-void SpawnMsg(BYTE);
+void SpawnMsg(uint8);
 void DrawText(void);
 void InitGUI(void);
 bool ShowGUI(void);
@@ -57,7 +53,7 @@ void SelectLeft(void);
 void SelectRight(void);
 void SelectUp(void);
 void SelectDown(void);
-BYTE UserSelectedSomething(void);
+uint8 UserSelectedSomething(void);
 void SetRefreshRate(bool);
 void ActivateGUI(void);
 void DeactivateGUI(void);
@@ -65,3 +61,5 @@ void HandleGUIDebounce(void);
 void SpawnSound(int, int, int channel = 0);
 //void SoundFunc(uint8 *, uint16);
 void SoundFunc(void *, Uint8 *, int);
+
+#endif // __GUI_H__
index a2bd10665882b880014d4a1bec7c111a3b16fb3b..8df329136dd06b6b6d3dbb81a4a190c5ac0302b3 100755 (executable)
@@ -1,61 +1,66 @@
 //
 // Resource header file
 //
-// by Jimmy Hamm
-// (C) 1998 Underground Software
+// by James L. Hammons
+// (C) 1998, 2009 Underground Software
 //
 
+#ifndef __RESOURCE_H__
+#define __RESOURCE_H__
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-extern BYTE * sunknown;
-extern BYTE * scya;
-extern BYTE * scamera;
-extern DWORD sunknownlen;
-extern DWORD scyalen;
-extern DWORD scameralen;
-
-extern BYTE * inoguib;
-extern BYTE * idipswb;
-extern BYTE * ipl1stb;
-extern BYTE * ipl2stb;
-extern BYTE * ii30hzb;
-extern BYTE * ii60hzb;
-extern BYTE * icoinub;
-extern BYTE * isnapsb;
-extern BYTE * iresetb;
-extern BYTE * ibyebyb;
-extern BYTE * ikeycnb;
-
-extern BYTE * inoguis;
-extern BYTE * idipsws;
-extern BYTE * ipl1sts;
-extern BYTE * ipl2sts;
-extern BYTE * ii30hzs;
-extern BYTE * ii60hzs;
-extern BYTE * icoinus;
-extern BYTE * isnapss;
-extern BYTE * iresets;
-extern BYTE * ibyebys;
-extern BYTE * ikeycns;
-extern BYTE * ichecks;
-
-extern BYTE * idswitch;
-extern BYTE * idsbutton;
-extern BYTE * idstext1;
-extern BYTE * idstext2;
-extern BYTE * idstext3;
-extern BYTE * idstext4;
-extern BYTE * idstext5;
-extern BYTE * idstext6;
-extern BYTE * idstext7;
-extern BYTE * idstext8;
-extern BYTE * idstext9;
-extern BYTE * idstext10;
-extern BYTE * idstext11;
-extern BYTE * idstext12;
+extern uint8 * sunknown;
+extern uint8 * scya;
+extern uint8 * scamera;
+extern uint32 sunknownlen;
+extern uint32 scyalen;
+extern uint32 scameralen;
+
+extern uint8 * inoguib;
+extern uint8 * idipswb;
+extern uint8 * ipl1stb;
+extern uint8 * ipl2stb;
+extern uint8 * ii30hzb;
+extern uint8 * ii60hzb;
+extern uint8 * icoinub;
+extern uint8 * isnapsb;
+extern uint8 * iresetb;
+extern uint8 * ibyebyb;
+extern uint8 * ikeycnb;
+
+extern uint8 * inoguis;
+extern uint8 * idipsws;
+extern uint8 * ipl1sts;
+extern uint8 * ipl2sts;
+extern uint8 * ii30hzs;
+extern uint8 * ii60hzs;
+extern uint8 * icoinus;
+extern uint8 * isnapss;
+extern uint8 * iresets;
+extern uint8 * ibyebys;
+extern uint8 * ikeycns;
+extern uint8 * ichecks;
+
+extern uint8 * idswitch;
+extern uint8 * idsbutton;
+extern uint8 * idstext1;
+extern uint8 * idstext2;
+extern uint8 * idstext3;
+extern uint8 * idstext4;
+extern uint8 * idstext5;
+extern uint8 * idstext6;
+extern uint8 * idstext7;
+extern uint8 * idstext8;
+extern uint8 * idstext9;
+extern uint8 * idstext10;
+extern uint8 * idstext11;
+extern uint8 * idstext12;
 
 #ifdef __cplusplus
 }
 #endif
+
+#endif // __RESOURCE_H__
index b6776d55707783d438a9d46935e29f9c03c95dcd..fde0f3ef48289d66db1b384421d113357cab70ac 100755 (executable)
@@ -11,7 +11,7 @@
 // JLH  07/23/2009  Added changelog ;-)
 //
 
-#define THUNDER_VERSION       "0.5.0"
+#define THUNDER_VERSION       "0.9.9"
 
 #include <iostream>
 #include <iomanip>
@@ -95,36 +95,36 @@ using namespace std;                                                                        // Yes!
 
 SDL_Surface * screen;
 
-BYTE * gram, * grom;                // Allocate RAM & ROM pointers
-BYTE * gram1, * gram2, * grom1, * grom2;  // Actual memory
-BYTE * grom3, * grom4, * data_rom, * spr_rom, * voice_rom;
-BYTE * chr_rom;                     // Character ROM pointer
+uint8 * gram, * grom;                // Allocate RAM & ROM pointers
+uint8 * gram1, * gram2, * grom1, * grom2;  // Actual memory
+uint8 * grom3, * grom4, * data_rom, * spr_rom, * voice_rom;
+uint8 * chr_rom;                     // Character ROM pointer
 
 V6809REGS cpu1, cpu2;
 
 bool trace1 = false;                 // ditto...
 bool looking_at_rom = true;         // true = R1, false = R2
-DWORD banksw1, banksw2;             // Bank switch addresses
-WORD game_over_switch;              // Game over delay
-WORD dpc;                           // Debug pc reg...
+uint32 banksw1, banksw2;             // Bank switch addresses
+uint16 game_over_switch;              // Game over delay
+uint16 dpc;                           // Debug pc reg...
 bool show_scr = true;            // Whether or not to show background
 bool enable_cpu = true;          // Whether or not to enable CPUs
 bool irqGoA = true;              // IRQ switch for CPU #1
 bool irqGoB = true;              // IRQ switch for CPU #2
 
-WORD refresh_ = 0;                // Crappy global screen stuff...
+uint16 refresh_ = 0;                // Crappy global screen stuff...
 bool refresh2 = true;
 
-DWORD psg_lens[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-BYTE * psg_adrs[16];
-DWORD voc_lens[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+uint32 psg_lens[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+uint8 * psg_adrs[16];
+uint32 voc_lens[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-BYTE * voc_adrs[32];
-DWORD fm_lens[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-BYTE * fm_adrs[14];
+uint8 * voc_adrs[32];
+uint32 fm_lens[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+uint8 * fm_adrs[14];
 
 fstream tr;    // Tracelog hook
-WORD    pcx;   // Where we at?
+uint16    pcx;   // Where we at?
 
 static char op_mat1[256] = {
   1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
@@ -284,9 +284,9 @@ iregs[4][2] = {"X", "Y", "U", "S" };
 //
 // Read a byte from memory (without touching PC. Not a Fetch!)
 //
-BYTE RdMem(WORD addr)
+uint8 RdMem(uint16 addr)
 {
-       BYTE b;
+       uint8 b;
 
        if (addr < 0x8000)
        {
@@ -304,18 +304,18 @@ BYTE RdMem(WORD addr)
 //
 // Write a byte to memory
 //
-void WrMem(WORD addr, BYTE b)
+void WrMem(uint16 addr, uint8 b)
 {
        extern bool charbase;                                                           // Needed for screen. Extern it in it??
-  //extern WORD sr, ur, xr, yr;            // Needed for tracelog
-  //extern WORD pcr;
+  //extern uint16 sr, ur, xr, yr;            // Needed for tracelog
+  //extern uint16 pcr;
 /*  if ((addr>0x40FF) && (addr<0x4390))
   {
     tr << hex << addr << ":" << (int)b;
     //for(int i=0; i<32; i++)
     //{
     //  if (gram1[0x4400+i]<0x10)  tr << "0";
-    //  tr << hex << (WORD)gram1[0x4400+i] << " ";
+    //  tr << hex << (uint16)gram1[0x4400+i] << " ";
     //}
     tr << endl;
   }//*/
@@ -325,7 +325,7 @@ void WrMem(WORD addr, BYTE b)
        if (addr == 0x6400)
                SpawnSound(GAMESOUND, gram1[0x6600], 1);                // Do voice chan 2
        if (addr == 0x6800)
-               banksw1 = (DWORD)b << 13;                                               // Set char data bankswitch base address
+               banksw1 = (uint32)b << 13;                                              // Set char data bankswitch base address
        if (addr > 0x4284 && addr < 0x42A5 && b)
                SpawnSound(PSGSOUND, addr - 0x4285);                    // Do PSG sound on chans 2, 3
        if (addr == 0x4380)
@@ -355,10 +355,10 @@ void WrMem(WORD addr, BYTE b)
 //
 // Read a byte from memory (without touching PC. Not a Fetch!) (2nd processor)
 //
-BYTE RdMemB(WORD addr)
+uint8 RdMemB(uint16 addr)
 {
-//  extern WORD cpu2.s, cpu2.u, cpu2.x, cpu2.y;            // Needed for tracelog
-       BYTE b;
+//  extern uint16 cpu2.s, cpu2.u, cpu2.x, cpu2.y;            // Needed for tracelog
+       uint8 b;
 
        if (addr < 0x8000)
        {
@@ -385,18 +385,18 @@ BYTE RdMemB(WORD addr)
 //
 // Write a byte to memory (2nd processor)
 //
-void WrMemB(WORD addr, BYTE b)
+void WrMemB(uint16 addr, uint8 b)
 {
        extern bool charbase;
-  //extern WORD sr, ur, xr, yr;            // Needed for tracelog
-  //extern WORD pcr;
+  //extern uint16 sr, ur, xr, yr;            // Needed for tracelog
+  //extern uint16 pcr;
 /*  if ((addr>0x00FF) && (addr<0x0390))
   {
     tr << hex << addr << ":" << (int)b;
     //for(int i=0; i<32; i++)
     //{
     //  if (gram1[0x4400+i]<0x10)  tr << "0";
-    //  tr << hex << (WORD)gram1[0x4400+i] << " ";
+    //  tr << hex << (uint16)gram1[0x4400+i] << " ";
     //}
     tr << endl;
   }//*/
@@ -411,7 +411,7 @@ void WrMemB(WORD addr, BYTE b)
        if (addr > 0x0284 && addr < 0x02A5 && b)
                SpawnSound(PSGSOUND, addr - 0x0285);                    // Do PSG sound on chans 2, 3
        if (addr == 0xD803)
-               banksw2 = (DWORD)(b & 0x03) << 13;                              // Set sprite data bank switch
+               banksw2 = (uint32)(b & 0x03) << 13;                             // Set sprite data bank switch
        if (addr == 0x0380)
        {
                SpawnSound(FMSOUND, b);                                                 // Do FM sound on chan 4
@@ -432,9 +432,9 @@ void WrMemB(WORD addr, BYTE b)
 //
 // Display bytes in mem in hex
 //
-void DisplayBytes(WORD src, unsigned long dst)
+void DisplayBytes(uint16 src, unsigned long dst)
 {
-  BYTE cnt;
+  uint8 cnt;
   unsigned long i;
 
   printf("%04X: ", src);
@@ -442,7 +442,7 @@ void DisplayBytes(WORD src, unsigned long dst)
   if (src > dst)  dst += 0x10000;        // That should fix the FFFF bug...
   for(i=src; i<dst; i++)
   {
-    printf("%02X ", (BYTE)(looking_at_rom ? RdMem(i) : RdMemB(i)));
+    printf("%02X ", (uint8)(looking_at_rom ? RdMem(i) : RdMemB(i)));
     cnt++;                               // Bump counter...
   }
   for(i=cnt; i<5; i++)                   // Pad the leftover spaces...
@@ -452,28 +452,28 @@ void DisplayBytes(WORD src, unsigned long dst)
 }
 
 // temp crap...
-BYTE Fetch(void) { return 0; }
-WORD FetchW(void) { return 0; }
-BYTE FetchB(void) { return 0; }
-WORD FetchWB(void) { return 0; }
+uint8 Fetch(void) { return 0; }
+uint16 FetchW(void) { return 0; }
+uint8 FetchB(void) { return 0; }
+uint16 FetchWB(void) { return 0; }
 
 //
 // Decode a 6809 instruction at 'addr'
 //
 void Decode_6809()
 {
-  BYTE (* DFetch)();           // Decode Fetch() pointer...
-  WORD (* DFetchW)();          // Decode FetchW() pointer...
+  uint8 (* DFetch)();           // Decode Fetch() pointer...
+  uint16 (* DFetchW)();          // Decode FetchW() pointer...
   DFetch  = (looking_at_rom ? Fetch : FetchB);
   DFetchW = (looking_at_rom ? FetchW : FetchWB);
 
-/*  extern*/ WORD pcr, pcrB;              // Pull in 'pcr' from '6809.cpp'
-  WORD pc_save = pcr, pcB_save = pcrB;
+/*  extern*/ uint16 pcr, pcrB;              // Pull in 'pcr' from '6809.cpp'
+  uint16 pc_save = pcr, pcB_save = pcrB;
   pcr  = dpc;  pcrB = dpc;
-  BYTE opcode = DFetch();             // Get the opcode ('fetch' cycle)
-  BYTE opcode2, operand;
-  WORD loperand;
-  BYTE admode = op_mat1[opcode];     // addressing mode
+  uint8 opcode = DFetch();             // Get the opcode ('fetch' cycle)
+  uint8 opcode2, operand;
+  uint16 loperand;
+  uint8 admode = op_mat1[opcode];     // addressing mode
   char outbuf[80], mnem[6], tmp[30];
 
   strcpy(mnem, mnemonics[opcode]);  // Copy page 1 opcode
@@ -503,13 +503,13 @@ void Decode_6809()
       break; }
     case 3:  // Relative
     { operand = DFetch();   // Get offset
-      WORD tmpc = (looking_at_rom ? pcr : pcrB);
-      sprintf(outbuf, "%s $%04X", mnem, tmpc+(SWORD)(SBYTE)operand);
+      uint16 tmpc = (looking_at_rom ? pcr : pcrB);
+      sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16)(int8)operand);
       break; }
     case 4:  // Long Relative
     { loperand = DFetchW(); // Get long offset
-      WORD tmpc = (looking_at_rom ? pcr : pcrB);
-      sprintf(outbuf, "%s $%04X", mnem, tmpc+(SWORD)loperand);
+      uint16 tmpc = (looking_at_rom ? pcr : pcrB);
+      sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16)loperand);
       break; }
     case 5:  // Inherent
     { sprintf(outbuf, "%s ", mnem);
@@ -537,9 +537,9 @@ void Decode_6809()
       break; }
     case 7:  // Indexed (the tough one!)
     { operand = DFetch();   // Get IDX byte
-      BYTE reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
+      uint8 reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
            lo_nyb = (operand & 0x0F),  boff;
-      WORD woff;
+      uint16 woff;
 
       strcpy(tmp, "??");
       if (!(operand & 0x80))      // Hi bit set? Then decode 4 bit offset
@@ -620,9 +620,9 @@ void Decode_6809()
 //
 // Convert hex to dec
 //
-WORD htod(char *str)
+uint16 htod(char *str)
 {
-  WORD value = 0;
+  uint16 value = 0;
   int len = strlen(str);
 
   for(int i=0; i<len; i++)
@@ -646,7 +646,7 @@ WORD htod(char *str)
 //
 // Load 32K file into ROM image space
 //
-bool Load32KImg(char * filename, WORD address)
+bool Load32KImg(char * filename, uint16 address)
 {
   ifstream ff;
   char ch;
@@ -668,7 +668,7 @@ bool Load32KImg(char * filename, WORD address)
 // Generic Load file into image space
 // (No error checking performed!  Responsibility of caller!)
 //
-bool LoadImg(const char * filename, BYTE * mem, DWORD address, DWORD length)
+bool LoadImg(const char * filename, uint8 * mem, uint32 address, uint32 length)
 {
   ifstream ff;
   char path[80];
@@ -680,7 +680,7 @@ bool LoadImg(const char * filename, BYTE * mem, DWORD address, DWORD length)
   ff.open(path, ios::binary | ios::in);       // Open 'da file...
   if (ff)
   {
-    for(DWORD i=0; i<length; i++)             // Read it in...
+    for(uint32 i=0; i<length; i++)             // Read it in...
     {
       ff.get(ch);
       mem[address+i] = ch;
@@ -696,11 +696,11 @@ bool LoadImg(const char * filename, BYTE * mem, DWORD address, DWORD length)
 bool ReadColorPROMs(void)
 {
   fstream ff1, ff2;
-//  BYTE ch;
+//  uint8 ch;
   char ch;
-  extern BYTE palette[768];     // Screen physical palette
-  extern BYTE ccolor[256][8];   // Character color PROM values
-  extern BYTE scolor[128][16];  // Sprite color PROM values
+  extern uint8 palette[768];     // Screen physical palette
+  extern uint8 ccolor[256][8];   // Character color PROM values
+  extern uint8 scolor[128][16];  // Sprite color PROM values
 
   ff1.open("./ROMs/"PROM3, ios::binary|ios::in);
   if (ff1)
@@ -710,7 +710,7 @@ bool ReadColorPROMs(void)
       for(int j=0; j<8; j++)
       {
         ff1.get(ch);
-        ccolor[i][j] = (BYTE)ch;
+        ccolor[i][j] = (uint8)ch;
       }
     }
     ff1.close();
@@ -723,7 +723,7 @@ bool ReadColorPROMs(void)
       for(int j=0; j<16; j++)
       {
         ff1.get(ch);
-        scolor[i][j] = (BYTE)ch;
+        scolor[i][j] = (uint8)ch;
       }
     }
     ff1.close();
@@ -736,10 +736,10 @@ bool ReadColorPROMs(void)
     for(int i=0; i<768; i+=3)
     {
       ff1.get(ch);
-      palette[i]   = (BYTE)(ch&0x0F);
-      palette[i+1] = (BYTE)(ch>>4);
+      palette[i]   = (uint8)(ch&0x0F);
+      palette[i+1] = (uint8)(ch>>4);
       ff2.get(ch);
-      palette[i+2] = (BYTE)ch;
+      palette[i+2] = (uint8)ch;
     }
 
     // Do palette stretching here... I.e. add 0 to hinyb 0, 1 to hinyb 1, etc.
@@ -758,7 +758,7 @@ bool ReadColorPROMs(void)
 //
 bool UnpackFonts(void)
 {
-//  BYTE b1, b2, b3;
+//  uint8 b1, b2, b3;
   char b1, b2, b3;
   fstream f1, f2;
   //0x4000 $800 chars
@@ -810,27 +810,27 @@ bool UnpackFonts(void)
 //
 // Get length of sample from WAV format
 //
-DWORD GetWAVLength(fstream &file)
+uint32 GetWAVLength(fstream &file)
 {
        char ch;
-       DWORD len;
+       uint32 len;
 
        file.ignore(16);                                                                        // Skip header BS
 
        for(int i=0; i<2; i++)
        {
-               file.get(ch);  len = (int)(BYTE)ch;
-               file.get(ch);  len |= (int)(BYTE)ch << 8;
-               file.get(ch);  len |= (int)(BYTE)ch << 16;
-               file.get(ch);  len |= (int)(BYTE)ch << 24;
+               file.get(ch);  len = (int)(uint8)ch;
+               file.get(ch);  len |= (int)(uint8)ch << 8;
+               file.get(ch);  len |= (int)(uint8)ch << 16;
+               file.get(ch);  len |= (int)(uint8)ch << 24;
 
                file.ignore(len + 4);                                                   // Skip intermediate data
        }
 
-       file.get(ch);  len = (int)(BYTE)ch;                                     // & finally get length of data
-       file.get(ch);  len |= (int)(BYTE)ch << 8;
-       file.get(ch);  len |= (int)(BYTE)ch << 16;
-       file.get(ch);  len |= (int)(BYTE)ch << 24;
+       file.get(ch);  len = (int)(uint8)ch;                                    // & finally get length of data
+       file.get(ch);  len |= (int)(uint8)ch << 8;
+       file.get(ch);  len |= (int)(uint8)ch << 16;
+       file.get(ch);  len |= (int)(uint8)ch << 24;
 
        return len;
 }
@@ -842,7 +842,7 @@ void LoadPSGs(void)
 {
        char file[40];
        char ch;
-       DWORD len;
+       uint32 len;
 
        for(int i=0; i<16; i++)
        {
@@ -857,7 +857,7 @@ void LoadPSGs(void)
                {
                        len = GetWAVLength(fp);                                         // Get WAV data length...
 
-                       psg_adrs[i] = new BYTE[len];                            // Attempt to allocate space...
+                       psg_adrs[i] = new uint8[len];                           // Attempt to allocate space...
 
                        if (psg_adrs[i] != NULL)
                        {
@@ -883,7 +883,7 @@ void LoadFMs(void)
 {
        char file[200];
        char ch;
-       DWORD len;
+       uint32 len;
 
        for(int i=0; i<14; i++)
        {
@@ -898,7 +898,7 @@ void LoadFMs(void)
                {
                        len = GetWAVLength(fp);                                         // Get WAV length...
 
-                       fm_adrs[i] = new BYTE[len];                                     // Attempt to allocate space...
+                       fm_adrs[i] = new uint8[len];                                    // Attempt to allocate space...
 
                        if (fm_adrs[i] != NULL)
                        {
@@ -925,12 +925,12 @@ int main(int argc, char * argv[])
 {
        InitLog("thunder.log");
 
-/*  extern WORD cpu1.pc, cpu1.s, cpu1.u, cpu1.x, cpu1.y;            // Pull in vars from '6809.cpp'
-  extern BYTE cpu1.a, cpu1.b, cpu1.cc, cpu1.dp;
+/*  extern uint16 cpu1.pc, cpu1.s, cpu1.u, cpu1.x, cpu1.y;            // Pull in vars from '6809.cpp'
+  extern uint8 cpu1.a, cpu1.b, cpu1.cc, cpu1.dp;
   extern long iclock;
   extern bool illegal;
-  extern WORD cpu2.pc, cpu2.s, cpu2.u, cpu2.x, cpu2.y;       // Pull in vars from '6809B.cpp'
-  extern BYTE cpu2.a, cpu2.b, cpu2.cc, cpu2.dp;
+  extern uint16 cpu2.pc, cpu2.s, cpu2.u, cpu2.x, cpu2.y;       // Pull in vars from '6809B.cpp'
+  extern uint8 cpu2.a, cpu2.b, cpu2.cc, cpu2.dp;
   extern long iclockB;
   extern bool illegalB;
   extern void (* exec_op0[256])();   // Array of page zero opcode functions...
@@ -946,22 +946,22 @@ int main(int argc, char * argv[])
   char lbuff[80];
   fstream ff;                       // Declare fstream without file hooks...
   bool brk = false, brk2 = false;   // Breakpoint set flag
-  WORD brkpnt, brkpnt2;             // Where the breakpoint is...
+  uint16 brkpnt, brkpnt2;             // Where the breakpoint is...
   bool running;                     // CPU running state flag...
   bool self_test = false;           // Self-test switch
   bool scr_type = false;            // false=chars, true=pixels
-  WORD debounce = 0;                // Key de-bounce counter
-  WORD fire_debounce = 0;           // Fire button debounce counter
+  uint16 debounce = 0;                // Key de-bounce counter
+  uint16 fire_debounce = 0;           // Fire button debounce counter
 //  bool refresh2 = true;             // Default to 60 Hz...
-  BYTE x;                           // General placeholder...
+  uint8 x;                           // General placeholder...
   bool active = true;               // Program running flag
 
 //  SDL_Surface * screen = NULL;      // SDL screen pointer
   SDL_Event event;                  // SDL "event"
 //  int keyPressed;                   // SDL key pressed...
-  BYTE keys[256];                   // Keyboard "switch-like" buffer
-  extern BYTE palette[768];         // Screen physical palette
-  DWORD ticks, oldTicks;
+  uint8 keys[256];                   // Keyboard "switch-like" buffer
+  extern uint8 palette[768];         // Screen physical palette
+  uint32 ticks, oldTicks;
 
 //  tr.open("exe.log", ios::binary | ios::out); // Tracelog
 
@@ -985,34 +985,34 @@ int main(int argc, char * argv[])
 
   cout << "Allocating memory..." << endl;
 //Does this anyway...  set_new_handler(0);    // Make 'new' return NULL on failure...
-  gram1 = new BYTE[0x10000];
+  gram1 = new uint8[0x10000];
   if (gram1 == NULL)  { cout << "Could not allocate RAM space #1!" << endl
                       << "Aborting!" << endl;  return -1; }
-  grom1 = new BYTE[0x10000];
+  grom1 = new uint8[0x10000];
   if (grom1 == NULL)  { cout << "Could not allocate ROM space #1!" << endl
                       << "Aborting!" << endl;  return -1; }
-  gram2 = new BYTE[0x10000];
+  gram2 = new uint8[0x10000];
   if (gram2 == NULL)  { cout << "Could not allocate RAM space #2!" << endl
                       << "Aborting!" << endl;  return -1; }
-  grom2 = new BYTE[0x10000];
+  grom2 = new uint8[0x10000];
   if (grom2 == NULL)  { cout << "Could not allocate ROM space #2!" << endl
                       << "Aborting!" << endl;  return -1; }
-  chr_rom = new BYTE[0x60000];
+  chr_rom = new uint8[0x60000];
   if (chr_rom == NULL)  { cout << "Could not allocate character RAM!" << endl
                       << "Aborting!" << endl;  return -1; }
-  grom3 = new BYTE[0x8000];
+  grom3 = new uint8[0x8000];
   if (grom3 == NULL)  { cout << "Could not allocate ROM space #4!" << endl
                       << "Aborting!" << endl;  return -1; }
-  grom4 = new BYTE[0x8000];
+  grom4 = new uint8[0x8000];
   if (grom4 == NULL)  { cout << "Could not allocate ROM space #5!" << endl
                       << "Aborting!" << endl;  return -1; }
-  data_rom = new BYTE[0x40000];
+  data_rom = new uint8[0x40000];
   if (data_rom == NULL)  { cout << "Could not allocate ROM level data!" << endl
                       << "Aborting!" << endl;  return -1; }
-  spr_rom = new BYTE[0x80000];
+  spr_rom = new uint8[0x80000];
   if (spr_rom == NULL)  { cout << "Could not allocate ROM sprite data!" << endl
                       << "Aborting!" << endl;  return -1; }
-  voice_rom = new BYTE[0x20000];
+  voice_rom = new uint8[0x20000];
   if (voice_rom == NULL)  { cout << "Could not allocate ROM voice data!" << endl
                       << "Aborting!" << endl;  return -1; }
 
@@ -1096,7 +1096,7 @@ int main(int argc, char * argv[])
        LoadFMs();
 
   // Quick 'n' Dirty voice dump (sound 0x0E)
-/*  DWORD adc = (voice_rom[26]<<8) | voice_rom[27];
+/*  uint32 adc = (voice_rom[26]<<8) | voice_rom[27];
   bool doneWitIt = false;
   int crh = 0;
   while (!doneWitIt)
@@ -1144,7 +1144,7 @@ WriteLog("About to go to the main loop...\n");
                                dpc = htod(lbuff);
                        }
                        printf("%04X: ", dpc);
-                       WORD pc_save = cpu1.pc, pcB_save = cpu2.pc;
+                       uint16 pc_save = cpu1.pc, pcB_save = cpu2.pc;
                        cpu1.pc = dpc;  cpu2.pc = dpc;
                        for(int i=0; i<16; i++)
                                printf("%02X ", (looking_at_rom ? Fetch() : FetchB()));
@@ -1152,7 +1152,7 @@ WriteLog("About to go to the main loop...\n");
                        cpu1.pc = dpc;  cpu2.pc = dpc;
                        for(int i=0; i<16; i++)
                        {
-                               BYTE a = (looking_at_rom ? Fetch() : FetchB());
+                               uint8 a = (looking_at_rom ? Fetch() : FetchB());
                                if (a<10)             cout << (char)(a+48);
                                if ((a>9) && (a<37))  cout << (char)(a+55);
                                if (a>36)             cout << ".";
@@ -1169,7 +1169,7 @@ WriteLog("About to go to the main loop...\n");
                                dpc = htod(lbuff);
                        }
                        printf("%04X: ", dpc);
-                       for(int i=0; i<16; i++)  printf("%02X ", (BYTE)gram[dpc++]);
+                       for(int i=0; i<16; i++)  printf("%02X ", (uint8)gram[dpc++]);
                        cout << endl;
                }
                else if (lbuff[0] == 'l')
@@ -1213,11 +1213,11 @@ WriteLog("About to go to the main loop...\n");
                else if ((lbuff[0] == 'r') || (lbuff[0] == 'c')) // Run/continue...
                {
 WriteLog("Executing 'run' command...\n");
-                       DWORD my_clock = 0;
+                       uint32 my_clock = 0;
                        running = true;                                                         // Set running status...
                        trace1 = false;
                        SetRefreshRate(refresh2);                                       // Tell GUI our refresh rate
-      //for(WORD i=0; i<0x8000; i++)  gram2[i] = grom3[i]; //Temp
+      //for(uint16 i=0; i<0x8000; i++)  gram2[i] = grom3[i]; //Temp
 
                        if (lbuff[0] == 'r')                                            // If run, then reset CPUs
                        {
@@ -1445,7 +1445,7 @@ WriteLog("About to enter main loop...\n");
                                }
                                if (keys[28])                                                   // Return
                                {
-                                       BYTE retval = UserSelectedSomething();
+                                       uint8 retval = UserSelectedSomething();
                                        if (retval == EXIT)
                                                running = false;
                                        if (retval == REFRESH)
@@ -1640,11 +1640,11 @@ BlitChar(screen, chr_rom, gram1);
 
       printf("%04X: ", dpc);       // Show data found...
       for(int i=0; i<16; i++)
-        printf("%02X ", gram1[(WORD)(dpc+i)]);
+        printf("%02X ", gram1[(uint16)(dpc+i)]);
       cout << " ";
       for(int i=0; i<16; i++)
       {
-        BYTE a = gram1[dpc++];
+        uint8 a = gram1[dpc++];
         if (a<10)
           cout << (char)(a+48);
         if ((a>9) && (a<37))
index c65b5f586fcb40ff12d0d923af0aa3bbeab49834..51bcbcd26179e8320ebf7e15cd3f51c0bee3a8a5 100755 (executable)
@@ -1,39 +1,25 @@
 //
 // TYPES.H
 //
+// by James L. Hammons
+// (C) 2009 Underground Software
+//
+// Now that C/C++ has stardard sizes, this is much more precise. We still do
+// this because we don't like typing _t on the back of our types. :-)
+//
 
 #ifndef __TYPES_H__
 #define __TYPES_H__
 
-// This is only good on certain intel 32-bit platforms...
-// You may need to tweak to suit your specific platform.
-
-typedef unsigned char          uint8;
-typedef signed char                    int8;
-typedef unsigned short         uint16;
-typedef signed short           int16;
-typedef unsigned                       uint32;
-typedef signed                         int32;
-typedef unsigned long long     uint64;
-typedef signed long long       int64;
-
-typedef uint8  UINT8;
-typedef int8   INT8;
-typedef uint16 UINT16;
-typedef int16  INT16;
-typedef uint32 UINT32;
-typedef int32  INT32;
-typedef uint64 UINT64;
-typedef int64  INT64;
+#include <stdint.h>
 
-typedef uint8  BYTE;
-typedef uint16 WORD;
-//ugly, ugly kludge
-#ifndef __SDLEMU_OPENGL_H__
-typedef uint32 DWORD;
-#endif
-typedef int8   SBYTE;
-typedef int16  SWORD;
-typedef int32  SDWORD;
+typedef uint8_t                uint8;
+typedef int8_t         int8;
+typedef uint16_t       uint16;
+typedef int16_t                int16;
+typedef uint32_t       uint32;
+typedef int32_t                int32;
+typedef uint64_t       uint64;
+typedef int64_t                int64;
 
 #endif // __TYPES_H__
index 4de9d29757cc3a8353c4b0bb1f82fc2fd8da26e2..894476f1f37459295a20cb30275b644e06099327 100755 (executable)
 // Private global variables
 
 static V6809REGS regs;
-static WORD addr;                                                                              // Temporary variables common to all funcs...
-static BYTE tmp;
+static uint16 addr;                                                                            // Temporary variables common to all funcs...
+static uint8 tmp;
 
 // Private function prototypes
 
-static int SignedB(BYTE);                                                              // Return signed byte from unsigned
-static int SignedW(WORD);                                                              // Return signed word from unsigned
-static WORD FetchW(void);
-static WORD RdMemW(WORD addr);
-static void WrMemW(WORD addr, WORD w);
-static WORD ReadEXG(BYTE);                                                             // Read TFR/EXG post byte
-static void WriteEXG(BYTE, WORD);                                              // Set TFR/EXG data
-static WORD DecodeReg(BYTE);                                                   // Decode register data
-static WORD DecodeIDX(BYTE);                                                   // Decode IDX data
+static int SignedB(uint8);                                                             // Return signed byte from unsigned
+static int SignedW(uint16);                                                            // Return signed word from unsigned
+static uint16 FetchW(void);
+static uint16 RdMemW(uint16 addr);
+static void WrMemW(uint16 addr, uint16 w);
+static uint16 ReadEXG(uint8);                                                          // Read TFR/EXG post byte
+static void WriteEXG(uint8, uint16);                                           // Set TFR/EXG data
+static uint16 DecodeReg(uint8);                                                        // Decode register data
+static uint16 DecodeIDX(uint8);                                                        // Decode IDX data
 
 // This is here because of the stupid forward declaration rule that C++ forces (the C++ compiler
 // isn't smart enough to know that the identifiers in the arrays are declared later, it doesn't
@@ -136,32 +136,32 @@ static void (* exec_op2[256])() = {
 // Fetch a word out of 6809 memory (little endian format)
 // This is a leftover from when fetches were separated from garden variety reads...
 //
-static WORD FetchW()
+static uint16 FetchW()
 {
-       WORD w = RdMemW(regs.pc);
+       uint16 w = RdMemW(regs.pc);
        regs.pc += 2;
        return w;
 }
 //
 // Fetch word function
 //
-/*WORD FetchW(void)
+/*uint16 FetchW(void)
 {
-       return (WORD)(regs.RdMem(regs.pc++) << 8) | regs.RdMem(regs.pc++);
+       return (uint16)(regs.RdMem(regs.pc++) << 8) | regs.RdMem(regs.pc++);
 }*/
 
 //
 // Read word from memory function
 //
-WORD RdMemW(WORD addr)
+uint16 RdMemW(uint16 addr)
 {
-       return (WORD)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
+       return (uint16)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
 }
 
 //
 // Write word to memory function
 //
-void WrMemW(WORD addr, WORD w)
+void WrMemW(uint16 addr, uint16 w)
 {
        regs.WrMem(addr + 0, w >> 8);
        regs.WrMem(addr + 1, w & 0xFF);
@@ -170,7 +170,7 @@ void WrMemW(WORD addr, WORD w)
 //
 // return signed byte from unsigned
 //
-int SignedB(BYTE b)
+int SignedB(uint8 b)
 {
        return (b & 0x80 ? b - 256 : b);
 }
@@ -178,7 +178,7 @@ int SignedB(BYTE b)
 //
 // return signed word from unsigned
 //
-int SignedW(WORD w)
+int SignedW(uint16 w)
 {
        return (w & 0x8000 ? w - 65536 : w);
 }
@@ -186,9 +186,9 @@ int SignedW(WORD w)
 //
 // Function to read TFR/EXG post byte
 //
-WORD ReadEXG(BYTE code)
+uint16 ReadEXG(uint8 code)
 {
-       WORD retval;
+       uint16 retval;
 
        switch (code)
        {
@@ -232,7 +232,7 @@ WORD ReadEXG(BYTE code)
 //
 // Function to set TFR/EXG data
 //
-void WriteEXG(BYTE code, WORD data)
+void WriteEXG(uint8 code, uint16 data)
 {
        switch (code)
        {
@@ -262,9 +262,9 @@ void WriteEXG(BYTE code, WORD data)
 //
 // Function to decode register data
 //
-WORD DecodeReg(BYTE reg)
+uint16 DecodeReg(uint8 reg)
 {
-       WORD retval;
+       uint16 retval;
 
        switch (reg)
        {
@@ -284,10 +284,10 @@ WORD DecodeReg(BYTE reg)
 //
 // Function to decode IDX data
 //
-WORD DecodeIDX(BYTE code)
+uint16 DecodeIDX(uint8 code)
 {
-       WORD addr, woff;
-       BYTE reg = (code & 0x60) >> 5, idxind = (code & 0x10) >> 4, lo_nyb = code & 0x0F;
+       uint16 addr, woff;
+       uint8 reg = (code & 0x60) >> 5, idxind = (code & 0x10) >> 4, lo_nyb = code & 0x0F;
 
        if (!(code & 0x80))                                                                     // Hi bit unset? Then decode 4 bit offset
                addr = DecodeReg(reg) + (idxind ? lo_nyb - 16 : lo_nyb);
@@ -460,7 +460,7 @@ static void Op04(void)  // LSR DP
 }
 static void Op06(void)  // ROR DP
 {
-  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  BYTE tmp2 = regs.RdMem(addr);
+  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8 tmp2 = regs.RdMem(addr);
   tmp = (tmp2>>1) + (regs.cc&0x01)*128;
   regs.WrMem(addr, tmp);
   (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -492,7 +492,7 @@ static void Op08(void)  // LSL DP
 }
 static void Op09(void)  // ROL DP
 {
-  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  BYTE tmp2 = regs.RdMem(addr);
+  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8 tmp2 = regs.RdMem(addr);
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -525,8 +525,8 @@ static void Op0D(void)  // TST DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
   regs.cc &= 0xFD;                              // CLV
-  (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag 
-  (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag 
+  (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
+  (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag
   regs.clock += 6;
 }
 static void Op0E(void)  // JMP DP
@@ -557,7 +557,7 @@ static void Op12(void)                                                                                      // NOP
 }
 
 static void Op13(void)  // SYNC
-{ 
+{
   regs.clock += 2;
 }
 static void Op16(void)  // LBRA
@@ -583,7 +583,7 @@ static void Op19(void)  // DAA
     regs.a += 0x60;  regs.cc |= 0x01;              // Then adjust & set carry
   }
   regs.cc &= 0xF1;                             // CL NZV
-  if (regs.a == 0)  regs.cc |= 0x04;               // Adjust Zero flag 
+  if (regs.a == 0)  regs.cc |= 0x04;               // Adjust Zero flag
   if (regs.a&0x80)  regs.cc |= 0x08;               // Adjust Negative flag
   regs.clock += 2;
 }
@@ -848,7 +848,7 @@ static void Op3F(void)  // SWI
 {
 }
 static void Op40(void)  // NEGA
-{ 
+{
   regs.a = 256 - regs.a;
   (regs.a > 0x7F  ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Adjust carry
   (regs.a == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -897,7 +897,7 @@ static void Op48(void)  // LSLA  [Keep checking from here...]
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   regs.clock += 2;
 }
-static void Op49(void)  // ROLA  
+static void Op49(void)  // ROLA
 {
   tmp = regs.a;  regs.a = (tmp<<1) + (regs.cc&0x01);
   (tmp&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -935,7 +935,7 @@ static void Op4F(void)  // CLRA
   regs.clock += 2;
 }
 static void Op50(void)  // NEGB
-      { 
+      {
         regs.b = 256 - regs.b;
 //        ((regs.b^tmp)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF); // Adjust H carry
         (regs.b == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1005,7 +1005,7 @@ static void Op5A(void)  // DECB
 static void Op5C(void)  // INCB
       {
         regs.b++;
-        (regs.b == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // Adjust oVerflow flag 
+        (regs.b == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // Adjust oVerflow flag
         (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);    // Adjust Zero flag
         (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);    // Adjust Negative flag
         regs.clock += 2;
@@ -1024,9 +1024,9 @@ static void Op5F(void)  // CLRB
         regs.clock += 2;
       }
 static void Op60(void)  // NEG IDX
-      { 
+      {
         addr = DecodeIDX(regs.RdMem(regs.pc++));
-        tmp = regs.RdMem(addr);  BYTE res = 256 - tmp;
+        tmp = regs.RdMem(addr);  uint8 res = 256 - tmp;
         regs.WrMem(addr, res);
 //        ((res^tmp)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF); // Adjust H carry
         (res == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1058,7 +1058,7 @@ static void Op64(void)  // LSR IDX
 static void Op66(void)  // ROR IDX
       {
         addr = DecodeIDX(regs.RdMem(regs.pc++));
-        tmp = regs.RdMem(addr);  BYTE tmp2 = tmp;
+        tmp = regs.RdMem(addr);  uint8 tmp2 = tmp;
         tmp = (tmp >> 1) + (regs.cc&0x01)*128;
         regs.WrMem(addr, tmp);
         (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -1091,7 +1091,7 @@ static void Op68(void)  // LSL IDX
       }
 static void Op69(void)  // ROL IDX
 {
-  BYTE tmp2 = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
+  uint8 tmp2 = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -1101,7 +1101,7 @@ static void Op69(void)  // ROL IDX
 }
 static void Op6A(void)  // DEC IDX
       {
-  BYTE tmp;  WORD addr;
+  uint8 tmp;  uint16 addr;
         addr = DecodeIDX(regs.RdMem(regs.pc++));
         tmp = regs.RdMem(addr) - 1;
         regs.WrMem(addr, tmp);
@@ -1111,7 +1111,7 @@ static void Op6A(void)  // DEC IDX
         regs.clock += 6;
       }
 static void Op6C(void)  // INC IDX
-      {       
+      {
         addr = DecodeIDX(regs.RdMem(regs.pc++));
         tmp = regs.RdMem(addr) + 1;
         regs.WrMem(addr, tmp);
@@ -1123,8 +1123,8 @@ static void Op6C(void)  // INC IDX
 static void Op6D(void)  // TST IDX
       {
         tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-        (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag 
-        (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag 
+        (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
+        (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag
         regs.clock += 6;
       }
 static void Op6E(void)  // JMP IDX
@@ -1140,9 +1140,9 @@ static void Op6F(void)  // CLR IDX
   regs.clock += 6;
 }
 static void Op70(void)  // NEG ABS
-      { 
+      {
         addr = FetchW();
-        tmp = regs.RdMem(addr);  BYTE res = 256 - tmp;
+        tmp = regs.RdMem(addr);  uint8 res = 256 - tmp;
         regs.WrMem(addr, res);
         (res == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
         (res == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
@@ -1172,9 +1172,9 @@ static void Op74(void)  // LSR ABS
       }
 static void Op76(void)  // ROR ABS
       {
-  BYTE tmp;  WORD addr;
+  uint8 tmp;  uint16 addr;
         addr = FetchW();
-        tmp = regs.RdMem(addr);  BYTE tmp2 = tmp;
+        tmp = regs.RdMem(addr);  uint8 tmp2 = tmp;
         tmp = (tmp >> 1) + (regs.cc&0x01)*128;
         regs.WrMem(addr, tmp);
         (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -1184,7 +1184,7 @@ static void Op76(void)  // ROR ABS
       }
 static void Op77(void)  // ASR ABS
       {
-  BYTE tmp;  WORD addr;
+  uint8 tmp;  uint16 addr;
         addr = FetchW();
         tmp = regs.RdMem(addr);
         (tmp&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Shift bit into carry
@@ -1197,7 +1197,7 @@ static void Op77(void)  // ASR ABS
       }
 static void Op78(void)  // LSL ABS
       {
-  BYTE tmp;  WORD addr;
+  uint8 tmp;  uint16 addr;
         addr = FetchW();
         tmp = regs.RdMem(addr);
         (tmp&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Shift hi bit into carry
@@ -1209,7 +1209,7 @@ static void Op78(void)  // LSL ABS
       }
 static void Op79(void)  // ROL ABS
 {
-  BYTE tmp2 = regs.RdMem(FetchW());
+  uint8 tmp2 = regs.RdMem(FetchW());
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -1219,7 +1219,7 @@ static void Op79(void)  // ROL ABS
 }
 static void Op7A(void)  // DEC ABS
       {
-  BYTE tmp;  WORD addr;
+  uint8 tmp;  uint16 addr;
         addr = FetchW();
         tmp = regs.RdMem(addr) - 1;
         regs.WrMem(addr, tmp);
@@ -1229,8 +1229,8 @@ static void Op7A(void)  // DEC ABS
         regs.clock += 7;
       }
 static void Op7C(void)  // INC ABS
-      {       
-  BYTE tmp;  WORD addr;
+      {
+  uint8 tmp;  uint16 addr;
         addr = FetchW();
         tmp = regs.RdMem(addr) + 1;
         regs.WrMem(addr, tmp);
@@ -1242,10 +1242,10 @@ static void Op7C(void)  // INC ABS
 
 static void Op7D(void)  // TST ABS
 {
-       BYTE tmp = regs.RdMem(FetchW());
+       uint8 tmp = regs.RdMem(FetchW());
 
-       (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag 
-       (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag 
+       (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
+       (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag
 
        regs.clock += 7;
 }
@@ -1262,8 +1262,8 @@ static void Op7F(void)  // CLR ABS
         regs.clock += 7;
       }
 static void Op80(void)  // SUBA #
-{ 
-  BYTE tmp = regs.RdMem(regs.pc++);  BYTE as = regs.a; 
+{
+  uint8 tmp = regs.RdMem(regs.pc++);  uint8 as = regs.a;
   regs.a -= tmp;
   (as < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1274,7 +1274,7 @@ static void Op80(void)  // SUBA #
 static void Op81(void)  // CMPA #
 {
   tmp = regs.RdMem(regs.pc++);
-  BYTE db = regs.a - tmp;
+  uint8 db = regs.a - tmp;
   (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((regs.a^tmp^db^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -1283,7 +1283,7 @@ static void Op81(void)  // CMPA #
 }
 static void Op82(void)  // SBCA #
 {
-  tmp = regs.RdMem(regs.pc++);  BYTE as = regs.a; 
+  tmp = regs.RdMem(regs.pc++);  uint8 as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1293,7 +1293,7 @@ static void Op82(void)  // SBCA #
 }
 static void Op83(void)  // SUBD #
 {
-  addr = FetchW();  WORD dr = (regs.a<<8)|regs.b, ds = dr;
+  addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
   dr -= addr;
   (ds < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^addr^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1337,10 +1337,10 @@ static void Op88(void)  // EORA #
 static void Op89(void)  // ADCA #
 {
   tmp = regs.RdMem(regs.pc++);
-  addr = (WORD)regs.a + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative
@@ -1355,11 +1355,11 @@ static void Op8A(void)  // ORA #
         regs.clock += 2;
       }
 static void Op8B(void)  // ADDA #
-{       
+{
   tmp = regs.RdMem(regs.pc++);  addr = regs.a + tmp;
   (addr > 0xFF ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1368,7 +1368,7 @@ static void Op8B(void)  // ADDA #
 static void Op8C(void)  // CMPX #
 {
         addr = FetchW();
-        WORD dw = regs.x - addr;
+        uint16 dw = regs.x - addr;
         (regs.x < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
         ((regs.x^addr^dw^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
         (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -1391,8 +1391,8 @@ static void Op8E(void)  // LDX #
         regs.clock += 3;
       }
 static void Op90(void)  // SUBA DP
-      { 
-        tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  BYTE as = regs.a; 
+      {
+        tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1403,7 +1403,7 @@ static void Op90(void)  // SUBA DP
 static void Op91(void)  // CMPA DP
       {
         tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-        BYTE db = regs.a - tmp;
+        uint8 db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1412,7 +1412,7 @@ static void Op91(void)  // CMPA DP
       }
 static void Op92(void)  // SBCA DP
 {
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  BYTE as = regs.a; 
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1422,8 +1422,8 @@ static void Op92(void)  // SBCA DP
 }
 static void Op93(void)  // SUBD DP
 {
-  addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  WORD dr = (regs.a<<8)|regs.b, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1475,10 +1475,10 @@ static void Op98(void)  // EORA DP
 static void Op99(void)  // ADCA DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (WORD)regs.a + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative
@@ -1493,12 +1493,12 @@ static void Op9A(void)  // ORA DP
         regs.clock += 4;
       }
 static void Op9B(void)  // ADDA DP
-{       
+{
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (WORD)regs.a + (WORD)tmp;
+  addr = (uint16)regs.a + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1507,8 +1507,8 @@ static void Op9B(void)  // ADDA DP
 static void Op9C(void)  // CMPX DP
       {
         addr = (regs.dp<<8)|regs.RdMem(regs.pc++);
-        WORD adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-        WORD dw = regs.x - adr2;
+        uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+        uint16 dw = regs.x - adr2;
         (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.x < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1541,8 +1541,8 @@ static void Op9F(void)  // STX DP
         regs.clock += 5;
       }
 static void OpA0(void)  // SUBA IDX
-      { 
-        tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  BYTE as = regs.a; 
+      {
+        tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1553,7 +1553,7 @@ static void OpA0(void)  // SUBA IDX
 static void OpA1(void)  // CMPA IDX
       {
         tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-        BYTE db = regs.a - tmp;
+        uint8 db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1562,7 +1562,7 @@ static void OpA1(void)  // CMPA IDX
       }
 static void OpA2(void)  // SBCA IDX
 {
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  BYTE as = regs.a; 
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1572,8 +1572,8 @@ static void OpA2(void)  // SBCA IDX
 }
 static void OpA3(void)  // SUBD IDX
 {
-  addr = DecodeIDX(regs.RdMem(regs.pc++));  WORD dr = (regs.a<<8)|regs.b, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = DecodeIDX(regs.RdMem(regs.pc++));  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1625,10 +1625,10 @@ static void OpA8(void)  // EORA IDX
 static void OpA9(void)  // ADCA IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (WORD)regs.a + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1643,12 +1643,12 @@ static void OpAA(void)  // ORA IDX
   regs.clock += 4;
 }
 static void OpAB(void)  // ADDA IDX
-{       
+{
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (WORD)regs.a + (WORD)tmp;
+  addr = (uint16)regs.a + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.a = addr & 0xFF;                       // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1657,8 +1657,8 @@ static void OpAB(void)  // ADDA IDX
 static void OpAC(void)  // CMPX IDX
 {
   addr = DecodeIDX(regs.RdMem(regs.pc++));
-  WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-  WORD dw = regs.x - addr2;
+  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  uint16 dw = regs.x - addr2;
   (dw == 0    ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (dw&0x8000  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.x < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1691,8 +1691,8 @@ static void OpAF(void)  // STX IDX
   regs.clock += 5;
 }
 static void OpB0(void)  // SUBA ABS
-      { 
-        tmp = regs.RdMem(FetchW());  BYTE as = regs.a; 
+      {
+        tmp = regs.RdMem(FetchW());  uint8 as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1703,7 +1703,7 @@ static void OpB0(void)  // SUBA ABS
 static void OpB1(void)  // CMPA ABS
       {
         tmp = regs.RdMem(FetchW());
-        BYTE db = regs.a - tmp;
+        uint8 db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1712,7 +1712,7 @@ static void OpB1(void)  // CMPA ABS
       }
 static void OpB2(void)  // SBCA ABS
 {
-  tmp = regs.RdMem(FetchW());  BYTE as = regs.a; 
+  tmp = regs.RdMem(FetchW());  uint8 as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1722,8 +1722,8 @@ static void OpB2(void)  // SBCA ABS
 }
 static void OpB3(void)  // SUBD ABS
 {
-  addr = FetchW();  WORD dr = (regs.a<<8)|regs.b, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
@@ -1775,10 +1775,10 @@ static void OpB8(void)  // EORA ABS
 static void OpB9(void)  // ADCA ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (WORD)regs.a + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.a = addr;                              // Set accumulator
   (regs.a == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.a&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1793,9 +1793,9 @@ static void OpBA(void)  // ORA ABS
   regs.clock += 5;
 }
 static void OpBB(void)  // ADDA ABS
-{       
+{
   tmp = regs.RdMem(FetchW());
-  addr = (WORD)regs.a + (WORD)tmp;
+  addr = (uint16)regs.a + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -1806,8 +1806,8 @@ static void OpBB(void)  // ADDA ABS
 }
 static void OpBC(void)  // CMPX ABS
 {
-  addr = FetchW();  WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-  WORD dw = regs.x - addr2;
+  addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  uint16 dw = regs.x - addr2;
   (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.x < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1818,7 +1818,7 @@ static void OpBD(void)  // JSR ABS
 {
   addr = FetchW();
   regs.WrMem(--regs.s, regs.pc&0xFF);  regs.WrMem(--regs.s, regs.pc>>8);
-  regs.pc = addr;                          // Go to absolute address (Not indir) 
+  regs.pc = addr;                          // Go to absolute address (Not indir)
   regs.clock += 8;
 }
 
@@ -1849,8 +1849,8 @@ static void OpBF(void)                                                                    // STX ABS
 }
 
 static void OpC0(void)  // SUBB #
-      { 
-        tmp = regs.RdMem(regs.pc++);  BYTE bs = regs.b; 
+      {
+        tmp = regs.RdMem(regs.pc++);  uint8 bs = regs.b;
         regs.b -= tmp;
         (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1861,7 +1861,7 @@ static void OpC0(void)  // SUBB #
 static void OpC1(void)  // CMPB #
       {
         tmp = regs.RdMem(regs.pc++);
-        BYTE db = regs.b - tmp;
+        uint8 db = regs.b - tmp;
         (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
         ((regs.b^tmp^db^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -1870,7 +1870,7 @@ static void OpC1(void)  // CMPB #
       }
 static void OpC2(void)  // SBCB #
 {
-  tmp = regs.RdMem(regs.pc++);  BYTE bs = regs.b; 
+  tmp = regs.RdMem(regs.pc++);  uint8 bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1925,10 +1925,10 @@ static void OpC8(void)  // EORB #
 static void OpC9(void)  // ADCB #
 {
   tmp = regs.RdMem(regs.pc++);
-  addr = (WORD)regs.b + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.b = addr & 0xFF;                       // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1943,11 +1943,11 @@ static void OpCA(void)  // ORB #
         regs.clock += 2;
       }
 static void OpCB(void)  // ADDB #
-{       
+{
   tmp = regs.RdMem(regs.pc++);  addr = regs.b + tmp;
   (addr > 0xFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.b = addr & 0xFF;                       // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -1970,8 +1970,8 @@ static void OpCE(void)  // LDU #
   regs.clock += 3;
 }
 static void OpD0(void)  // SUBB DP
-{ 
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  BYTE bs = regs.b; 
+{
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 bs = regs.b;
   regs.b -= tmp;
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1982,7 +1982,7 @@ static void OpD0(void)  // SUBB DP
 static void OpD1(void)  // CMPB DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  BYTE db = regs.b - tmp;
+  uint8 db = regs.b - tmp;
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1991,7 +1991,7 @@ static void OpD1(void)  // CMPB DP
 }
 static void OpD2(void)  // SBCB DP
 {
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  BYTE bs = regs.b; 
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2002,7 +2002,7 @@ static void OpD2(void)  // SBCB DP
 static void OpD3(void)  // ADDD DP
 {
   addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2055,10 +2055,10 @@ static void OpD8(void)  // EORB DP
 static void OpD9(void)  // ADCB DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (WORD)regs.b + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.b = addr;                              // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2073,12 +2073,12 @@ static void OpDA(void)  // ORB DP
         regs.clock += 4;
       }
 static void OpDB(void)  // ADDB DP
-{       
+{
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (WORD)regs.b + (WORD)tmp;
+  addr = (uint16)regs.b + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.b = addr & 0xFF;                       // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2121,8 +2121,8 @@ static void OpDF(void)  // STU DP
   regs.clock += 5;
 }
 static void OpE0(void)  // SUBB IDX
-{ 
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  BYTE bs = regs.b; 
+{
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 bs = regs.b;
   regs.b -= tmp;
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2133,7 +2133,7 @@ static void OpE0(void)  // SUBB IDX
 static void OpE1(void)  // CMPB IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  BYTE db = regs.b - tmp;
+  uint8 db = regs.b - tmp;
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2142,7 +2142,7 @@ static void OpE1(void)  // CMPB IDX
 }
 static void OpE2(void)  // SBCB IDX
 {
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  BYTE bs = regs.b; 
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2153,7 +2153,7 @@ static void OpE2(void)  // SBCB IDX
 static void OpE3(void)  // ADDD IDX
 {
   addr = DecodeIDX(regs.RdMem(regs.pc++));  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2206,10 +2206,10 @@ static void OpE8(void)  // EORB IDX
 static void OpE9(void)  // ADCB IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (WORD)regs.b + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.b = addr;                              // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2224,12 +2224,12 @@ static void OpEA(void)  // ORB IDX
         regs.clock += 4;
       }
 static void OpEB(void)  // ADDB IDX
-{       
+{
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (WORD)regs.b + (WORD)tmp;
+  addr = (uint16)regs.b + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   regs.b = addr;                              // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2272,8 +2272,8 @@ static void OpEF(void)  // STU IDX
   regs.clock += 5;
 }
 static void OpF0(void)  // SUBB ABS
-      { 
-        tmp = regs.RdMem(FetchW());  BYTE bs = regs.b; 
+      {
+        tmp = regs.RdMem(FetchW());  uint8 bs = regs.b;
         regs.b -= tmp;
         (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2283,7 +2283,7 @@ static void OpF0(void)  // SUBB ABS
 static void OpF1(void)  // CMPB ABS
       {
         tmp = regs.RdMem(FetchW());
-        BYTE db = regs.b - tmp;
+        uint8 db = regs.b - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2292,7 +2292,7 @@ static void OpF1(void)  // CMPB ABS
       }
 static void OpF2(void)  // SBCB ABS
 {
-  tmp = regs.RdMem(FetchW());  BYTE bs = regs.b; 
+  tmp = regs.RdMem(FetchW());  uint8 bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2303,7 +2303,7 @@ static void OpF2(void)  // SBCB ABS
 static void OpF3(void)  // ADDD ABS
 {
   addr = FetchW();  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  WORD adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2356,10 +2356,10 @@ static void OpF8(void)  // EORB ABS
 static void OpF9(void)  // ADCB ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (WORD)regs.b + (WORD)tmp + (WORD)(regs.cc&0x01);
+  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.b = addr & 0xFF;                       // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2372,14 +2372,14 @@ static void OpFA(void)  // ORB ABS
         (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         regs.clock += 5;
-      }       
+      }
 static void OpFB(void)  // ADDB ABS
-{       
+{
   tmp = regs.RdMem(FetchW());
-  addr = (WORD)regs.b + (WORD)tmp;
+  addr = (uint16)regs.b + (uint16)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
-  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo 
+  ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
   regs.b = addr & 0xFF;                       // Set accumulator
   (regs.b == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Set Zero flag
   (regs.b&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Set Negative flag
@@ -2521,18 +2521,18 @@ static void Op103F(void)  // SWI2 (Not yet implemented)
 }
 static void Op1083(void)  // CMPD #
     {
-      addr = FetchW();  WORD dr = (regs.a<<8)|regs.b;
-      WORD dw = dr - addr;
+      addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b;
+      uint16 dw = dr - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
-      ((dr^addr^dw^((WORD)regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
+      ((dr^addr^dw^((uint16)regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
       regs.clock += 5;
     }
 static void Op108C(void)  // CMPY #
     {
       addr = FetchW();
-      WORD dw = regs.y - addr;
+      uint16 dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2549,9 +2549,9 @@ static void Op108E(void)  // LDY #
     }
 static void Op1093(void)  // CMPD DP
     {
-      WORD adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++), dr = (regs.a<<8)|regs.b;
+      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++), dr = (regs.a<<8)|regs.b;
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      WORD dw = dr - addr;
+      uint16 dw = dr - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2560,9 +2560,9 @@ static void Op1093(void)  // CMPD DP
     }
 static void Op109C(void)  // CMPY DP
     {
-      WORD adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      WORD dw = regs.y - addr;
+      uint16 dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2591,9 +2591,9 @@ static void Op109F(void)  // STY DP
     }
 static void Op10A3(void)  // CMPD IDX
 {
-  WORD adr2 = DecodeIDX(regs.RdMem(regs.pc++)), dr = (regs.a<<8)|regs.b;
+  uint16 adr2 = DecodeIDX(regs.RdMem(regs.pc++)), dr = (regs.a<<8)|regs.b;
   addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-  WORD dw = dr - addr;
+  uint16 dw = dr - addr;
   regs.cc &= 0xF0;                              // CLC CLV CLZ CLN
   if (dr < addr)  regs.cc |= 0x01;              // Set Carry flag
   if ((dr^addr^dw^(regs.cc<<15))&0x8000)  regs.cc |= 0x02; // Set oVerflow
@@ -2603,9 +2603,9 @@ static void Op10A3(void)  // CMPD IDX
 }
 static void Op10AC(void)  // CMPY IDX
     {
-      WORD adr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16 adr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      WORD dw = regs.y - addr;
+      uint16 dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2632,9 +2632,9 @@ static void Op10AF(void)  // STY IDX
     }
 static void Op10B3(void)  // CMPD ABS
     {
-      addr = FetchW();  WORD dr = (regs.a<<8)|regs.b;
-      WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      WORD dw = dr - addr2;
+      addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b;
+      uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16 dw = dr - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2643,8 +2643,8 @@ static void Op10B3(void)  // CMPD ABS
     }
 static void Op10BC(void)  // CMPY ABS
     {
-      addr = FetchW();  WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      WORD dw = regs.y - addr2;
+      addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16 dw = regs.y - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2684,7 +2684,7 @@ static void Op10DE(void)  // LDS DP
       regs.cc &= 0xFD;                              // CLV
       (regs.s == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (regs.s&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
-      regs.clock += 6;                     
+      regs.clock += 6;
     }
 static void Op10DF(void)  // STS DP
     {
@@ -2743,7 +2743,7 @@ static void Op113F(void)  // SWI3
 static void Op1183(void)  // CMPU #
     {
       addr = FetchW();
-      WORD dw = regs.u - addr;
+      uint16 dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2753,7 +2753,7 @@ static void Op1183(void)  // CMPU #
 static void Op118C(void)  // CMPS #
     {
       addr = FetchW();
-      WORD dw = regs.s - addr;
+      uint16 dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2762,9 +2762,9 @@ static void Op118C(void)  // CMPS #
     }
 static void Op1193(void)  // CMPU DP
     {
-      WORD adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      WORD dw = regs.u - addr;
+      uint16 dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2773,9 +2773,9 @@ static void Op1193(void)  // CMPU DP
     }
 static void Op119C(void)  // CMPS DP
     {
-      WORD adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      WORD dw = regs.s - addr;
+      uint16 dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2784,9 +2784,9 @@ static void Op119C(void)  // CMPS DP
     }
 static void Op11A3(void)  // CMPU IDX
     {
-      WORD addr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16 addr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(addr2)<<8) | regs.RdMem(addr2+1);
-      WORD dw = regs.u - addr;
+      uint16 dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2795,9 +2795,9 @@ static void Op11A3(void)  // CMPU IDX
     }
 static void Op11AC(void)  // CMPS IDX
     {
-      WORD addr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16 addr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(addr2)<<8) | regs.RdMem(addr2+1);
-      WORD dw = regs.s - addr;
+      uint16 dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2806,8 +2806,8 @@ static void Op11AC(void)  // CMPS IDX
     }
 static void Op11B3(void)  // CMPU ABS
     {
-      addr = FetchW();  WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      WORD dw = regs.u - addr2;
+      addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16 dw = regs.u - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2817,8 +2817,8 @@ static void Op11B3(void)  // CMPU ABS
 
 static void Op11BC(void)  // CMPS ABS
 {
-       addr = FetchW();  WORD addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-       WORD dw = regs.s - addr2;
+       addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+       uint16 dw = regs.s - addr2;
        (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
        (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
        (regs.s < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2827,8 +2827,8 @@ static void Op11BC(void)  // CMPS ABS
 }
 
 //temp, for testing...
-/*static BYTE backTrace[256];
-static WORD btPC[256];
+/*static uint8 backTrace[256];
+static uint16 btPC[256];
 static int btPtr = 0;//*/
 static void Op__(void)                                                                 // Illegal opcode
 {
@@ -2847,23 +2847,23 @@ for(int i=0; i<256; i++)
 //
 // Internal "memcpy" (so we don't have to link with any external libraries!)
 //
-static void myMemcpy(void * dst, void * src, DWORD size)
+static void myMemcpy(void * dst, void * src, uint32 size)
 {
-       BYTE * d = (BYTE *)dst, * s = (BYTE *)src;
+       uint8 * d = (uint8 *)dst, * s = (uint8 *)src;
 
-       for(DWORD i=0; i<size; i++)
+       for(uint32 i=0; i<size; i++)
                d[i] = s[i];
 }
 
 //
 // Function to execute 6809 instructions
 //
-void Execute6809(V6809REGS * context, DWORD cycles)
+void Execute6809(V6809REGS * context, uint32 cycles)
 {
        myMemcpy(&regs, context, sizeof(V6809REGS));
 
        // Execute here...
-DWORD clockSave = regs.clock;
+uint32 clockSave = regs.clock;
 regs.clock = 0;
        while (regs.clock < cycles)
        {
@@ -2880,7 +2880,7 @@ btPtr = (btPtr++) & 0xFF;//*/
 
                // Handle any pending interrupts
 
-               DWORD flags = context->cpuFlags;
+               uint32 flags = context->cpuFlags;
 
                if (flags & V6809_ASSERT_LINE_RESET)                    // *** RESET handler ***
                {
index f62d1cfcc5be2589dbcfddb406c9d56bd75c539f..6ad4424c03eec039f758ba9902eca239e70a7872 100755 (executable)
 
 struct V6809REGS
 {
-       WORD pc;                                        // 6809 PC register
-       WORD x;                                         // 6809 X index register
-       WORD y;                                         // 6809 Y index register
-       WORD s;                                         // 6809 System stack pointer
-       WORD u;                                         // 6809 User stack pointer
-       BYTE cc;                                        // 6809 Condition Code register
-       BYTE a;                                         // 6809 A register
-       BYTE b;                                         // 6809 B register
-       BYTE dp;                                        // 6809 Direct Page register
-       DWORD clock;                            // 6809 clock
-//DWORD _reserved;//   BYTE (* Fetch)(WORD&);          // Address of BYTE fetch routine
-       BYTE (* RdMem)(WORD);           // Address of BYTE read routine
-       void (* WrMem)(WORD, BYTE);     // Address of BYTE write routine
-       DWORD cpuFlags;                         // v6809 IRQ/RESET flags
+       uint16 pc;                                      // 6809 PC register
+       uint16 x;                                               // 6809 X index register
+       uint16 y;                                               // 6809 Y index register
+       uint16 s;                                               // 6809 System stack pointer
+       uint16 u;                                               // 6809 User stack pointer
+       uint8 cc;                                       // 6809 Condition Code register
+       uint8 a;                                                // 6809 A register
+       uint8 b;                                                // 6809 B register
+       uint8 dp;                                       // 6809 Direct Page register
+       uint32 clock;                           // 6809 clock
+//uint32 _reserved;//  uint8 (* Fetch)(uint16&);               // Address of uint8 fetch routine
+       uint8 (* RdMem)(uint16);                // Address of uint8 read routine
+       void (* WrMem)(uint16, uint8);  // Address of uint8 write routine
+       uint32 cpuFlags;                                // v6809 IRQ/RESET flags
 };
 
 // Function prototypes
 
-void Execute6809(V6809REGS *, DWORD);                                  // Function to execute 6809 instructions
+void Execute6809(V6809REGS *, uint32);                                 // Function to execute 6809 instructions
 
 #endif // __V6809_H__
diff --git a/src/v6809b.cpp b/src/v6809b.cpp
deleted file mode 100755 (executable)
index 9e2183f..0000000
+++ /dev/null
@@ -1,2716 +0,0 @@
-// Virtual 6809B v1.2P (Last build: 5/30/1998)
-// Protected mode version
-//
-// by James L. Hammons
-//
-// (c) 1998 Underground Software
-
-#include "v6809b.h"
-#include "v6809.h"              // Pull in some funcs...
-
-// Global defs (needed because functions can only return one value.
-//              Maybe you could use a struct to pass multiple values, but
-//              what a pain in the ass! This way makes a little more sense
-//              to me.)
-
-WORD pcrB, xrB, yrB, srB, urB;  // Double byte registers
-BYTE ccrB, arB, brB, dprB;      // Single byte registers
-long iclockB;                   // Instruction clock
-bool illegalB = false;          // Illegal instruction executed flag
-
-static WORD addr;               // Temporary variables common to all funcs...
-static BYTE tmp;
-
-extern BYTE FetchB();           // You need to define these functions
-extern WORD FetchWB();          // externally because every hardware situation
-extern BYTE RdMemB(WORD);       // is going to be different...
-extern void WrMemB(WORD, BYTE);
-
-void (* exec_op0B[256])();  // Array of page zero opcode functions...
-void (* exec_op1B[256])();  // Array of page one opcode functions...
-void (* exec_op2B[256])();  // Array of page two opcode functions...
-
-//
-// Function to read TFR/EXG post byte
-//
-WORD ReadEXGB(BYTE code)
-{
-  WORD retval;
-
-  switch(code)
-  {
-    case 0:  retval = (arB<<8) | brB;  break;
-    case 1:  retval = xrB;  break;
-    case 2:  retval = yrB;  break;
-    case 3:  retval = urB;  break;
-    case 4:  retval = srB;  break;
-    case 5:  retval = pcrB;  break;
-    case 8:  retval = arB;  break;
-    case 9:  retval = brB;  break;
-    case 10: retval = ccrB;  break;
-    case 11: retval = dprB;  break;
-    default: retval = 0xFF;
-  }
-  return(retval);
-}
-
-//
-// Function to set TFR/EXG data
-//
-void WriteEXGB(BYTE code, WORD data)
-{
-  switch(code)
-  {
-    case 0:  { arB = data>>8; brB = data&0xFF;  break; }
-    case 1:  xrB = data;  break;
-    case 2:  yrB = data;  break;
-    case 3:  urB = data;  break;
-    case 4:  srB = data;  break;
-    case 5:  pcrB = data;  break;
-    case 8:  arB = data&0xFF;  break;
-    case 9:  brB = data&0xFF;  break;
-    case 10: ccrB = data&0xFF;  break;
-    case 11: dprB = data&0xFF;  break;
-  }
-}
-
-//
-// Function to decode register data
-//
-WORD DecodeRegB(BYTE reg)
-{
-  WORD retval;
-
-  switch(reg)
-  {
-    case 0:  retval = xrB;  break;
-    case 1:  retval = yrB;  break;
-    case 2:  retval = urB;  break;
-    case 3:  retval = srB;  break;
-  }
-  return(retval);
-}
-
-//
-// Function to decode IDX data
-//
-WORD DecodeIDXB(BYTE code)
-{
-  WORD addr, woff;
-  BYTE reg = (code&0x60)>>5, idxind = (code&0x10)>>4, lo_nyb = code&0x0F;
-
-  if (!(code&0x80))      // Hi bit unset? Then decode 4 bit offset
-  {
-    addr = DecodeRegB(reg) + (idxind ? lo_nyb-16 : lo_nyb);
-  }
-  else
-  {
-    if (idxind)
-    {
-      switch(lo_nyb)
-      {
-        case 1:  { woff = DecodeRegB(reg);
-                   addr = (RdMemB(woff)<<8) | RdMemB(woff+1);
-                   switch(reg)
-                   {
-                     case 0:  xrB++;  xrB++;  break;
-                     case 1:  yrB++;  yrB++;  break;
-                     case 2:  urB++;  urB++;  break;
-                     case 3:  srB++;  srB++;  break;
-                   }
-                   break; }
-        case 3:  { switch(reg)
-                   {
-                     case 0:  xrB--;  xrB--;  break;
-                     case 1:  yrB--;  yrB--;  break;
-                     case 2:  urB--;  urB--;  break;
-                     case 3:  srB--;  srB--;  break;
-                   }
-                   woff = DecodeRegB(reg);
-                   addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 4:  { woff = DecodeRegB(reg);
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 5:  { woff = DecodeRegB(reg) + SignedB(brB);
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 6:  { woff = DecodeRegB(reg) + SignedB(arB);
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 8:  { woff = DecodeRegB(reg) + SignedB(FetchB());
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 9:  { woff = DecodeRegB(reg) + SignedW(FetchWB());
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 11: { woff = DecodeRegB(reg) + SignedW((arB<<8) | brB);
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 12: { woff = pcrB + SignedB(FetchB());
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 13: { woff = pcrB + SignedW(FetchWB());
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-        case 15: { woff = FetchWB();
-                  addr = (RdMemB(woff)<<8) | RdMemB(woff+1);  break; }
-      }
-    }
-    else
-    {
-    switch(lo_nyb)
-      {
-        case 0:  { addr = DecodeRegB(reg);
-                   switch(reg)
-                   {
-                     case 0:  xrB++;  break;
-                     case 1:  yrB++;  break;
-                     case 2:  urB++;  break;
-                     case 3:  srB++;  break;
-                   }
-                   break; }
-        case 1:  { addr = DecodeRegB(reg);
-                   switch(reg)
-                   {
-                     case 0:  xrB++;  xrB++;  break;
-                     case 1:  yrB++;  yrB++;  break;
-                     case 2:  urB++;  urB++;  break;
-                     case 3:  srB++;  srB++;  break;
-                   }
-                   break; }
-        case 2:  { switch(reg)
-                   {
-                     case 0:  xrB--;  break;
-                     case 1:  yrB--;  break;
-                     case 2:  urB--;  break;
-                     case 3:  srB--;  break;
-                   }
-                   addr = DecodeRegB(reg);  break; }
-        case 3:  { switch(reg)
-                   {
-                     case 0:  xrB--;  xrB--;  break;
-                     case 1:  yrB--;  yrB--;  break;
-                     case 2:  urB--;  urB--;  break;
-                     case 3:  srB--;  srB--;  break;
-                   }
-                   addr = DecodeRegB(reg);  break; }
-        case 4:  { addr = DecodeRegB(reg);  break; }
-        case 5:  { addr = DecodeRegB(reg) + SignedB(brB);  break; }
-        case 6:  { addr = DecodeRegB(reg) + SignedB(arB);  break; }
-        case 8:  { addr = DecodeRegB(reg) + SignedB(FetchB());  break; }
-        case 9:  { addr = DecodeRegB(reg) + SignedW(FetchWB());  break; }
-        case 11: { addr = DecodeRegB(reg) + SignedW((arB<<8) | brB);  break; }
-        case 12: { addr = pcrB + SignedB(FetchB());  break; }
-        case 13: { addr = pcrB + SignedW(FetchWB());  break; }
-      }
-    }
-  }
-  return(addr);
-}
-
-//
-// Page zero instructions...
-//
-
-void BOp00(void)  // NEG DP
-{
-  addr = (dprB<<8) | FetchB();
-  tmp = 256 - RdMemB(addr);
-  WrMemB(addr, tmp);
-  (tmp == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag
-  (tmp > 0x7F ? ccrB |= 0x01 : ccrB &= 0xFE); // Adjust carry
-  iclockB += 6;
-}
-void BOp03(void)  // COM DP
-{
-  addr = (dprB<<8) | FetchB();
-  tmp = 0xFF ^ RdMemB(addr);
-  WrMemB(addr, tmp);
-  ccrB &= 0xFD;  ccrB |= 0x01;               // CLV SEC
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp04(void)  // LSR DP
-{
-  addr = (dprB<<8) | FetchB();
-  tmp = RdMemB(addr);
-  (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift low bit into carry
-  tmp >>= 1;  WrMemB(addr, tmp);
-  ccrB &= 0xF7;                             // CLN
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  iclockB += 6;
-}
-void BOp06(void)  // ROR DP
-{
-  addr = (dprB<<8) | FetchB();  BYTE tmp2 = RdMemB(addr);
-  tmp = (tmp2>>1) + (ccrB&0x01)*128;
-  WrMemB(addr, tmp);
-  (tmp2&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift bit into carry
-  (tmp == 0  ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (tmp&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp07(void)  // ASR DP
-{
-  addr = (dprB<<8) | FetchB();  tmp = RdMemB(addr);
-  (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift bit into carry
-  tmp >>= 1;
-  if (tmp&0x40)  tmp |= 0x80;              // Set Neg if it was set
-  WrMemB(addr, tmp);
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp08(void)  // LSL DP
-{
-  addr = (dprB<<8) | FetchB(); // NEEDS OVERFLOW ADJUSTMENT
-  tmp = RdMemB(addr);
-  (tmp&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift hi bit into carry
-  tmp <<= 1;
-  WrMemB(addr, tmp);
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp09(void)  // ROL DP
-{
-  addr = (dprB<<8) | FetchB();  BYTE tmp2 = RdMemB(addr);
-  tmp = (tmp2<<1) + (ccrB&0x01);
-  WrMemB(addr, tmp);
-  (tmp2&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift hi bit into carry
-  ((tmp2&0x80)^((tmp2<<1)&0x80) ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (tmp == 0  ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (tmp&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp0A(void)  // DEC DP
-{
-  addr = (dprB<<8) | FetchB();
-  tmp = RdMemB(addr) - 1;
-  WrMemB(addr, tmp);
-  (tmp == 0x7F ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp0C(void)  // INC DP
-{
-  addr = (dprB<<8) | FetchB();
-  tmp = RdMemB(addr) + 1;
-  WrMemB(addr, tmp);
-  (tmp == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp0D(void)  // TST DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());
-  ccrB &= 0xFD;                              // CLV
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag 
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag 
-  iclockB += 6;
-}
-void BOp0E(void)  // JMP DP
-{
-  pcrB = (dprB<<8) | FetchB();
-  iclockB += 3;
-}
-void BOp0F(void)  // CLR DP
-{
-  WrMemB((dprB<<8)|FetchB(), 0);
-  ccrB &= 0xF0;  ccrB |= 0x04;                // CLN, SEZ, CLV, CLC
-  iclockB += 6;
-}
-void BOp12(void)  // NOP
-{
-  iclockB += 2;
-}
-void BOp13(void)  // SYNC
-{ 
-  iclockB += 2;
-}
-void BOp16(void)  // LBRA
-{
-  pcrB += SignedW(FetchWB());
-  iclockB += 5;
-}
-void BOp17(void)  // LBSR
-{
-  addr = FetchWB();
-  WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);
-  pcrB += SignedW(addr);
-  iclockB += 9;
-}
-void BOp19(void)  // DAA
-{
-  /*if ((ccrB&0x20) || ((arB&0x0F) > 0x09))    // H set or lo nyb too big?
-  {
-    arB += 0x06;  ccrB |= 0x20;              // Then adjust & set half carry
-  }
-  if ((ccrB&0x01) || (arB > 0x9F))           // C set or hi nyb too big?
-  {
-    arB += 0x60;  ccrB |= 0x01;              // Then adjust & set carry
-  }
-  ccrB &= 0xF1;                             // CL NZV
-  if (arB == 0)  ccrB |= 0x04;               // Adjust Zero flag 
-  if (arB&0x80)  ccrB |= 0x08;               // Adjust Negative flag
-  iclockB += 2;  //*/
-
-        BYTE msn, lsn;       // Will this work??
-        WORD t, cf = 0;
-        msn=arB & 0xf0; lsn=arB & 0x0f;
-        if( lsn>0x09 || ccrB&0x20 ) cf |= 0x06;
-       if( msn>0x80 && lsn>0x09 ) cf |= 0x60;
-        if( msn>0x90 || ccrB&0x01 ) cf |= 0x60;
-        t = cf + arB;
-        ccrB &= 0xF1;   // CL NZV
-        //CLR_NZV; /* keep carry from previous operation */
-        if (arB == 0)  ccrB |= 0x04;   // Adjust Zero flag 
-        if (arB&0x80)  ccrB |= 0x08;   // Adjust Negative flag
-        //SET_NZ8((byte)t); SET_C8(t);
-        ccrB |= ((t&0x100)>>8); // Adjust Carry (?)
-        arB = t;
-}
-void BOp1A(void)  // ORCC #
-{
-  ccrB |= FetchB();
-  iclockB += 3;
-}
-void BOp1C(void)  // ANDCC #
-{
-  ccrB &= FetchB();
-  iclockB += 3;
-}
-void BOp1D(void)  // SEX
-{
-  (brB&0x80 ? arB = 0xFF : arB = 0x00);
-  ((arB|brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp1E(void)  // EXG
-{
-  tmp = FetchB();
-  addr = ReadEXGB(tmp>>4);  WriteEXGB(tmp>>4, ReadEXGB(tmp&0xF));
-  WriteEXGB(tmp&0xF, addr);
-  iclockB += 8;
-}
-void BOp1F(void)  // TFR
-{
-  tmp = FetchB();
-  WriteEXGB(tmp&0xF, ReadEXGB(tmp>>4));
-  iclockB += 7;
-}
-void BOp20(void)  // BRA
-{
-  pcrB += SignedB(FetchB());  // Branch always
-  iclockB += 3;
-}
-void BOp21(void)  // BRN
-{
-  FetchB();
-  iclockB += 3;
-}
-void BOp22(void)  // BHI
-{
-  tmp = FetchB();
-  if (!(ccrB&0x05))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp23(void)  // BLS
-{
-  tmp = FetchB();
-  if (ccrB&0x05)  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp24(void)  // BCC (BHS)
-{
-  tmp = FetchB();
-  if (!(ccrB&0x01))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp25(void)  // BCS (BLO)
-{
-  tmp = FetchB();
-  if (ccrB&0x01)  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp26(void)  // BNE
-{
-  tmp = FetchB();
-  if (!(ccrB&0x04))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp27(void)  // BEQ
-{
-  tmp = FetchB();
-  if (ccrB&0x04)  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp28(void)  // BVC
-{
-  tmp = FetchB();
-  if (!(ccrB&0x02))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp29(void)  // BVS
-{
-  tmp = FetchB();
-  if (ccrB&0x02)  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2A(void)  // BPL
-{
-  tmp = FetchB();
-  if (!(ccrB&0x08))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2B(void)  // BMI
-{
-  tmp = FetchB();
-  if (ccrB&0x08)  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2C(void)  // BGE
-{
-  tmp = FetchB();
-  if (!(((ccrB&0x08) >> 2) ^ (ccrB&0x02)))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2D(void)  // BLT
-{
-  tmp = FetchB();
-  if (((ccrB&0x08) >> 2) ^ (ccrB&0x02))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2E(void)  // BGT
-{
-  tmp = FetchB();
-  if (!((ccrB&0x04) | (((ccrB&0x08) >> 2) ^ (ccrB&0x02))))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp2F(void)  // BLE
-{
-  tmp = FetchB();
-  if ((ccrB&0x04) | (((ccrB&0x08) >> 2) ^ (ccrB&0x02)))  pcrB += SignedB(tmp);
-  iclockB += 3;
-}
-void BOp30(void)  // LEAX
-{
-  xrB = DecodeIDXB(FetchB());
-  (xrB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  iclockB += 4;
-}
-void BOp31(void)  // LEAY
-{
-  yrB = DecodeIDXB(FetchB());
-  (yrB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  iclockB += 4;
-}
-void BOp32(void)  // LEAS
-{
-  srB = DecodeIDXB(FetchB());
-  (srB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  iclockB += 4;
-}
-void BOp33(void)  // LEAU
-{
-  urB = DecodeIDXB(FetchB());
-  (urB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  iclockB += 4;
-}
-void BOp34(void)  // PSHS
-{
-  tmp = FetchB();
-  if (tmp&0x80)  { WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8); }
-  if (tmp&0x40)  { WrMemB(--srB, urB&0xFF);  WrMemB(--srB, urB>>8); }
-  if (tmp&0x20)  { WrMemB(--srB, yrB&0xFF);  WrMemB(--srB, yrB>>8); }
-  if (tmp&0x10)  { WrMemB(--srB, xrB&0xFF);  WrMemB(--srB, xrB>>8); }
-  if (tmp&0x08)  WrMemB(--srB, dprB);
-  if (tmp&0x04)  WrMemB(--srB, brB);
-  if (tmp&0x02)  WrMemB(--srB, arB);
-  if (tmp&0x01)  WrMemB(--srB, ccrB);
-  iclockB += 5;
-}
-void BOp35(void)  // PULS
-{
-  tmp = FetchB();
-  if (tmp&0x01)  ccrB = RdMemB(srB++);
-  if (tmp&0x02)  arB  = RdMemB(srB++);
-  if (tmp&0x04)  brB  = RdMemB(srB++);
-  if (tmp&0x08)  dprB = RdMemB(srB++);
-  if (tmp&0x10)  xrB  = (RdMemB(srB++)<<8) | RdMemB(srB++);
-  if (tmp&0x20)  yrB  = (RdMemB(srB++)<<8) | RdMemB(srB++);
-  if (tmp&0x40)  urB  = (RdMemB(srB++)<<8) | RdMemB(srB++);
-  if (tmp&0x80)  pcrB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-  iclockB += 5;
-}
-void BOp36(void)  // PSHU
-{
-  tmp = FetchB();
-  if (tmp&0x80)  { WrMemB(--urB, pcrB&0xFF);  WrMemB(--urB, pcrB>>8); }
-  if (tmp&0x40)  { WrMemB(--urB, srB&0xFF);  WrMemB(--urB, srB>>8); }
-  if (tmp&0x20)  { WrMemB(--urB, yrB&0xFF);  WrMemB(--urB, yrB>>8); }
-  if (tmp&0x10)  { WrMemB(--urB, xrB&0xFF);  WrMemB(--urB, xrB>>8); }
-  if (tmp&0x08)  WrMemB(--urB, dprB);
-  if (tmp&0x04)  WrMemB(--urB, brB);
-  if (tmp&0x02)  WrMemB(--urB, arB);
-  if (tmp&0x01)  WrMemB(--urB, ccrB);
-  iclockB += 5;
-}
-void BOp37(void)  // PULU
-{
-  tmp = FetchB();
-  if (tmp&0x01)  ccrB = RdMemB(urB++);
-  if (tmp&0x02)  arB  = RdMemB(urB++);
-  if (tmp&0x04)  brB  = RdMemB(urB++);
-  if (tmp&0x08)  dprB = RdMemB(urB++);
-  if (tmp&0x10)  xrB  = (RdMemB(urB++)<<8) | RdMemB(urB++);
-  if (tmp&0x20)  yrB  = (RdMemB(urB++)<<8) | RdMemB(urB++);
-  if (tmp&0x40)  srB  = (RdMemB(urB++)<<8) | RdMemB(urB++);
-  if (tmp&0x80)  pcrB = (RdMemB(urB++)<<8) | RdMemB(urB++);
-  iclockB += 5;
-}
-void BOp39(void)  // RTS
-{
-  pcrB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-  iclockB += 5;
-}
-void BOp3A(void)  // ABX
-{
-  xrB += brB;
-  iclockB += 3;
-}
-void BOp3B(void)  // RTI
-{
-  ccrB = RdMemB(srB++);
-  if (ccrB&0x80)      // If E flag set, pull all regs
-  {
-    arB = RdMemB(srB++);  brB = RdMemB(srB++);  dprB = RdMemB(srB++);
-    xrB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-    yrB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-    urB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-    iclockB += 15;
-  }
-  else
-  {
-    iclockB += 6;
-  }
-  pcrB = (RdMemB(srB++)<<8) | RdMemB(srB++);
-}
-void BOp3C(void)  // CWAI
-{
-  ccrB &= FetchB();  ccrB |= 0x80;
-  iclockB += 1000000;             // Force interrupt
-}
-void BOp3D(void)  // MUL
-{
-  addr = arB * brB;  arB = addr>>8;  brB = addr&0xFF;
-  (addr == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero
-  (brB&0x80   ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry
-  iclockB += 11;
-}
-void BOp3E(void)  // RESET
-{
-}
-void BOp3F(void)  // SWI
-{
-}
-void BOp40(void)  // NEGA
-{ 
-  arB = 256 - arB;
-  (arB > 0x7F  ? ccrB |= 0x01 : ccrB &= 0xFE); // Adjust carry
-  (arB == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0    ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (arB&0x80    ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp43(void)  // COMA
-{
-  arB ^= 0xFF;
-  ccrB &= 0xFD;  ccrB |= 0x01;              // CLV, SEC
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp44(void)  // LSRA
-{
-  (arB&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift low bit into carry
-  arB >>= 1;
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp46(void)  // RORA
-{
-  tmp = arB;  arB = (tmp>>1) + (ccrB&0x01)*128;
-  (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift bit into carry
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp47(void)  // ASRA
-{
-  (arB&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift bit into carry
-  arB >>= 1;                               // Do the shift
-  if (arB&0x40)  arB |= 0x80;               // Set neg if it was set
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp48(void)  // LSLA  [Keep checking from here...]
-{
-  (arB&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift hi bit into carry
-  arB <<= 1;
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp49(void)  // ROLA  
-{
-  tmp = arB;  arB = (tmp<<1) + (ccrB&0x01);
-  (tmp&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift hi bit into carry
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp4A(void)  // DECA
-{
-  arB--;
-  (arB == 0x7F ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-  (arB == 0    ? ccrB |= 0x04 : ccrB &= 0xFB); // Adjust Zero flag
-  (arB&0x80    ? ccrB |= 0x08 : ccrB &= 0xF7); // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp4C(void)  // INCA
-      {
-        arB++;
-        (arB == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp4D(void)  // TSTA
-      {
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp4F(void)  // CLRA
-{
-  arB = 0;
-  ccrB &= 0xF0;  ccrB |= 0x04;                // Set NZVC
-  iclockB += 2;
-}
-void BOp50(void)  // NEGB
-      { 
-        brB = 256 - brB;
-//        ((brB^tmp)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF); // Adjust H carry
-        (brB == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag
-        (brB > 0x7F ? ccrB |= 0x01 : ccrB &= 0xFE); // Adjust carry
-        iclockB += 2;
-      }
-void BOp53(void)  // COMB
-      {
-        brB ^= 0xFF;
-        ccrB &= 0xFD;  ccrB |= 0x01;              // CLV, SEC
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp54(void)  // LSRB
-      {
-        (brB&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift low bit into carry
-        brB >>= 1;
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp56(void)  // RORB
-      {
-        tmp = brB;  brB = (brB >> 1) + (ccrB&0x01)*128;
-        (tmp&0x01 ? ccrB |=0x01 : ccrB &= 0xFE);  // Shift bit into carry
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp57(void)  // ASRB
-      {
-        (brB&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift bit into carry
-        brB >>= 1;                               // Do the shift
-        if (brB&0x40)  brB |= 0x80;               // Set neg if it was set
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp58(void)  // LSLB
-      {
-        (brB&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift hi bit into carry
-        brB <<= 1;
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp59(void)  // ROLB
-{
-  tmp = brB;
-  brB = (tmp<<1) + (ccrB&0x01);
-  (tmp&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift hi bit into carry
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp5A(void)  // DECB
-      {
-        brB--;
-        (brB == 0x7F ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp5C(void)  // INCB
-      {
-        brB++;
-        (brB == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag 
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp5D(void)  // TSTB
-      {
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp5F(void)  // CLRB
-      {
-        brB = 0;
-        ccrB &= 0xF0;  ccrB |= 0x04;                // Set NZVC
-        iclockB += 2;
-      }
-void BOp60(void)  // NEG IDX
-      { 
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr);  BYTE res = 256 - tmp;
-        WrMemB(addr, res);
-//        ((res^tmp)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF); // Adjust H carry
-        (res == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        (res == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag
-        (res&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag
-        (res > 0x7F ? ccrB |= 0x01 : ccrB &= 0xFE); // Adjust carry
-        iclockB += 6;
-      }
-void BOp63(void)  // COM IDX
-      {
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr) ^ 0xFF;
-        WrMemB(addr, tmp);
-        ccrB &= 0xFD;  ccrB |= 0x01;               // CLV, SEC
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp64(void)  // LSR IDX
-      {
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr);
-        (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift low bit into carry
-        tmp >>= 1;  WrMemB(addr, tmp);
-        ccrB &= 0xF7;                             // CLN
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        iclockB += 6;
-      }
-void BOp66(void)  // ROR IDX
-      {
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr);  BYTE tmp2 = tmp;
-        tmp = (tmp >> 1) + (ccrB&0x01)*128;
-        WrMemB(addr, tmp);
-        (tmp2&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift bit into carry
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp67(void)  // ASR IDX
-      {
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr);
-        (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift bit into carry
-        tmp >>= 1;
-        if (tmp&0x40)  tmp |= 0x80;              // Set Neg if it was set
-        WrMemB(addr, tmp);
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp68(void)  // LSL IDX
-      {
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr);
-        (tmp&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift hi bit into carry
-        tmp <<= 1;
-        WrMemB(addr, tmp);
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp69(void)  // ROL IDX
-{
-  BYTE tmp2 = RdMemB(DecodeIDXB(FetchB()));
-  tmp = (tmp2<<1) + (ccrB&0x01);
-  WrMemB(addr, tmp);
-  (tmp2&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift hi bit into carry
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp6A(void)  // DEC IDX
-      {
-  BYTE tmp;  WORD addr;
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr) - 1;
-        WrMemB(addr, tmp);
-        (tmp == 0x7F ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp6C(void)  // INC IDX
-      {       
-        addr = DecodeIDXB(FetchB());
-        tmp = RdMemB(addr) + 1;
-        WrMemB(addr, tmp);
-        (tmp == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOp6D(void)  // TST IDX
-      {
-        tmp = RdMemB(DecodeIDXB(FetchB()));
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag 
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag 
-        iclockB += 6;
-      }
-void BOp6E(void)  // JMP IDX
-{
-  pcrB = DecodeIDXB(FetchB());
-  iclockB += 3;
-}
-void BOp6F(void)  // CLR IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WrMemB(addr, 0);
-  ccrB &= 0xF0;  ccrB |= 0x04;                // Set NZVC
-  iclockB += 6;
-}
-void BOp70(void)  // NEG ABS
-      { 
-        addr = FetchWB();
-        tmp = RdMemB(addr);  BYTE res = 256 - tmp;
-        WrMemB(addr, res);
-        (res == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        (res == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag
-        (res&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag
-        (res > 0x7F ? ccrB |= 0x01 : ccrB &= 0xFE); // Adjust carry
-        iclockB += 7;
-      }
-void BOp73(void)  // COM ABS
-      {
-        addr = FetchWB();
-        tmp = RdMemB(addr) ^ 0xFF;
-        WrMemB(addr, tmp);
-        ccrB &= 0xFD;  ccrB |= 0x01;               // CLV, SEC
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp74(void)  // LSR ABS
-      {
-        addr = FetchWB();
-        tmp = RdMemB(addr);
-        (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift low bit into carry
-        tmp >>= 1;  WrMemB(addr, tmp);
-        ccrB &= 0xF7;                             // CLN
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        iclockB += 7;
-      }
-void BOp76(void)  // ROR ABS
-      {
-  BYTE tmp;  WORD addr;
-        addr = FetchWB();
-        tmp = RdMemB(addr);  BYTE tmp2 = tmp;
-        tmp = (tmp >> 1) + (ccrB&0x01)*128;
-        WrMemB(addr, tmp);
-        (tmp2&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift bit into carry
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp77(void)  // ASR ABS
-      {
-  BYTE tmp;  WORD addr;
-        addr = FetchWB();
-        tmp = RdMemB(addr);
-        (tmp&0x01 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift bit into carry
-        tmp >>= 1;
-        if (tmp&0x40)  tmp |= 0x80;              // Set Neg if it was set
-        WrMemB(addr, tmp);
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp78(void)  // LSL ABS
-      {
-  BYTE tmp;  WORD addr;
-        addr = FetchWB();
-        tmp = RdMemB(addr);
-        (tmp&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Shift hi bit into carry
-        tmp <<= 1;
-        WrMemB(addr, tmp);
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp79(void)  // ROL ABS
-{
-  BYTE tmp2 = RdMemB(FetchWB());
-  tmp = (tmp2<<1) + (ccrB&0x01);
-  WrMemB(addr, tmp);
-  (tmp2&0x80 ? ccrB |= 0x01 : ccrB &= 0xFE); // Shift hi bit into carry
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 7;
-}
-void BOp7A(void)  // DEC ABS
-      {
-  BYTE tmp;  WORD addr;
-        addr = FetchWB();
-        tmp = RdMemB(addr) - 1;
-        WrMemB(addr, tmp);
-        (tmp == 0x7F ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp7C(void)  // INC ABS
-      {       
-  BYTE tmp;  WORD addr;
-        addr = FetchWB();
-        tmp = RdMemB(addr) + 1;
-        WrMemB(addr, tmp);
-        (tmp == 0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // Adjust oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);    // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);    // Adjust Negative flag
-        iclockB += 7;
-      }
-void BOp7D(void)  // TST ABS
-{
-  BYTE tmp = RdMemB(FetchWB());
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);   // Adjust Zero flag 
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);   // Adjust Negative flag 
-  iclockB += 7;
-}
-void BOp7E(void)  // JMP ABS
-{
-  pcrB = FetchWB();
-  iclockB += 3;
-}
-void BOp7F(void)  // CLR ABS
-      {
-        WrMemB(FetchWB(), 0);
-        ccrB &= 0xF0;  ccrB |= 0x04;                // Set NZVC
-        iclockB += 7;
-      }
-void BOp80(void)  // SUBA #
-{ 
-  BYTE tmp = FetchB();  BYTE as = arB; 
-  arB -= tmp;
-  (as < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp81(void)  // CMPA #
-{
-  tmp = FetchB();
-  BYTE db = arB - tmp;
-  (arB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((arB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp82(void)  // SBCA #
-{
-  tmp = FetchB();  BYTE as = arB; 
-  arB = arB - tmp - (ccrB&0x01);
-  (as < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOp83(void)  // SUBD #
-{
-  addr = FetchWB();  WORD dr = (arB<<8)|brB, ds = dr;
-  dr -= addr;
-  (ds < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((ds^addr^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 4;
-}
-void BOp84(void)  // ANDA #
-      {
-        arB &= FetchB();
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp85(void)  // BITA #
-      {
-        tmp = arB & FetchB();
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp86(void)  // LDA #
-      {
-        arB = FetchB();
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp88(void)  // EORA #
-      {
-        arB ^= FetchB();
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp89(void)  // ADCA #
-{
-  tmp = FetchB();
-  addr = (WORD)arB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative
-  iclockB += 2;
-}
-void BOp8A(void)  // ORA #
-      {
-        arB |= FetchB();
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOp8B(void)  // ADDA #
-{       
-  tmp = FetchB();  addr = arB + tmp;
-  (addr > 0xFF ? ccrB |= 0x01 : ccrB &= 0xFE); // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 2;
-}
-void BOp8C(void)  // CMPX #
-{
-        addr = FetchWB();
-        WORD dw = xrB - addr;
-        (xrB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((xrB^addr^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-        (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-}
-void BOp8D(void)  // BSR
-      {
-        tmp = FetchB();
-        WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);
-        pcrB += SignedB(tmp);
-        iclockB += 7;
-      }
-void BOp8E(void)  // LDX #
-      {
-        xrB = FetchWB();
-        ccrB &= 0xFD;                              // CLV
-        (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 3;
-      }
-void BOp90(void)  // SUBA DP
-      { 
-        tmp = RdMemB((dprB<<8)|FetchB());  BYTE as = arB; 
-        arB -= tmp;
-        (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (as < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 4;
-      }
-void BOp91(void)  // CMPA DP
-      {
-        tmp = RdMemB((dprB<<8)|FetchB());
-        BYTE db = arB - tmp;
-        (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (arB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((arB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 4;
-      }
-void BOp92(void)  // SBCA DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());  BYTE as = arB; 
-  arB = arB - tmp - (ccrB&0x01);
-  (as < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOp93(void)  // SUBD DP
-{
-  addr = (dprB<<8)|FetchB();  WORD dr = (arB<<8)|brB, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  dr -= adr2;
-  (ds < adr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 6;
-}
-void BOp94(void)  // ANDA DP
-{
-  arB &= RdMemB((dprB<<8)|FetchB());
-  ccrB &= 0xF1;                   // CLV CLZ CLN
-  if (arB == 0)  ccrB |= 0x04;     // Adjust Zero flag
-  if (arB&0x80)  ccrB |= 0x08;     // Adjust Negative flag
-  iclockB += 4;
-}
-void BOp95(void)  // BITA DP
-      {
-        tmp = arB & RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOp96(void)  // LDA DP
-{
-  arB = RdMemB((dprB<<8)|FetchB());
-  ccrB &= 0xF1;                            // CLN CLZ CLV
-  if (arB == 0)  ccrB |= 0x04;              // Set Zero flag
-  if (arB&0x80)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 4;
-}
-void BOp97(void)  // STA DP
-      {
-        WrMemB((dprB<<8)|FetchB(), arB);
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOp98(void)  // EORA DP
-      {
-        arB ^= RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOp99(void)  // ADCA DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());
-  addr = (WORD)arB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative
-  iclockB += 4;
-}
-void BOp9A(void)  // ORA DP
-      {
-        arB |= RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOp9B(void)  // ADDA DP
-{       
-  tmp = RdMemB((dprB<<8)|FetchB());
-  addr = (WORD)arB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOp9C(void)  // CMPX DP
-      {
-        addr = (dprB<<8)|FetchB();
-        WORD adr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-        WORD dw = xrB - adr2;
-        (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (xrB < adr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((xrB^adr2^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-        iclockB += 6;
-      }
-void BOp9D(void)  // JSR DP
-      {
-        addr = (dprB<<8) | FetchB();
-        WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);
-        pcrB = addr;      // JSR to DP location...
-        iclockB += 7;
-      }
-void BOp9E(void)  // LDX DP
-      {
-        addr = (dprB<<8) | FetchB();
-        xrB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-        ccrB &= 0xFD;                              // CLV
-        (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOp9F(void)  // STX DP
-      {
-        addr = (dprB<<8) | FetchB();
-        WrMemB(addr, xrB>>8);  WrMemB(addr+1, xrB&0xFF);
-        ccrB &= 0xFD;                              // CLV
-        (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpA0(void)  // SUBA IDX
-      { 
-        tmp = RdMemB(DecodeIDXB(FetchB()));  BYTE as = arB; 
-        arB -= tmp;
-        (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (as < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 4;
-      }
-void BOpA1(void)  // CMPA IDX
-      {
-        tmp = RdMemB(DecodeIDXB(FetchB()));
-        BYTE db = arB - tmp;
-        (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (arB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((arB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 4;
-      }
-void BOpA2(void)  // SBCA IDX
-{
-  tmp = RdMemB(DecodeIDXB(FetchB()));  BYTE as = arB; 
-  arB = arB - tmp - (ccrB&0x01);
-  (as < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpA3(void)  // SUBD IDX
-{
-  addr = DecodeIDXB(FetchB());  WORD dr = (arB<<8)|brB, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  dr -= adr2;
-  (ds < adr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 6;
-}
-void BOpA4(void)  // ANDA IDX
-      {
-        arB &= RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpA5(void)  // BITA IDX
-      {
-        tmp = arB & RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpA6(void)  // LDA IDX
-{
-  arB = RdMemB(DecodeIDXB(FetchB()));
-  ccrB &= 0xF1;                        // CLV CLZ CLN
-  if (arB == 0)  ccrB |= 0x04;          // Set Zero flag
-  if (arB&0x80)  ccrB |= 0x08;          // Set Negative flag
-  iclockB += 4;
-}
-void BOpA7(void)  // STA IDX
-{
-  WrMemB(DecodeIDXB(FetchB()), arB);
-  ccrB &= 0xF1;                        // CLV CLZ CLN
-  if (arB == 0)  ccrB |= 0x04;          // Set Zero flag
-  if (arB&0x80)  ccrB |= 0x08;          // Set Negative flag
-  iclockB += 4;
-}
-void BOpA8(void)  // EORA IDX
-      {
-        arB ^= RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // CLV
-        (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpA9(void)  // ADCA IDX
-{
-  tmp = RdMemB(DecodeIDXB(FetchB()));
-  addr = (WORD)arB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpAA(void)  // ORA IDX
-{
-  arB |= RdMemB(DecodeIDXB(FetchB()));
-  ccrB &= 0xFD;                            // CLV
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpAB(void)  // ADDA IDX
-{       
-  tmp = RdMemB(DecodeIDXB(FetchB()));
-  addr = (WORD)arB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpAC(void)  // CMPX IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  WORD dw = xrB - addr2;
-  (dw == 0    ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dw&0x8000  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (xrB < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((xrB^addr2^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 6;
-}
-void BOpAD(void)  // JSR IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);
-  pcrB = addr;                               // JSR directly to IDX ptr
-  iclockB += 7;
-}
-void BOpAE(void)  // LDX IDX
-{
-  addr = DecodeIDXB(FetchB());
-  xrB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-  ccrB &= 0xFD;                              // CLV
-  (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpAF(void)  // STX IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WrMemB(addr, xrB>>8);  WrMemB(addr+1, xrB&0xFF);
-  ccrB &= 0xF1;                              // CLV CLZ CLN
-  if (xrB == 0)    ccrB |= 0x04;              // Set Zero flag
-  if (xrB&0x8000)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 5;
-}
-void BOpB0(void)  // SUBA ABS
-      { 
-        tmp = RdMemB(FetchWB());  BYTE as = arB; 
-        arB -= tmp;
-        (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (as < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 5;
-      }
-void BOpB1(void)  // CMPA ABS
-      {
-        tmp = RdMemB(FetchWB());
-        BYTE db = arB - tmp;
-        (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (arB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((arB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 5;
-      }
-void BOpB2(void)  // SBCA ABS
-{
-  tmp = RdMemB(FetchWB());  BYTE as = arB; 
-  arB = arB - tmp - (ccrB&0x01);
-  (as < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((as^tmp^arB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (arB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB3(void)  // SUBD ABS
-{
-  addr = FetchWB();  WORD dr = (arB<<8)|brB, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  dr -= adr2;
-  (ds < adr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 7;
-}
-void BOpB4(void)  // ANDA ABS
-{
-  arB &= RdMemB(FetchWB());
-  ccrB &= 0xFD;                            // Clear oVerflow flag
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB5(void)  // BITA ABS
-{
-  tmp = arB & RdMemB(FetchWB());
-  ccrB &= 0xFD;                             // Clear oVerflow flag
-  (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB6(void)  // LDA ABS
-{
-  arB = RdMemB(FetchWB());
-  ccrB &= 0xFD;                            // CLV
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB7(void)  // STA ABS
-{
-  WrMemB(FetchWB(), arB);
-  ccrB &= 0xFD;                            // CLV
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB8(void)  // EORA ABS
-{
-  arB ^= RdMemB(FetchWB());
-  ccrB &= 0xFD;                            // CLV
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpB9(void)  // ADCA ABS
-{
-  tmp = RdMemB(FetchWB());
-  addr = (WORD)arB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  arB = addr;                              // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 5;
-}
-void BOpBA(void)  // ORA ABS
-{
-  arB |= RdMemB(FetchWB());
-  ccrB &= 0xFD;                            // CLV
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpBB(void)  // ADDA ABS
-{       
-  tmp = RdMemB(FetchWB());
-  addr = (WORD)arB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((arB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((arB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo
-  arB = addr & 0xFF;                       // Set accumulator
-  (arB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (arB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 5;
-}
-void BOpBC(void)  // CMPX ABS
-{
-  addr = FetchWB();  WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  WORD dw = xrB - addr2;
-  (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (xrB < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((xrB^addr2^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 7;
-}
-void BOpBD(void)  // JSR ABS
-{
-  addr = FetchWB();
-  WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);
-  pcrB = addr;                          // Go to absolute address (Not indir) 
-  iclockB += 8;
-}
-void BOpBE(void)  // LDX ABS
-{
-  addr = FetchWB();
-  xrB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-  ccrB &= 0xFD;                              // CLV
-  (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 6;
-}
-void BOpBF(void)  // STX ABS
-      {
-        addr = FetchWB();
-        WrMemB(addr, xrB>>8);  WrMemB(addr+1, xrB&0xFF);
-        ccrB &= 0xFD;                              // CLV
-        (xrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (xrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOpC0(void)  // SUBB #
-      { 
-        tmp = FetchB();  BYTE bs = brB; 
-        brB -= tmp;
-        (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (bs < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 2;
-      }
-void BOpC1(void)  // CMPB #
-      {
-        tmp = FetchB();
-        BYTE db = brB - tmp;
-        (brB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((brB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOpC2(void)  // SBCB #
-{
-  tmp = FetchB();  BYTE bs = brB; 
-  brB = brB - tmp - (ccrB&0x01);
-  (bs < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 2;
-}
-void BOpC3(void)  // ADDD #
-{
-  addr = FetchWB();  long dr = ((arB<<8)|brB)&0xFFFF, ds = dr;
-  dr += addr;
-  (dr > 0xFFFF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  dr &= 0xFFFF;
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  ((ds^addr^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 4;
-}
-void BOpC4(void)  // ANDB #
-      {
-        brB &= FetchB();
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOpC5(void)  // BITB #
-{
-  tmp = brB & FetchB();
-  ccrB &= 0xF1;                             // CLV CLZ CLN
-  if (tmp == 0)  ccrB |= 0x04;              // Set Zero flag
-  if (tmp&0x80)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 2;
-}
-void BOpC6(void)  // LDB #
-{
-  brB = FetchB();
-  ccrB &= 0xF1;                             // CLV CLZ CLN
-  if (brB == 0)  ccrB |= 0x04;               // Set Zero flag
-  if (brB&0x80)  ccrB |= 0x08;               // Set Negative flag
-  iclockB += 2;
-}
-void BOpC8(void)  // EORB #
-      {
-        brB ^= FetchB();
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOpC9(void)  // ADCB #
-{
-  tmp = FetchB();
-  addr = (WORD)brB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  brB = addr & 0xFF;                       // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 2;
-}
-void BOpCA(void)  // ORB #
-      {
-        brB |= FetchB();
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 2;
-      }
-void BOpCB(void)  // ADDB #
-{       
-  tmp = FetchB();  addr = brB + tmp;
-  (addr > 0xFF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  brB = addr & 0xFF;                       // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 2;
-}
-void BOpCC(void)  // LDD #
-{
-  arB = FetchB();  brB = FetchB();
-  ccrB &= 0xFD;                                 // CLV
-  ((arB+brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 3;
-}
-void BOpCE(void)  // LDU #
-{
-  urB = FetchWB();
-  ccrB &= 0xFD;                              // CLV
-  (urB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (urB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 3;
-}
-void BOpD0(void)  // SUBB DP
-{ 
-  tmp = RdMemB((dprB<<8)|FetchB());  BYTE bs = brB; 
-  brB -= tmp;
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (bs < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 4;
-}
-void BOpD1(void)  // CMPB DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());
-  BYTE db = brB - tmp;
-  (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (brB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((brB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 4;
-}
-void BOpD2(void)  // SBCB DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());  BYTE bs = brB; 
-  brB = brB - tmp - (ccrB&0x01);
-  (bs < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpD3(void)  // ADDD DP
-{
-  addr = (dprB<<8)|FetchB();  long dr = ((arB<<8)|brB)&0xFFFF, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8)|RdMemB(addr+1);
-  dr += adr2;
-  (dr > 0xFFFF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  dr &= 0xFFFF;
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 6;
-}
-void BOpD4(void)  // ANDB DP
-      {
-        brB &= RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpD5(void)  // BITB DP
-      {
-        tmp = brB & RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpD6(void)  // LDB DP
-{
-  brB = RdMemB((dprB<<8)|FetchB());
-  ccrB &= 0xFD;                            // CLV
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpD7(void)  // STB DP
-      {
-        WrMemB((dprB<<8)|FetchB(), brB);
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpD8(void)  // EORB DP
-      {
-        brB ^= RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpD9(void)  // ADCB DP
-{
-  tmp = RdMemB((dprB<<8)|FetchB());
-  addr = (WORD)brB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  brB = addr;                              // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpDA(void)  // ORB DP
-      {
-        brB |= RdMemB((dprB<<8)|FetchB());
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpDB(void)  // ADDB DP
-{       
-  tmp = RdMemB((dprB<<8)|FetchB());
-  addr = (WORD)brB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  brB = addr & 0xFF;                       // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpDC(void)  // LDD DP
-{
-  addr = (dprB<<8)|FetchB();
-  arB = RdMemB(addr);  brB = RdMemB(addr+1);
-  ccrB &= 0xFD;                                 // CLV
-  ((arB|brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpDD(void)  // STD DP
-{
-  addr = (dprB<<8)|FetchB();
-  WrMemB(addr, arB);  WrMemB(addr+1, brB);
-  ccrB &= 0xFD;                                 // CLV
-  ((arB|brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpDE(void)  // LDU DP
-{
-  addr = (dprB<<8)|FetchB();
-  urB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-  ccrB &= 0xFD;                              // CLV
-  (urB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (urB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpDF(void)  // STU DP
-{
-  addr = (dprB<<8)|FetchB();
-  WrMemB(addr, urB>>8);  WrMemB(addr+1, urB&0xFF);
-  ccrB &= 0xFD;                              // CLV
-  (urB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (urB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpE0(void)  // SUBB IDX
-{ 
-  tmp = RdMemB(DecodeIDXB(FetchB()));  BYTE bs = brB; 
-  brB -= tmp;
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (bs < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 4;
-}
-void BOpE1(void)  // CMPB IDX
-{
-  tmp = RdMemB(DecodeIDXB(FetchB()));
-  BYTE db = brB - tmp;
-  (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (brB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((brB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 4;
-}
-void BOpE2(void)  // SBCB IDX
-{
-  tmp = RdMemB(DecodeIDXB(FetchB()));  BYTE bs = brB; 
-  brB = brB - tmp - (ccrB&0x01);
-  (bs < (tmp+(ccrB&0x01)) ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpE3(void)  // ADDD IDX
-{
-  addr = DecodeIDXB(FetchB());  long dr = ((arB<<8)|brB)&0xFFFF, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8)|RdMemB(addr+1);
-  dr += adr2;
-  (dr > 0xFFFF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  dr &= 0xFFFF;
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 6;
-}
-void BOpE4(void)  // ANDB IDX
-      {
-        brB &= RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpE5(void)  // BITB IDX
-      {
-        tmp = brB & RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpE6(void)  // LDB IDX
-      {
-        brB = RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpE7(void)  // STB IDX
-{
-  WrMemB(DecodeIDXB(FetchB()), brB);
-  ccrB &= 0xF1;                            // CLV CLZ CLN
-  if (brB == 0)  ccrB |= 0x04;              // Adjust Zero flag
-  if (brB&0x80)  ccrB |= 0x08;              // Adjust Negative flag
-  iclockB += 4;
-}
-void BOpE8(void)  // EORB IDX
-      {
-        brB ^= RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpE9(void)  // ADCB IDX
-{
-  tmp = RdMemB(DecodeIDXB(FetchB()));
-  addr = (WORD)brB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  brB = addr;                              // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpEA(void)  // ORB IDX
-      {
-        brB |= RdMemB(DecodeIDXB(FetchB()));
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 4;
-      }
-void BOpEB(void)  // ADDB IDX
-{       
-  tmp = RdMemB(DecodeIDXB(FetchB()));
-  addr = (WORD)brB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow 
-  brB = addr;                              // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 4;
-}
-void BOpEC(void)  // LDD IDX
-{
-  addr = DecodeIDXB(FetchB());
-  arB = RdMemB(addr);  brB = RdMemB(addr+1);
-  ccrB &= 0xF1;                             // CLV CLZ CLN
-  if (!(arB|brB))  ccrB |= 0x04;              // Adjust Zero flag
-  if (arB&0x80)   ccrB |= 0x08;              // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpED(void)  // STD IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WrMemB(addr, arB);  WrMemB(addr+1, brB);
-  ccrB &= 0xF1;                             // CLV CLZ CLZ
-  if (!(arB|brB))  ccrB |= 0x04;              // Adjust Zero flag
-  if (arB&0x80)   ccrB |= 0x08;              // Adjust Negative flag
-  iclockB += 5;
-}
-void BOpEE(void)  // LDU IDX
-{
-  addr = DecodeIDXB(FetchB());
-  urB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-  ccrB &= 0xF1;                              // CLV CLZ CLN
-  if (urB == 0)    ccrB |= 0x04;              // Set Zero flag
-  if (urB&0x8000)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 5;
-}
-void BOpEF(void)  // STU IDX
-{
-  addr = DecodeIDXB(FetchB());
-  WrMemB(addr, urB>>8);  WrMemB(addr+1, urB&0xFF);
-  ccrB &= 0xF1;                              // CLV CLZ CLN
-  if (urB == 0)    ccrB |= 0x04;              // Set Zero flag
-  if (urB&0x8000)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 5;
-}
-void BOpF0(void)  // SUBB ABS
-      { 
-        tmp = RdMemB(FetchWB());  BYTE bs = brB; 
-        brB -= tmp;
-        (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (bs < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-      }
-void BOpF1(void)  // CMPB ABS
-      {
-        tmp = RdMemB(FetchWB());
-        BYTE db = brB - tmp;
-        (db == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (db&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        (brB < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-        ((brB^tmp^db^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-        iclockB += 5;
-      }
-void BOpF2(void)  // SBCB ABS
-{
-  tmp = RdMemB(FetchWB());  BYTE bs = brB; 
-  brB = brB - tmp - (ccrB&0x01);
-  (brB == 0  ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (brB&0x80  ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  (bs < tmp ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  ((bs^tmp^brB^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflow
-  iclockB += 5;
-}
-void BOpF3(void)  // ADDD ABS
-{
-  addr = FetchWB();  long dr = ((arB<<8)|brB)&0xFFFF, ds = dr;
-  WORD adr2 = (RdMemB(addr)<<8)|RdMemB(addr+1);
-  dr += adr2;
-  (dr > 0xFFFF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-  dr &= 0xFFFF;
-  (dr == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  ((ds^adr2^dr^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-  arB = dr>>8;  brB = dr&0xFF;
-  iclockB += 7;
-}
-void BOpF4(void)  // ANDB ABS
-      {
-        brB &= RdMemB(FetchWB());
-        ccrB &= 0xFD;                            // Clear oVerflow flag
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpF5(void)  // BITB ABS
-      {
-        tmp = brB & RdMemB(FetchWB());
-        ccrB &= 0xFD;                             // Clear oVerflow flag
-        (tmp == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (tmp&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpF6(void)  // LDB ABS
-      {
-        brB = RdMemB(FetchWB());
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpF7(void)  // STB ABS
-      {
-        WrMemB(FetchWB(), brB);
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpF8(void)  // EORB ABS
-      {
-        brB ^= RdMemB(FetchWB());
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }
-void BOpF9(void)  // ADCB ABS
-{
-  tmp = RdMemB(FetchWB());
-  addr = (WORD)brB + (WORD)tmp + (WORD)(ccrB&0x01);
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  brB = addr & 0xFF;                       // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 5;
-}
-void BOpFA(void)  // ORB ABS
-      {
-        brB |= RdMemB(FetchWB());
-        ccrB &= 0xFD;                            // CLV
-        (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 5;
-      }       
-void BOpFB(void)  // ADDB ABS
-{       
-  tmp = RdMemB(FetchWB());
-  addr = (WORD)brB + (WORD)tmp;
-  (addr > 0x00FF ? ccrB |= 0x01 : ccrB &= 0xFE);  // Set Carry flag
-  ((brB^tmp^addr)&0x10 ? ccrB |= 0x20 : ccrB &= 0xDF);  // Set Half carry
-  ((brB^tmp^addr^(ccrB<<7))&0x80 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerflo 
-  brB = addr & 0xFF;                       // Set accumulator
-  (brB == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Set Zero flag
-  (brB&0x80 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Set Negative flag
-  iclockB += 5;
-}
-void BOpFC(void)  // LDD ABS
-      {
-        addr = FetchWB();
-        arB = RdMemB(addr);  brB = RdMemB(addr+1);
-        ccrB &= 0xFD;                                 // CLV
-        ((arB+brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOpFD(void)  // STD ABS
-      {
-        addr = FetchWB();
-        WrMemB(addr, arB);  WrMemB(addr+1, brB);
-        ccrB &= 0xFD;                                 // CLV
-        ((arB+brB) == 0 ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (arB&0x80      ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOpFE(void)  // LDU ABS
-      {
-        addr = FetchWB();
-        urB = (RdMemB(addr) << 8) | RdMemB(addr+1);
-        ccrB &= 0xFD;                              // CLV
-        (urB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (urB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-void BOpFF(void)  // STU ABS
-      {
-        addr = FetchWB();
-        WrMemB(addr, urB>>8);  WrMemB(addr+1, urB&0xFF);
-        ccrB &= 0xFD;                              // CLV
-        (urB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-        (urB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-        iclockB += 6;
-      }
-
-//
-// Page one opcodes' execute code
-//
-
-void BOp1021(void)  // LBRN
-{
-  addr = FetchWB();
-  iclockB += 5;
-}
-void BOp1022(void)  // LBHI
-{
-  addr = FetchWB();
-  if (!((ccrB&0x01)|(ccrB&0x04)))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1023(void)  // LBLS
-{
-  addr = FetchWB();
-  if ((ccrB&0x01)|(ccrB&0x04))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1024(void)  // LBCC (LBHS)
-{
-  addr = FetchWB();
-  if (!(ccrB&0x01))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1025(void)  // LBCS (LBLO)
-{
-  addr = FetchWB();
-  if (ccrB&0x01)  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1026(void)  // LBNE
-{
-  addr = FetchWB();
-  if (!(ccrB&0x04))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1027(void)  // LBEQ
-{
-  addr = FetchWB();
-  if (ccrB&0x04)  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1028(void)  // LBVC
-{
-  addr = FetchWB();
-  if (!(ccrB&0x02))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp1029(void)  // LBVS
-{
-  addr = FetchWB();
-  if (ccrB&0x02)  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102A(void)  // LBPL
-{
-  addr = FetchWB();
-  if (!(ccrB&0x08))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102B(void)  // LBMI
-{
-  addr = FetchWB();
-  if (ccrB&0x08)  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102C(void)  // LBGE
-{
-  addr = FetchWB();
-  if (!(((ccrB&0x08) >> 2) ^ (ccrB&0x02)))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102D(void)  // LBLT
-{
-  addr = FetchWB();
-  if (((ccrB&0x08) >> 2) ^ (ccrB&0x02))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102E(void)  // LBGT
-{
-  addr = FetchWB();
-  if (!((ccrB&0x04) | (((ccrB&0x08) >> 2) ^ (ccrB&0x02))))  pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp102F(void)  // LBLE
-{
-  addr = FetchWB();
-  if ((ccrB&0x04) | (((ccrB&0x08) >> 2) ^ (ccrB&0x02))) pcrB += SignedW(addr);
-  iclockB += 5;
-}
-void BOp103F(void)  // SWI2 (Not yet implemented)
-{
-  iclockB += 20;
-}
-void BOp1083(void)  // CMPD #
-    {
-      addr = FetchWB();  WORD dr = (arB<<8)|brB;
-      WORD dw = dr - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (dr < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      ((dr^addr^dw^((WORD)ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 5;
-    }
-void BOp108C(void)  // CMPY #
-    {
-      addr = FetchWB();
-      WORD dw = yrB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (yrB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      ((yrB^addr^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 5;
-    }
-void BOp108E(void)  // LDY #
-    {
-      yrB = FetchWB();
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 4;
-    }
-void BOp1093(void)  // CMPD DP
-    {
-      WORD adr2 = (dprB<<8)|FetchB(), dr = (arB<<8)|brB;
-      addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-      WORD dw = dr - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (dr < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      ((dr^addr^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp109C(void)  // CMPY DP
-    {
-      WORD adr2 = (dprB<<8)|FetchB();
-      addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-      WORD dw = yrB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (yrB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      ((yrB^addr^dw^(ccrB<<15))&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp109E(void)  // LDY DP
-    {
-      addr = (dprB<<8)|FetchB();
-      yrB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp109F(void)  // STY DP
-    {
-      addr = (dprB<<8)|FetchB();
-      WrMemB(addr, yrB>>8);  WrMemB(addr+1, yrB&0xFF);
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp10A3(void)  // CMPD IDX
-{
-  WORD adr2 = DecodeIDXB(FetchB()), dr = (arB<<8)|brB;
-  addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-  WORD dw = dr - addr;
-  ccrB &= 0xF0;                              // CLC CLV CLZ CLN
-  if (dr < addr)  ccrB |= 0x01;              // Set Carry flag
-  if ((dr^addr^dw^(ccrB<<15))&0x8000)  ccrB |= 0x02; // Set oVerflow
-  if (dw == 0)    ccrB |= 0x04;              // Set Zero flag
-  if (dw&0x8000)  ccrB |= 0x08;              // Set Negative flag
-  iclockB += 7;
-}
-void BOp10AC(void)  // CMPY IDX
-    {
-      WORD adr2 = DecodeIDXB(FetchB());
-      addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-      WORD dw = yrB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (yrB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^yrB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp10AE(void)  // LDY IDX
-{
-  addr = DecodeIDXB(FetchB());
-  yrB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-  ccrB &= 0xF1;                              // CLV CLZ CLN
-  if (yrB == 0)    ccrB |= 0x04;              // Adjust Zero flag
-  if (yrB&0x8000)  ccrB |= 0x08;              // Adjust Negative flag
-  iclockB += 6;
-}
-void BOp10AF(void)  // STY IDX
-    {
-      addr = DecodeIDXB(FetchB());
-      WrMemB(addr, yrB>>8);  WrMemB(addr+1, yrB&0xFF);
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp10B3(void)  // CMPD ABS
-    {
-      addr = FetchWB();  WORD dr = (arB<<8)|brB;
-      WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      WORD dw = dr - addr2;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (dr < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^dr^addr2^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 8;
-    }
-void BOp10BC(void)  // CMPY ABS
-    {
-      addr = FetchWB();  WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      WORD dw = yrB - addr2;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (yrB < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^yrB^addr2^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 8;
-    }
-void BOp10BE(void)  // LDY ABS
-    {
-      addr = FetchWB();
-      yrB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 7;
-    }
-void BOp10BF(void)  // STY ABS
-    {
-      addr = FetchWB();
-      WrMemB(addr, yrB>>8);  WrMemB(addr+1, yrB&0xFF);
-      ccrB &= 0xFD;                              // CLV
-      (yrB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (yrB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 7;
-    }
-void BOp10CE(void)  // LDS #
-    {
-      srB = FetchWB();
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 4;
-    }
-void BOp10DE(void)  // LDS DP
-    {
-      addr = (dprB<<8)|FetchB();
-      srB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;                     
-    }
-void BOp10DF(void)  // STS DP
-    {
-      addr = (dprB<<8)|FetchB();
-      WrMemB(addr, srB>>8);  WrMemB(addr+1, srB&0xFF);
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp10EE(void)  // LDS IDX
-    {
-      addr = DecodeIDXB(FetchB());
-      srB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp10EF(void)  // STS IDX
-    {
-      addr = DecodeIDXB(FetchB());
-      WrMemB(addr, srB>>8);  WrMemB(addr+1, srB&0xFF);
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 6;
-    }
-void BOp10FE(void)  // LDS ABS
-    {
-      addr = FetchWB();
-      srB = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      ccrB &= 0xFD;                              // CLV
-      (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      iclockB += 7;
-    }
-void BOp10FF(void)  // STS ABS
-{
-  addr = FetchWB();
-  WrMemB(addr, srB>>8);  WrMemB(addr+1, srB&0xFF);
-  ccrB &= 0xFD;                              // CLV
-  (srB == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-  (srB&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-  iclockB += 7;
-}
-
-//
-// Page two opcodes' execute code
-//
-
-void BOp113F(void)  // SWI3
-    {
-      iclockB += 20;
-    }
-void BOp1183(void)  // CMPU #
-    {
-      addr = FetchWB();
-      WORD dw = urB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (urB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^urB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 5;
-    }
-void BOp118C(void)  // CMPS #
-    {
-      addr = FetchWB();
-      WORD dw = srB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (srB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^srB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 5;
-    }
-void BOp1193(void)  // CMPU DP
-    {
-      WORD adr2 = (dprB<<8)|FetchB();
-      addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-      WORD dw = urB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (urB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^urB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp119C(void)  // CMPS DP
-    {
-      WORD adr2 = (dprB<<8)|FetchB();
-      addr = (RdMemB(adr2)<<8) | RdMemB(adr2+1);
-      WORD dw = srB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (srB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^srB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp11A3(void)  // CMPU IDX
-    {
-      WORD addr2 = DecodeIDXB(FetchB());
-      addr = (RdMemB(addr2)<<8) | RdMemB(addr2+1);
-      WORD dw = urB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (urB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^urB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp11AC(void)  // CMPS IDX
-    {
-      WORD addr2 = DecodeIDXB(FetchB());
-      addr = (RdMemB(addr2)<<8) | RdMemB(addr2+1);
-      WORD dw = srB - addr;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (srB < addr ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^srB^addr^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 7;
-    }
-void BOp11B3(void)  // CMPU ABS
-    {
-      addr = FetchWB();  WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      WORD dw = urB - addr2;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (urB < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^urB^addr2^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 8;
-    }
-void BOp11BC(void)  // CMPS ABS
-    {
-      addr = FetchWB();  WORD addr2 = (RdMemB(addr)<<8) | RdMemB(addr+1);
-      WORD dw = srB - addr2;
-      (dw == 0   ? ccrB |= 0x04 : ccrB &= 0xFB);  // Adjust Zero flag
-      (dw&0x8000 ? ccrB |= 0x08 : ccrB &= 0xF7);  // Adjust Negative flag
-      (srB < addr2 ? ccrB |= 0x01 : ccrB &= 0xFE);  // Adjust Carry flag
-      (((ccrB<<15)^srB^addr2^dw)&0x8000 ? ccrB |= 0x02 : ccrB &= 0xFD); // oVerfl
-      iclockB += 8;
-    }
-
-void IllegalBOp(void) { iclockB++;  illegalB = true; }
-
-//
-// Initialize 6809 function adressess
-//
-void Init_6809B(void)
-{
-  for(int i=0; i<256; i++)          // Set all functions to illegal
-  {
-    exec_op0B[i] = IllegalBOp;
-    exec_op1B[i] = IllegalBOp;
-    exec_op2B[i] = IllegalBOp;
-  }
-  exec_op0B[0x00] = BOp00;  exec_op0B[0x03] = BOp03;  exec_op0B[0x04] = BOp04;
-  exec_op0B[0x06] = BOp06;  exec_op0B[0x07] = BOp07;  exec_op0B[0x08] = BOp08;
-  exec_op0B[0x09] = BOp09;  exec_op0B[0x0A] = BOp0A;  exec_op0B[0x0C] = BOp0C;
-  exec_op0B[0x0D] = BOp0D;  exec_op0B[0x0E] = BOp0E;  exec_op0B[0x0F] = BOp0F;
-  exec_op0B[0x12] = BOp12;  exec_op0B[0x13] = BOp13;  exec_op0B[0x16] = BOp16;
-  exec_op0B[0x17] = BOp17;  exec_op0B[0x19] = BOp19;  exec_op0B[0x1A] = BOp1A;
-  exec_op0B[0x1C] = BOp1C;  exec_op0B[0x1D] = BOp1D;  exec_op0B[0x1E] = BOp1E;
-  exec_op0B[0x1F] = BOp1F;  exec_op0B[0x20] = BOp20;  exec_op0B[0x21] = BOp21;
-  exec_op0B[0x22] = BOp22;  exec_op0B[0x23] = BOp23;  exec_op0B[0x24] = BOp24;
-  exec_op0B[0x25] = BOp25;  exec_op0B[0x26] = BOp26;  exec_op0B[0x27] = BOp27;
-  exec_op0B[0x28] = BOp28;  exec_op0B[0x29] = BOp29;  exec_op0B[0x2A] = BOp2A;
-  exec_op0B[0x2B] = BOp2B;  exec_op0B[0x2C] = BOp2C;  exec_op0B[0x2D] = BOp2D;
-  exec_op0B[0x2E] = BOp2E;  exec_op0B[0x2F] = BOp2F;  exec_op0B[0x30] = BOp30;
-  exec_op0B[0x31] = BOp31;  exec_op0B[0x32] = BOp32;  exec_op0B[0x33] = BOp33;
-  exec_op0B[0x34] = BOp34;  exec_op0B[0x35] = BOp35;  exec_op0B[0x36] = BOp36;
-  exec_op0B[0x37] = BOp37;  exec_op0B[0x39] = BOp39;  exec_op0B[0x3A] = BOp3A;
-  exec_op0B[0x3B] = BOp3B;  exec_op0B[0x3C] = BOp3C;  exec_op0B[0x3D] = BOp3D;
-  exec_op0B[0x3E] = BOp3E;  exec_op0B[0x3F] = BOp3F;  exec_op0B[0x40] = BOp40;
-  exec_op0B[0x43] = BOp43;  exec_op0B[0x44] = BOp44;  exec_op0B[0x46] = BOp46;
-  exec_op0B[0x47] = BOp47;  exec_op0B[0x48] = BOp48;  exec_op0B[0x49] = BOp49;
-  exec_op0B[0x4A] = BOp4A;  exec_op0B[0x4C] = BOp4C;  exec_op0B[0x4D] = BOp4D;
-  exec_op0B[0x4F] = BOp4F;  exec_op0B[0x50] = BOp50;  exec_op0B[0x53] = BOp53;
-  exec_op0B[0x54] = BOp54;  exec_op0B[0x56] = BOp56;  exec_op0B[0x57] = BOp57;
-  exec_op0B[0x58] = BOp58;  exec_op0B[0x59] = BOp59;  exec_op0B[0x5A] = BOp5A;
-  exec_op0B[0x5C] = BOp5C;  exec_op0B[0x5D] = BOp5D;  exec_op0B[0x5F] = BOp5F;
-  exec_op0B[0x60] = BOp60;  exec_op0B[0x63] = BOp63;  exec_op0B[0x64] = BOp64;
-  exec_op0B[0x66] = BOp66;  exec_op0B[0x67] = BOp67;  exec_op0B[0x68] = BOp68;
-  exec_op0B[0x69] = BOp69;  exec_op0B[0x6A] = BOp6A;  exec_op0B[0x6C] = BOp6C;
-  exec_op0B[0x6D] = BOp6D;  exec_op0B[0x6E] = BOp6E;  exec_op0B[0x6F] = BOp6F;
-  exec_op0B[0x70] = BOp70;  exec_op0B[0x73] = BOp73;  exec_op0B[0x74] = BOp74;
-  exec_op0B[0x76] = BOp76;  exec_op0B[0x77] = BOp77;  exec_op0B[0x78] = BOp78;
-  exec_op0B[0x79] = BOp79;  exec_op0B[0x7A] = BOp7A;  exec_op0B[0x7C] = BOp7C;
-  exec_op0B[0x7D] = BOp7D;  exec_op0B[0x7E] = BOp7E;  exec_op0B[0x7F] = BOp7F;
-  exec_op0B[0x80] = BOp80;  exec_op0B[0x81] = BOp81;  exec_op0B[0x82] = BOp82;
-  exec_op0B[0x83] = BOp83;  exec_op0B[0x84] = BOp84;  exec_op0B[0x85] = BOp85;
-  exec_op0B[0x86] = BOp86;  exec_op0B[0x88] = BOp88;  exec_op0B[0x89] = BOp89;
-  exec_op0B[0x8A] = BOp8A;  exec_op0B[0x8B] = BOp8B;  exec_op0B[0x8C] = BOp8C;
-  exec_op0B[0x8D] = BOp8D;  exec_op0B[0x8E] = BOp8E;  exec_op0B[0x90] = BOp90;
-  exec_op0B[0x91] = BOp91;  exec_op0B[0x92] = BOp92;  exec_op0B[0x93] = BOp93;
-  exec_op0B[0x94] = BOp94;  exec_op0B[0x95] = BOp95;  exec_op0B[0x96] = BOp96;
-  exec_op0B[0x97] = BOp97;  exec_op0B[0x98] = BOp98;  exec_op0B[0x99] = BOp99;
-  exec_op0B[0x9A] = BOp9A;  exec_op0B[0x9B] = BOp9B;  exec_op0B[0x9C] = BOp9C;
-  exec_op0B[0x9D] = BOp9D;  exec_op0B[0x9E] = BOp9E;  exec_op0B[0x9F] = BOp9F;
-  exec_op0B[0xA0] = BOpA0;  exec_op0B[0xA1] = BOpA1;  exec_op0B[0xA2] = BOpA2;
-  exec_op0B[0xA3] = BOpA3;  exec_op0B[0xA4] = BOpA4;  exec_op0B[0xA5] = BOpA5;
-  exec_op0B[0xA6] = BOpA6;  exec_op0B[0xA7] = BOpA7;  exec_op0B[0xA8] = BOpA8;
-  exec_op0B[0xA9] = BOpA9;  exec_op0B[0xAA] = BOpAA;  exec_op0B[0xAB] = BOpAB;
-  exec_op0B[0xAC] = BOpAC;  exec_op0B[0xAD] = BOpAD;  exec_op0B[0xAE] = BOpAE;
-  exec_op0B[0xAF] = BOpAF;  exec_op0B[0xB0] = BOpB0;  exec_op0B[0xB1] = BOpB1;
-  exec_op0B[0xB2] = BOpB2;  exec_op0B[0xB3] = BOpB3;  exec_op0B[0xB4] = BOpB4;
-  exec_op0B[0xB5] = BOpB5;  exec_op0B[0xB6] = BOpB6;  exec_op0B[0xB7] = BOpB7;
-  exec_op0B[0xB8] = BOpB8;  exec_op0B[0xB9] = BOpB9;  exec_op0B[0xBA] = BOpBA;
-  exec_op0B[0xBB] = BOpBB;  exec_op0B[0xBC] = BOpBC;  exec_op0B[0xBD] = BOpBD;
-  exec_op0B[0xBE] = BOpBE;  exec_op0B[0xBF] = BOpBF;  exec_op0B[0xC0] = BOpC0;
-  exec_op0B[0xC1] = BOpC1;  exec_op0B[0xC2] = BOpC2;  exec_op0B[0xC3] = BOpC3;
-  exec_op0B[0xC4] = BOpC4;  exec_op0B[0xC5] = BOpC5;  exec_op0B[0xC6] = BOpC6;
-  exec_op0B[0xC8] = BOpC8;  exec_op0B[0xC9] = BOpC9;  exec_op0B[0xCA] = BOpCA;
-  exec_op0B[0xCB] = BOpCB;  exec_op0B[0xCC] = BOpCC;
-  exec_op0B[0xCE] = BOpCE;  exec_op0B[0xD0] = BOpD0;  exec_op0B[0xD1] = BOpD1;
-  exec_op0B[0xD2] = BOpD2;  exec_op0B[0xD3] = BOpD3;  exec_op0B[0xD4] = BOpD4;
-  exec_op0B[0xD5] = BOpD5;  exec_op0B[0xD6] = BOpD6;  exec_op0B[0xD7] = BOpD7;
-  exec_op0B[0xD8] = BOpD8;  exec_op0B[0xD9] = BOpD9;  exec_op0B[0xDA] = BOpDA;
-  exec_op0B[0xDB] = BOpDB;  exec_op0B[0xDC] = BOpDC;  exec_op0B[0xDD] = BOpDD;
-  exec_op0B[0xDE] = BOpDE;  exec_op0B[0xDF] = BOpDF;  exec_op0B[0xE0] = BOpE0;
-  exec_op0B[0xE1] = BOpE1;  exec_op0B[0xE2] = BOpE2;  exec_op0B[0xE3] = BOpE3;
-  exec_op0B[0xE4] = BOpE4;  exec_op0B[0xE5] = BOpE5;  exec_op0B[0xE6] = BOpE6;
-  exec_op0B[0xE7] = BOpE7;  exec_op0B[0xE8] = BOpE8;  exec_op0B[0xE9] = BOpE9;
-  exec_op0B[0xEA] = BOpEA;  exec_op0B[0xEB] = BOpEB;  exec_op0B[0xEC] = BOpEC;
-  exec_op0B[0xED] = BOpED;  exec_op0B[0xEE] = BOpEE;  exec_op0B[0xEF] = BOpEF;
-  exec_op0B[0xF0] = BOpF0;
-  exec_op0B[0xF1] = BOpF1;  exec_op0B[0xF2] = BOpF2;  exec_op0B[0xF3] = BOpF3;
-  exec_op0B[0xF4] = BOpF4;  exec_op0B[0xF5] = BOpF5;  exec_op0B[0xF6] = BOpF6;
-  exec_op0B[0xF7] = BOpF7;  exec_op0B[0xF8] = BOpF8;  exec_op0B[0xF9] = BOpF9;
-  exec_op0B[0xFA] = BOpFA;  exec_op0B[0xFB] = BOpFB;  exec_op0B[0xFC] = BOpFC;
-  exec_op0B[0xFD] = BOpFD;  exec_op0B[0xFE] = BOpFE;  exec_op0B[0xFF] = BOpFF;
-
-  exec_op1B[0x21] = BOp1021; exec_op1B[0x22] = BOp1022; exec_op1B[0x23] = BOp1023;
-  exec_op1B[0x24] = BOp1024; exec_op1B[0x25] = BOp1025; exec_op1B[0x26] = BOp1026;
-  exec_op1B[0x27] = BOp1027; exec_op1B[0x28] = BOp1028; exec_op1B[0x29] = BOp1029;
-  exec_op1B[0x2A] = BOp102A; exec_op1B[0x2B] = BOp102B; exec_op1B[0x2C] = BOp102C;
-  exec_op1B[0x2D] = BOp102D; exec_op1B[0x2E] = BOp102E; exec_op1B[0x2F] = BOp102F;
-  exec_op1B[0x3F] = BOp103F; exec_op1B[0x83] = BOp1083; exec_op1B[0x8C] = BOp108C;
-  exec_op1B[0x8E] = BOp108E; exec_op1B[0x93] = BOp1093; exec_op1B[0x9C] = BOp109C;
-  exec_op1B[0x9E] = BOp109E; exec_op1B[0x9F] = BOp109F; exec_op1B[0xA3] = BOp10A3;
-  exec_op1B[0xAC] = BOp10AC; exec_op1B[0xAE] = BOp10AE; exec_op1B[0xAF] = BOp10AF;
-  exec_op1B[0xB3] = BOp10B3; exec_op1B[0xBC] = BOp10BC; exec_op1B[0xBE] = BOp10BE;
-  exec_op1B[0xBF] = BOp10BF; exec_op1B[0xCE] = BOp10CE; exec_op1B[0xDE] = BOp10DE;
-  exec_op1B[0xDF] = BOp10DF; exec_op1B[0xEE] = BOp10EE; exec_op1B[0xEF] = BOp10EF;
-  exec_op1B[0xFE] = BOp10FE; exec_op1B[0xFF] = BOp10FF;
-
-  exec_op2B[0x3F] = BOp113F; exec_op2B[0x83] = BOp1183; exec_op2B[0x8C] = BOp118C;
-  exec_op2B[0x93] = BOp1193; exec_op2B[0x9C] = BOp119C; exec_op2B[0xA3] = BOp11A3;
-  exec_op2B[0xAC] = BOp11AC; exec_op2B[0xB3] = BOp11B3; exec_op2B[0xBC] = BOp11BC;
-}
-
-//
-// Function to execute one 6809 instruction
-//
-void Execute_6809B(long num_of_instrs_to_exec)
-{
-  for(long i=0; i<num_of_instrs_to_exec; i++)
-  {
-    BYTE opcode = FetchB();                                 // Get the opcode
-    if (opcode == 0x10)  { exec_op1B[FetchB()]();  goto EXE_NEXT; }
-    if (opcode == 0x11)  { exec_op2B[FetchB()]();  goto EXE_NEXT; }
-    exec_op0B[opcode]();
-    EXE_NEXT:
-
-    if (iclockB > 24550)  // Slightly faster IRQs for SUB processor 
-    {
-      iclockB = 0;
-      if (!(ccrB&0x10) /*&& (!inter)*/)      // Process an interrupt?
-      {
-        ccrB |= 0x80;        // Set E
-        WrMemB(--srB, pcrB&0xFF);  WrMemB(--srB, pcrB>>8);  // Save all regs...
-        WrMemB(--srB, urB&0xFF);   WrMemB(--srB, urB>>8);
-        WrMemB(--srB, yrB&0xFF);   WrMemB(--srB, yrB>>8);
-        WrMemB(--srB, xrB&0xFF);   WrMemB(--srB, xrB>>8);
-        WrMemB(--srB, dprB);       WrMemB(--srB, brB);
-        WrMemB(--srB, arB);        WrMemB(--srB, ccrB);
-        ccrB |= 0x50;         // Set F,I
-        pcrB = (RdMemB(0xFFF8)<<8) | RdMemB(0xFFF9);  // And do it!
-      }
-    }
-  }
-}
diff --git a/src/v6809b.h b/src/v6809b.h
deleted file mode 100755 (executable)
index b51dba7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// Virtual 6809B Header file
-//
-// by James L. Hammons
-//
-// (c) 1998 Underground Software
-
-#define BYTE unsigned char
-#define WORD unsigned short int
-
-// Function prototypes
-
-void Init_6809B(void);      // Initialize function pointers
-void Execute_6809B(long);   // Function to execute 6809 instructions