]> Shamusworld >> Repos - stargem2/blobdiff - src/v6809.cpp
Finally fixed problems with demo mode.
[stargem2] / src / v6809.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 68b9998..b0ef8eb
@@ -1,29 +1,23 @@
 //
-// Virtual 6809 v1.4
+// Virtual 6809 v1.4.2
 //
-// by James L. Hammons
-// (c) 1997, 2009 Underground Software
+// by James Hammons
+// (C) 1997, 2009, 2014, 2023 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // WHO  WHEN        WHAT
-// ---  ----------  ------------------------------------------------------------
+// ---  ----------  -----------------------------------------------------------
 // JLH  06/15/2006  Added changelog ;-)
 // JLH  06/15/2006  Scrubbed all BYTE, WORD & DWORD references from the code
 // JLH  11/11/2006  Removed all SignedX() references
 // JLH  09/29/2009  Converted V6809 to macro implementation!
+// JLH  04/17/2014  Misc. cleanups, fixes to missing instructions
+// JLH  01/03/2023  Added missing clock cycles to indexed memory accesses
 //
 
-#define __DEBUG__
-
 #include "v6809.h"
 
-#ifdef __DEBUG__
-#include "dis6809.h"   // Temporary...
-#include "log.h"               // Temporary...
-bool disasm = false;//so we can extern this shit
-#endif
-
 #define TEST_DONT_BRANCH_OPTIMIZATION
 
 // Various macros
@@ -39,16 +33,8 @@ bool disasm = false;//so we can extern this shit
 #define SET_V(a,b,r)           (flagV = (((b) ^ (a) ^ (r) ^ ((r) >> 1)) & 0x80) >> 7)
 #define SET_V16(a,b,r)         (flagV = (((b) ^ (a) ^ (r) ^ ((r) >> 1)) & 0x8000) >> 15)
 #define SET_H(a,b,r)           (flagH = (((a) ^ (b) ^ (r)) & 0x10) >> 4)
-
-//Not sure that this code is computing the carry correctly... Investigate! [Seems to be]
-//#define SET_C_ADD(a,b)               (flagC = ((uint8)(b) > (uint8)(~(a)) ? 1 : 0))
-//#define SET_C_SUB(a,b)               (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
-//#define SET_C_CMP(a,b)               (flagC = ((uint8)(b) >= (uint8)(a) ? 1 : 0))
 #define SET_ZN(r)                      SET_N(r); SET_Z(r)
 #define SET_ZN16(r)                    SET_N16(r); SET_Z(r)
-//#define SET_ZNC_ADD(a,b,r)   SET_N(r); SET_Z(r); SET_C_ADD(a,b)
-//#define SET_ZNC_SUB(a,b,r)   SET_N(r); SET_Z(r); SET_C_SUB(a,b)
-//#define SET_ZNC_CMP(a,b,r)   SET_N(r); SET_Z(r); SET_C_CMP(a,b)
 
 #define EA_IMM                         regs.pc++
 #define EA_DP                          (regs.dp << 8) | regs.RdMem(regs.pc++)
@@ -64,10 +50,10 @@ bool disasm = false;//so we can extern this shit
 #define READ_ABS                       regs.RdMem(EA_ABS)
 #define READ_ABS16                     RdMemW(EA_ABS)
 
-#define READ_IMM_WB(v)         uint16 addr = EA_IMM;      v = regs.RdMem(addr)
-#define READ_DP_WB(v)          uint16 addr = EA_DP;       v = regs.RdMem(addr)
-#define READ_IDX_WB(v)         uint16 addr = EA_IDX;      v = regs.RdMem(addr)
-#define READ_ABS_WB(v)         uint16 addr = EA_ABS;      v = regs.RdMem(addr)
+#define READ_IMM_WB(v)         uint16_t addr = EA_IMM;      v = regs.RdMem(addr)
+#define READ_DP_WB(v)          uint16_t addr = EA_DP;       v = regs.RdMem(addr)
+#define READ_IDX_WB(v)         uint16_t addr = EA_IDX;      v = regs.RdMem(addr)
+#define READ_ABS_WB(v)         uint16_t addr = EA_ABS;      v = regs.RdMem(addr)
 
 #define WRITE_BACK(d)          regs.WrMem(addr, (d))
 
@@ -93,9 +79,9 @@ bool disasm = false;//so we can extern this shit
 // Private global variables
 
 static V6809REGS regs;
-static uint8 flagE, flagF, flagH, flagI, flagN, flagZ, flagV, flagC;
+static uint8_t flagE, flagF, flagH, flagI, flagN, flagZ, flagV, flagC;
 
-uint8 page0Cycles[256] = {
+static const uint8_t page0Cycles[256] = {
        6,  1,  1,  6,  6,  1,  6,  6,  6,  6,  6,  1,  6,  6,  3,  6,          // $0x
        1,  1,  2,  2,  1,  1,  5,  9,  1,  2,  3,  1,  3,  2,  8,  7,          // $1x
        3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,          // $2x
@@ -114,7 +100,7 @@ uint8 page0Cycles[256] = {
        5,  5,  5,  7,  5,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6           // $Fx
 };
 
-uint8 page1Cycles[256] = {
+static const uint8_t page1Cycles[256] = {
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,          // $0x
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,          // $1x
        1,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,          // $2x
@@ -133,7 +119,7 @@ uint8 page1Cycles[256] = {
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  7           // $Fx
 };
 
-uint8 page2Cycles[256] = {
+static const uint8_t page2Cycles[256] = {
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,          // $0x
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,          // $1x
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,          // $2x
@@ -152,37 +138,40 @@ uint8 page2Cycles[256] = {
        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1           // $Fx
 };
 
+// Cycle counts for PUL/PSHx instructions
+static uint8_t bitCount[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
+
 // Private function prototypes
 
-static uint16 RdMemW(uint16 addr);
-static uint16 FetchMemW(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
+static uint16_t RdMemW(uint16_t addr);
+static uint16_t FetchMemW(uint16_t addr);
+static void WrMemW(uint16_t addr, uint16_t w);
+static uint16_t ReadEXG(uint8_t);                                      // Read TFR/EXG post byte
+static void WriteEXG(uint8_t, uint16_t);                       // Set TFR/EXG data
+static uint16_t DecodeReg(uint8_t);                                    // Decode register data
+static uint16_t DecodeIDX(uint8_t);                                    // Decode IDX data
 
 //
 // Read word from memory function
 //
-static inline uint16 RdMemW(uint16 addr)
+static inline uint16_t RdMemW(uint16_t addr)
 {
-       return (uint16)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
+       return (uint16_t)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
 }
 
 //
 // Fetch a word from memory function. Increments PC
 //
-static inline uint16 FetchMemW(uint16 addr)
+static inline uint16_t FetchMemW(uint16_t addr)
 {
        regs.pc += 2;
-       return (uint16)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
+       return (uint16_t)(regs.RdMem(addr) << 8) | regs.RdMem(addr + 1);
 }
 
 //
 // Write word to memory function
 //
-static inline void WrMemW(uint16 addr, uint16 w)
+static inline void WrMemW(uint16_t addr, uint16_t w)
 {
        regs.WrMem(addr + 0, w >> 8);
        regs.WrMem(addr + 1, w & 0xFF);
@@ -191,9 +180,9 @@ static inline void WrMemW(uint16 addr, uint16 w)
 //
 // Function to read TFR/EXG post byte
 //
-uint16 ReadEXG(uint8 code)
+static uint16_t ReadEXG(uint8_t code)
 {
-       uint16 retval;
+       uint16_t retval;
 
        switch (code)
        {
@@ -238,7 +227,7 @@ uint16 ReadEXG(uint8 code)
 //
 // Function to set TFR/EXG data
 //
-void WriteEXG(uint8 code, uint16 data)
+static void WriteEXG(uint8_t code, uint16_t data)
 {
        switch (code)
        {
@@ -268,9 +257,9 @@ void WriteEXG(uint8 code, uint16 data)
 //
 // Function to decode register data
 //
-uint16 DecodeReg(uint8 reg)
+static uint16_t DecodeReg(uint8_t reg)
 {
-       uint16 retval;
+       uint16_t retval;
 
        switch (reg)
        {
@@ -290,13 +279,31 @@ uint16 DecodeReg(uint8 reg)
 //
 // Function to decode IDX data
 //
-uint16 DecodeIDX(uint8 code)
+static uint16_t DecodeIDX(uint8_t code)
 {
-       uint16 addr, woff;
-       uint8 reg = (code & 0x60) >> 5, idxind = (code & 0x10) >> 4, lo_nyb = code & 0x0F;
+/*
+Cycle counts are now taken into account here...
+
+   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+90  5  6  5  6  3  4  4  0  4  7  0  7  4  8  0  5
+B0  5  6  5  6  3  4  4  0  4  7  0  7  4  8  0  5
+D0  5  6  5  6  3  4  4  0  4  7  0  7  4  8  0  5
+F0  5  6  5  6  3  4  4  0  4  7  0  7  4  8  0  5
+
+80  2  3  2  3  0  1  1  0  1  4  0  4  1  5  0  5
+A0  2  3  2  3  0  1  1  0  1  4  0  4  1  5  0  5
+C0  2  3  2  3  0  1  1  0  1  4  0  4  1  5  0  5
+E0  2  3  2  3  0  1  1  0  1  4  0  4  1  5  0  5
+*/
+       uint16_t addr, woff;
+       int16_t offset;
+       uint8_t 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);
+               regs.clock++;
+       }
        else
        {
                if (idxind)
@@ -313,6 +320,7 @@ uint16 DecodeIDX(uint8 code)
                                case 2:  regs.u += 2;  break;
                                case 3:  regs.s += 2;  break;
                                }
+                               regs.clock += 6;
                                break;
                        case 3:
                                switch (reg)
@@ -324,43 +332,63 @@ uint16 DecodeIDX(uint8 code)
                                }
                                woff = DecodeReg(reg);
                                addr = RdMemW(woff);
+                               regs.clock += 6;
                                break;
                        case 4:
                                woff = DecodeReg(reg);
                                addr = RdMemW(woff);
+                               regs.clock += 3;
                                break;
                        case 5:
-                               woff = DecodeReg(reg) + (int16)(int8)regs.b;
+                               woff = DecodeReg(reg) + (int16_t)(int8_t)regs.b;
                                addr = RdMemW(woff);
+                               regs.clock += 4;
                                break;
                        case 6:
-                               woff = DecodeReg(reg) + (int16)(int8)regs.a;
+                               woff = DecodeReg(reg) + (int16_t)(int8_t)regs.a;
                                addr = RdMemW(woff);
+                               regs.clock += 4;
                                break;
                        case 8:
-                               woff = DecodeReg(reg) + (int16)(int8)regs.RdMem(regs.pc++);
+                               woff = DecodeReg(reg) + (int16_t)(int8_t)regs.RdMem(regs.pc++);
                                addr = RdMemW(woff);
+                               regs.clock += 4;
                                break;
                        case 9:
                                woff = DecodeReg(reg) + FetchMemW(regs.pc);
                                addr = RdMemW(woff);
+                               regs.clock += 7;
                                break;
                        case 11:
                                woff = DecodeReg(reg) + ((regs.a << 8) | regs.b);
                                addr = RdMemW(woff);
+                               regs.clock += 7;
                                break;
                        case 12:
-                               woff = regs.pc + (int16)(int8)regs.RdMem(regs.pc++);
+//                             woff = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc++);
+#if 1
+                               // I believe this is the correct interpretation
+                               offset = (int16_t)(int8_t)regs.RdMem(regs.pc++);
+                               woff = regs.pc + offset;
+#else
+                               woff = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc);
+                               regs.pc++;
+#endif
                                addr = RdMemW(woff);
+                               regs.clock += 4;
                                break;
                        case 13:
                                woff = regs.pc + FetchMemW(regs.pc);
                                addr = RdMemW(woff);
+                               regs.clock += 8;
                                break;
                        case 15:
                                woff = FetchMemW(regs.pc);
                                addr = RdMemW(woff);
+                               regs.clock += 5;
                                break;
+                       default:
+                               addr = 0;
                        }
                }
                else
@@ -376,6 +404,7 @@ uint16 DecodeIDX(uint8 code)
                                case 2:  regs.u++;  break;
                                case 3:  regs.s++;  break;
                                }
+                               regs.clock += 2;
                                break;
                        case 1:
                                addr = DecodeReg(reg);
@@ -386,31 +415,71 @@ uint16 DecodeIDX(uint8 code)
                                case 2:  regs.u += 2;  break;
                                case 3:  regs.s += 2;  break;
                                }
+                               regs.clock += 3;
+                               break;
+                       case 2:
+                               switch(reg)
+                               {
+                               case 0:  regs.x--;  break;
+                               case 1:  regs.y--;  break;
+                               case 2:  regs.u--;  break;
+                               case 3:  regs.s--;  break;
+                               }
+                               addr = DecodeReg(reg);
+                               regs.clock += 2;
+                               break;
+                       case 3:
+                               switch(reg)
+                               {
+                               case 0:  regs.x -= 2;  break;
+                               case 1:  regs.y -= 2;  break;
+                               case 2:  regs.u -= 2;  break;
+                               case 3:  regs.s -= 2;  break;
+                               }
+                               addr = DecodeReg(reg);
+                               regs.clock += 3;
+                               break;
+                       case 4:
+                               addr = DecodeReg(reg);
+                               break;
+                       case 5:
+                               addr = DecodeReg(reg) + (int16_t)(int8_t)regs.b;
+                               regs.clock++;
+                               break;
+                       case 6:
+                               addr = DecodeReg(reg) + (int16_t)(int8_t)regs.a;
+                               regs.clock++;
+                               break;
+                       case 8:
+                               addr = DecodeReg(reg) + (int16_t)(int8_t)regs.RdMem(regs.pc++);
+                               regs.clock++;
+                               break;
+                       case 9:
+                               addr = DecodeReg(reg) + FetchMemW(regs.pc);
+                               regs.clock += 4;
                                break;
-        case 2:  { switch(reg)
-                   {
-                     case 0:  regs.x--;  break;
-                     case 1:  regs.y--;  break;
-                     case 2:  regs.u--;  break;
-                     case 3:  regs.s--;  break;
-                   }
-                   addr = DecodeReg(reg);  break; }
-        case 3:  { switch(reg)
-                   {
-                     case 0:  regs.x--;  regs.x--;  break;
-                     case 1:  regs.y--;  regs.y--;  break;
-                     case 2:  regs.u--;  regs.u--;  break;
-                     case 3:  regs.s--;  regs.s--;  break;
-                   }
-                   addr = DecodeReg(reg);  break; }
-        case 4:  { addr = DecodeReg(reg);  break; }
-        case 5:  { addr = DecodeReg(reg) + (int16)(int8)regs.b;  break; }
-        case 6:  { addr = DecodeReg(reg) + (int16)(int8)regs.a;  break; }
-        case 8:  { addr = DecodeReg(reg) + (int16)(int8)regs.RdMem(regs.pc++);  break; }
-        case 9:  { addr = DecodeReg(reg) + FetchMemW(regs.pc);  break; }
-        case 11: { addr = DecodeReg(reg) + ((regs.a << 8) | regs.b);  break; }
-        case 12: { addr = regs.pc + (int16)(int8)regs.RdMem(regs.pc++);  break; }
-        case 13: { addr = regs.pc + FetchMemW(regs.pc);  break; }
+                       case 11:
+                               addr = DecodeReg(reg) + ((regs.a << 8) | regs.b);
+                               regs.clock += 4;
+                               break;
+                       case 12:
+//                             addr = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc++);
+#if 1
+                               // I believe this is the correct interpretation of the above
+                               offset = (int16_t)(int8_t)regs.RdMem(regs.pc++);
+                               addr = regs.pc + offset;
+#else
+                               addr = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc);
+                               regs.pc++;
+#endif
+                               regs.clock++;
+                               break;
+                       case 13:
+                               addr = regs.pc + FetchMemW(regs.pc);
+                               regs.clock += 5;
+                               break;
+                       default:
+                               addr = 0;
                        }
                }
        }
@@ -421,10 +490,10 @@ uint16 DecodeIDX(uint8 code)
 //
 // 6809 OPCODE IMPLEMENTATION
 //
-// NOTE: Lots of macros are used here to save a LOT of typing. Also
-//       helps speed the debugging process. :-) Because of this, combining
+// NOTE: Lots of macros are used here to save a LOT of typing.  Also
+//       helps speed the debugging process.  :-)  Because of this, combining
 //       certain lines may look like a good idea but would end in disaster.
-//       You have been warned! ;-)
+//       You have been warned!  ;-)
 //
 
 /*
@@ -445,68 +514,58 @@ uint16 DecodeIDX(uint8 code)
 // ADC opcodes
 
 #define OP_ADC_HANDLER(m, acc) \
-       uint16 sum = (uint16)acc + (m) + (uint16)flagC; \
+       uint16_t sum = (uint16_t)acc + (m) + (uint16_t)flagC; \
        flagC = (sum >> 8) & 0x01; \
        SET_H(m, acc, sum); \
        SET_V(m, acc, sum); \
        acc = sum & 0xFF; \
        SET_ZN(acc)
 
-/*
-Old flag handling code:
-  (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 = 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
-*/
-
 static void Op89(void)                                                 // ADCA #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_ADC_HANDLER(m, regs.a);
 }
 
 static void Op99(void)                                                 // ADCA DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_ADC_HANDLER(m, regs.a);
 }
 
 static void OpA9(void)                                                 // ADCA IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_ADC_HANDLER(m, regs.a);
 }
 
 static void OpB9(void)                                                 // ADCA ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_ADC_HANDLER(m, regs.a);
 }
 
 static void OpC9(void)                                                 // ADCB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_ADC_HANDLER(m, regs.b);
 }
 
 static void OpD9(void)                                                 // ADCB DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_ADC_HANDLER(m, regs.b);
 }
 
 static void OpE9(void)                                                 // ADCB IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_ADC_HANDLER(m, regs.b);
 }
 
 static void OpF9(void)                                                 // ADCB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_ADC_HANDLER(m, regs.b);
 }
 
@@ -533,7 +592,7 @@ static void OpF9(void)                                                      // ADCB ABS
 // ADD opcodes
 
 #define OP_ADD_HANDLER(m, acc) \
-       uint16 sum = (uint16)(acc) + (m); \
+       uint16_t sum = (uint16_t)(acc) + (m); \
        flagC = (sum >> 8) & 0x01; \
        SET_H(m, acc, sum); \
        SET_V(m, acc, sum); \
@@ -541,8 +600,8 @@ static void OpF9(void)                                                      // ADCB ABS
        SET_ZN(acc)
 
 #define OP_ADD_HANDLER16(m, hireg, loreg) \
-       uint32 acc = (uint32)((hireg << 8) | loreg); \
-       uint32 sum = acc + (m); \
+       uint32_t acc = (uint32_t)((hireg << 8) | loreg); \
+       uint32_t sum = acc + (m); \
        flagC = (sum >> 16) & 0x01; \
        SET_V16(m, acc, sum); \
        acc = sum & 0xFFFF; \
@@ -550,99 +609,80 @@ static void OpF9(void)                                                    // ADCB ABS
        loreg = acc & 0xFF; \
        SET_ZN16(acc)
 
-/*
-Old flags:
-  (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 = 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
-
-  dr += addr;
-  (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
-  dr &= 0xFFFF;
-  (dr == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
-  (dr&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
-  ((ds^addr^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
-  regs.a = dr>>8;  regs.b = dr&0xFF;
-  regs.clock += 4;
-*/
-
 static void Op3A(void)                                                 // ABX
 {
-       regs.x += (uint16)regs.b;
+       regs.x += (uint16_t)regs.b;
 }
 
 static void Op8B(void)                                                 // ADDA #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_ADD_HANDLER(m, regs.a);
 }
 
 static void Op9B(void)                                                 // ADDA DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_ADD_HANDLER(m, regs.a);
 }
 
 static void OpAB(void)                                                 // ADDA IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_ADD_HANDLER(m, regs.a);
 }
 
 static void OpBB(void)                                                 // ADDA ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_ADD_HANDLER(m, regs.a);
 }
 
 static void OpC3(void)                                                 // ADDD #
 {
-       uint32 m = READ_IMM16;
+       uint32_t m = READ_IMM16;
        OP_ADD_HANDLER16(m, regs.a, regs.b);
 }
 
 static void OpCB(void)                                                 // ADDB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpD3(void)                                                 // ADDD DP
 {
-       uint32 m = READ_DP16;
+       uint32_t m = READ_DP16;
        OP_ADD_HANDLER16(m, regs.a, regs.b);
 }
 
 static void OpDB(void)                                                 // ADDB DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpE3(void)                                                 // ADDD IDX
 {
-       uint32 m = READ_IDX16;
+       uint32_t m = READ_IDX16;
        OP_ADD_HANDLER16(m, regs.a, regs.b);
 }
 
 static void OpEB(void)                                                 // ADDB IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpF3(void)                                                 // ADDD ABS
 {
-       uint32 m = READ_ABS16;
+       uint32_t m = READ_ABS16;
        OP_ADD_HANDLER16(m, regs.a, regs.b);
 }
 
 static void OpFB(void)                                                 // ADDB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_ADD_HANDLER(m, regs.b);
 }
 
@@ -670,49 +710,49 @@ static void OpFB(void)                                                    // ADDB ABS
 
 static void Op84(void)                                                 // ANDA #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void Op94(void)                                                 // ANDA DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void OpA4(void)                                                 // ANDA IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void OpB4(void)                                                 // ANDA ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void OpC4(void)                                                 // ANDB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_AND_HANDLER(m, regs.b);
 }
 
 static void OpD4(void)                                                 // ANDB DP
 {
-       uint16 m = READ_DP;
+       uint16_t m = READ_DP;
        OP_AND_HANDLER(m, regs.b);
 }
 
 static void OpE4(void)                                                 // ANDB IDX
 {
-       uint16 m = READ_IDX;
+       uint16_t m = READ_IDX;
        OP_AND_HANDLER(m, regs.b);
 }
 
 static void OpF4(void)                                                 // ANDB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_AND_HANDLER(m, regs.b);
 }
 
@@ -731,7 +771,7 @@ static void OpF4(void)                                                      // ANDB ABS
 // ASL opcodes
 
 #define OP_ASL_HANDLER(m) \
-       uint16 res = m << 1; \
+       uint16_t res = m << 1; \
        SET_V(m, m, res); \
        flagC = (res >> 8) & 0x01; \
        m = res & 0xFF; \
@@ -739,7 +779,7 @@ static void OpF4(void)                                                      // ANDB ABS
 
 static void Op08(void)                                                 // ASL DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_ASL_HANDLER(m);
        WRITE_BACK(m);
@@ -757,7 +797,7 @@ static void Op58(void)                                                      // ASLB
 
 static void Op68(void)                                                 // ASL IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_ASL_HANDLER(m);
        WRITE_BACK(m);
@@ -765,7 +805,7 @@ static void Op68(void)                                                      // ASL IDX
 
 static void Op78(void)                                                 // ASL ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ASL_HANDLER(m);
        WRITE_BACK(m);
@@ -786,14 +826,14 @@ static void Op78(void)                                                    // ASL ABS
 // ASR opcodes (arithmetic, so preserves the sign)
 
 #define OP_ASR_HANDLER(m) \
-       uint8 res = (m & 0x80) | (m >> 1); \
+       uint8_t res = (m & 0x80) | (m >> 1); \
        SET_ZN(res); \
        flagC = m & 0x01; \
        m = res
 
 static void Op07(void)                                                 // ASR DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_ASR_HANDLER(m);
        WRITE_BACK(m);
@@ -811,7 +851,7 @@ static void Op57(void)                                                      // ASRB
 
 static void Op67(void)                                                 // ASR IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_ASR_HANDLER(m);
        WRITE_BACK(m);
@@ -819,7 +859,7 @@ static void Op67(void)                                                      // ASR IDX
 
 static void Op77(void)                                                 // ASR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ASR_HANDLER(m);
        WRITE_BACK(m);
@@ -868,26 +908,26 @@ static void Op77(void)                                                    // ASR ABS
 
 static void Op16(void)                                                 // LBRA
 {
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
        regs.pc += offset;
 }
 
 static void Op20(void)                                                 // BRA
 {
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
        regs.pc += offset;
 }
 
 static void Op21(void)                                                 // BRN
 {
        // This is basically a 2 byte NOP
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 }
 
 static void Op22(void)                                                 // BHI
 {
        // !C && !Z
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
 //Not sure if the ! operator will do what we want, so we use ^ 1 (we need a 1 or a 0 here)...
@@ -901,7 +941,7 @@ static void Op22(void)                                                      // BHI
 static void Op23(void)                                                 // BLS
 {
        // C || Z
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ | flagC);
@@ -914,7 +954,7 @@ static void Op23(void)                                                      // BLS
 static void Op24(void)                                                 // BHS/CC
 {
        // !C
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagC ^ 0x01);
@@ -927,9 +967,7 @@ static void Op24(void)                                                      // BHS/CC
 static void Op25(void)                                                 // BLO/CS
 {
        // C
-       int16 offset = (int16)(int8)READ_IMM;
-//if (disasm)
-//     WriteLog("[offset=%04X,flagC=%08X]", offset, flagC);
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagC;
@@ -942,7 +980,7 @@ static void Op25(void)                                                      // BLO/CS
 static void Op26(void)                                                 // BNE
 {
        // !Z
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ ^ 0x01);
@@ -955,7 +993,7 @@ static void Op26(void)                                                      // BNE
 static void Op27(void)                                                 // BEQ
 {
        // Z
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagZ;
@@ -968,7 +1006,7 @@ static void Op27(void)                                                     // BEQ
 static void Op28(void)                                                 // BVC
 {
        // !V
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagV ^ 0x01);
@@ -981,7 +1019,7 @@ static void Op28(void)                                                     // BVC
 static void Op29(void)                                                 // BVS
 {
        // V
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagV;
@@ -994,7 +1032,7 @@ static void Op29(void)                                                     // BVS
 static void Op2A(void)                                                 // BPL
 {
        // !N
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagN ^ 0x01);
@@ -1007,7 +1045,7 @@ static void Op2A(void)                                                    // BPL
 static void Op2B(void)                                                 // BMI
 {
        // N
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagN;
@@ -1020,7 +1058,7 @@ static void Op2B(void)                                                    // BMI
 static void Op2C(void)                                                 // BGE
 {
        // (N && V) || (!N && !V)
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & flagV) | ((flagN ^ 0x01) & (flagV ^ 0x01)));
@@ -1033,7 +1071,7 @@ static void Op2C(void)                                                    // BGE
 static void Op2D(void)                                                 // BLT
 {
        // (N && !V) || (!N && V)
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & (flagV ^ 0x01)) | ((flagN ^ 0x01) & flagV));
@@ -1046,7 +1084,7 @@ static void Op2D(void)                                                    // BLT
 static void Op2E(void)                                                 // BGT
 {
        // (N && V && !Z) || (!N && !V && !Z)
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & flagV & (flagZ ^ 0x01)) | ((flagN ^ 0x01) & (flagV ^ 0x01) & (flagZ ^ 0x01)));
@@ -1059,7 +1097,7 @@ static void Op2E(void)                                                    // BGT
 static void Op2F(void)                                                 // BLE
 {
        // Z || (N && !V) || (!N && V)
-       int16 offset = (int16)(int8)READ_IMM;
+       int16_t offset = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ | (flagN & (flagV ^ 0x01)) | ((flagN ^ 0x01) & flagV));
@@ -1072,13 +1110,13 @@ static void Op2F(void)                                                  // BLE
 static void Op1021(void)                                               // LBRN
 {
        // This is basically a 4 byte NOP
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 }
 
 static void Op1022(void)                                               // LBHI
 {
        // !C && !Z
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
 //Not sure if the ! operator will do what we want, so we use ^ 1 (we need a 1 or a 0 here)...
@@ -1092,7 +1130,7 @@ static void Op1022(void)                                          // LBHI
 static void Op1023(void)                                               // LBLS
 {
        // C || Z
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ | flagC);
@@ -1105,7 +1143,7 @@ static void Op1023(void)                                          // LBLS
 static void Op1024(void)                                               // LBHS/CC
 {
        // !C
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagC ^ 0x01);
@@ -1118,7 +1156,7 @@ static void Op1024(void)                                          // LBHS/CC
 static void Op1025(void)                                               // LBLO/CS
 {
        // C
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagC;
@@ -1131,7 +1169,7 @@ static void Op1025(void)                                          // LBLO/CS
 static void Op1026(void)                                               // LBNE
 {
        // !Z
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ ^ 0x01);
@@ -1144,7 +1182,7 @@ static void Op1026(void)                                          // LBNE
 static void Op1027(void)                                               // LBEQ
 {
        // Z
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagZ;
@@ -1157,7 +1195,7 @@ static void Op1027(void)                                          // LBEQ
 static void Op1028(void)                                               // LBVC
 {
        // !V
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagV ^ 0x01);
@@ -1170,7 +1208,7 @@ static void Op1028(void)                                          // LBVC
 static void Op1029(void)                                               // LBVS
 {
        // V
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagV;
@@ -1183,7 +1221,7 @@ static void Op1029(void)                                          // LBVS
 static void Op102A(void)                                               // LBPL
 {
        // !N
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagN ^ 0x01);
@@ -1196,7 +1234,7 @@ static void Op102A(void)                                          // LBPL
 static void Op102B(void)                                               // LBMI
 {
        // N
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * flagN;
@@ -1209,7 +1247,7 @@ static void Op102B(void)                                          // LBMI
 static void Op102C(void)                                               // LBGE
 {
        // (N && V) || (!N && !V)
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & flagV) | ((flagN ^ 0x01) & (flagV ^ 0x01)));
@@ -1222,7 +1260,7 @@ static void Op102C(void)                                          // LBGE
 static void Op102D(void)                                               // LBLT
 {
        // (N && !V) || (!N && V)
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & (flagV ^ 0x01)) | ((flagN ^ 0x01) & flagV));
@@ -1235,7 +1273,7 @@ static void Op102D(void)                                          // LBLT
 static void Op102E(void)                                               // LBGT
 {
        // (N && V && !Z) || (!N && !V && !Z)
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * ((flagN & flagV & (flagZ ^ 0x01)) | ((flagN ^ 0x01) & (flagV ^ 0x01) & (flagZ ^ 0x01)));
@@ -1248,7 +1286,7 @@ static void Op102E(void)                                          // LBGT
 static void Op102F(void)                                               // LBLE
 {
        // Z || (N && !V) || (!N && V)
-       uint16 offset = READ_IMM16;
+       uint16_t offset = READ_IMM16;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += offset * (flagZ | (flagN & (flagV ^ 0x01)) | ((flagN ^ 0x01) & flagV));
@@ -1276,55 +1314,55 @@ static void Op102F(void)                                                // LBLE
 // BIT opcodes
 
 #define OP_BIT_HANDLER(m, acc) \
-       uint8 result = acc & (m); \
+       uint8_t result = acc & (m); \
        SET_ZN(result); \
        CLR_V
 
 static void Op85(void)                                                 // BITA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_BIT_HANDLER(m, regs.a);
 }
 
 static void Op95(void)                                                 // BITA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_BIT_HANDLER(m, regs.a);
 }
 
 static void OpA5(void)                                                 // BITA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_BIT_HANDLER(m, regs.a);
 }
 
 static void OpB5(void)                                                 // BITA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_BIT_HANDLER(m, regs.a);
 }
 
 static void OpC5(void)                                                 // BITB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_BIT_HANDLER(m, regs.b);
 }
 
 static void OpD5(void)                                                 // BITB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_BIT_HANDLER(m, regs.b);
 }
 
 static void OpE5(void)                                                 // BITB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_BIT_HANDLER(m, regs.b);
 }
 
 static void OpF5(void)                                                 // BITB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_BIT_HANDLER(m, regs.b);
 }
 
@@ -1349,7 +1387,7 @@ static void OpF5(void)                                                    // BITB ABS
 
 static void Op0F(void)                                                 // CLR DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_CLR_HANDLER(m);
        WRITE_BACK(m);
@@ -1367,7 +1405,7 @@ static void Op5F(void)                                                    // CLRB
 
 static void Op6F(void)                                                 // CLR IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_CLR_HANDLER(m);
        WRITE_BACK(m);
@@ -1375,7 +1413,7 @@ static void Op6F(void)                                                    // CLR IDX
 
 static void Op7F(void)                                                 // CLR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_CLR_HANDLER(m);
        WRITE_BACK(m);
@@ -1419,182 +1457,182 @@ static void Op7F(void)                                                        // CLR ABS
 // CMP opcodes
 
 #define OP_CMP_HANDLER(m, acc) \
-       uint16 sum = (uint16)(acc) - (m); \
+       uint16_t sum = (uint16_t)(acc) - (m); \
        flagC = (sum >> 8) & 0x01; \
        SET_V(m, acc, sum); \
        SET_ZN(sum)
 
 #define OP_CMP_HANDLER16(m, acc) \
-       uint32 sum = (uint32)(acc) - (m); \
+       uint32_t sum = (uint32_t)(acc) - (m); \
        flagC = (sum >> 16) & 0x01; \
        SET_V16(m, acc, sum); \
        SET_ZN16(sum)
 
 static void Op81(void)                                                 // CMPA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void Op8C(void)                                                 // CMPX #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CMP_HANDLER16(m, regs.x);
 }
 
 static void Op91(void)                                                 // CMPA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void Op9C(void)                                                 // CMPX DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_CMP_HANDLER16(m, regs.x);
 }
 
 static void OpA1(void)                                                 // CMPA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void OpAC(void)                                                 // CMPX IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_CMP_HANDLER16(m, regs.x);
 }
 
 static void OpB1(void)                                                 // CMPA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void OpBC(void)                                                 // CMPX ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CMP_HANDLER16(m, regs.x);
 }
 
 static void OpC1(void)                                                 // CMPB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_CMP_HANDLER(m, regs.b);
 }
 
 static void OpD1(void)                                                 // CMPB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_CMP_HANDLER(m, regs.b);
 }
 
 static void OpE1(void)                                                 // CMPB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_CMP_HANDLER(m, regs.b);
 }
 
 static void OpF1(void)                                                 // CMPB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_CMP_HANDLER(m, regs.b);
 }
 
 static void Op1083(void)                                               // CMPD #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CMP_HANDLER16(m, (regs.a << 8) | regs.b);
 }
 
 static void Op108C(void)                                               // CMPY #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CMP_HANDLER16(m, regs.y);
 }
 
 static void Op1093(void)                                               // CMPD DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_CMP_HANDLER16(m, (regs.a << 8) | regs.b);
 }
 
 static void Op109C(void)                                               // CMPY DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_CMP_HANDLER16(m, regs.y);
 }
 
 static void Op10A3(void)                                               // CMPD IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_CMP_HANDLER16(m, (regs.a << 8) | regs.b);
 }
 
 static void Op10AC(void)                                               // CMPY IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_CMP_HANDLER16(m, regs.y);
 }
 
 static void Op10B3(void)                                               // CMPD ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CMP_HANDLER16(m, (regs.a << 8) | regs.b);
 }
 
 static void Op10BC(void)                                               // CMPY ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CMP_HANDLER16(m, regs.y);
 }
 
 static void Op1183(void)                                               // CMPU #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CMP_HANDLER16(m, regs.u);
 }
 
 static void Op118C(void)                                               // CMPS #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CMP_HANDLER16(m, regs.s);
 }
 
 static void Op1193(void)                                               // CMPU DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_CMP_HANDLER16(m, regs.u);
 }
 
 static void Op119C(void)                                               // CMPS DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_CMP_HANDLER16(m, regs.s);
 }
 
 static void Op11A3(void)                                               // CMPU IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_CMP_HANDLER16(m, regs.u);
 }
 
 static void Op11AC(void)                                               // CMPS IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_CMP_HANDLER16(m, regs.s);
 }
 
 static void Op11B3(void)                                               // CMPU ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CMP_HANDLER16(m, regs.u);
 }
 
 static void Op11BC(void)                                               // CMPS ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CMP_HANDLER16(m, regs.s);
 }
 
@@ -1620,7 +1658,7 @@ static void Op11BC(void)                                          // CMPS ABS
 
 static void Op03(void)                                                 // COM DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_COM_HANDLER(m);
        WRITE_BACK(m);
@@ -1638,7 +1676,7 @@ static void Op53(void)                                                    // COMB
 
 static void Op63(void)                                                 // COM IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_COM_HANDLER(m);
        WRITE_BACK(m);
@@ -1646,7 +1684,7 @@ static void Op63(void)                                                    // COM IDX
 
 static void Op73(void)                                                 // COM ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_COM_HANDLER(m);
        WRITE_BACK(m);
@@ -1712,7 +1750,7 @@ static void Op3C(void)                                                    // CWAI
 
 static void Op3E(void)                                                 // RESET
 {
-       regs.cpuFlags |= V6809_ASSERT_LINE_RESET;
+       regs.cpuFlags |= V6809_LINE_RESET;
 }
 
 static void Op3F(void)                                                 // SWI
@@ -1777,25 +1815,17 @@ static void Op12()                                                              // NOP
 {
 }
 
-/*
-D3F8: A6 47       LDA   (7),U      CC=--H----- A=30 B=00 DP=9C X=3C72 Y=CE5C S=BFFF U=BAF0 PC=D3FA
-D3FA: 8B 01       ADDA  #$01       CC=--H----- A=31 B=00 DP=9C X=3C72 Y=CE5C S=BFFF U=BAF0 PC=D3FC
-D3FC: 19          DAA              CC=--H----- A=37 B=00 DP=9C X=3C72 Y=CE5C S=BFFF U=BAF0 PC=D3FD
-*/
-
 static void Op19()                                                             // DAA
 {
-       uint16 result = (uint16)regs.a;
+       uint16_t result = (uint16_t)regs.a;
 
-//     if ((regs.a & 0x0F) > 0x09 || (regs.cc & FLAG_H))
        if ((regs.a & 0x0F) > 0x09 || flagH)
                result += 0x06;
 
-//     if ((regs.a & 0xF0) > 0x90 || (regs.cc & FLAG_C) || ((regs.a & 0xF0) > 0x80 && (regs.a & 0x0F) > 0x09))
        if ((regs.a & 0xF0) > 0x90 || flagC || ((regs.a & 0xF0) > 0x80 && (regs.a & 0x0F) > 0x09))
                result += 0x60;
 
-       regs.a = (uint8)result;
+       regs.a = (uint8_t)result;
        SET_ZN(result);
        CLR_V;
        flagC |= (result & 0x100) >> 8;                         // Overwrite carry if it was 0, otherwise, ignore
@@ -1843,7 +1873,7 @@ static void Op1D()                                                                // SEX
 
 static void Op0A(void)                                                 // DEC DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_DEC_HANDLER(m);
        WRITE_BACK(m);
@@ -1861,7 +1891,7 @@ static void Op5A(void)                                                    // DECB
 
 static void Op6A(void)                                                 // DEC IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_DEC_HANDLER(m);
        WRITE_BACK(m);
@@ -1869,7 +1899,7 @@ static void Op6A(void)                                                    // DEC IDX
 
 static void Op7A(void)                                                 // DEC ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_DEC_HANDLER(m);
        WRITE_BACK(m);
@@ -1899,49 +1929,49 @@ static void Op7A(void)                                                  // DEC ABS
 
 static void Op88(void)                                                 // EORA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_EOR_HANDLER(m, regs.a);
 }
 
 static void Op98(void)                                                 // EORA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_EOR_HANDLER(m, regs.a);
 }
 
 static void OpA8(void)                                                 // EORA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_EOR_HANDLER(m, regs.a);
 }
 
 static void OpB8(void)                                                 // EORA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_EOR_HANDLER(m, regs.a);
 }
 
 static void OpC8(void)                                                 // EORB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_EOR_HANDLER(m, regs.b);
 }
 
 static void OpD8(void)                                                 // EORB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_EOR_HANDLER(m, regs.b);
 }
 
 static void OpE8(void)                                                 // EORB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_EOR_HANDLER(m, regs.b);
 }
 
 static void OpF8(void)                                                 // EORB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_EOR_HANDLER(m, regs.b);
 }
 
@@ -1966,7 +1996,7 @@ static void OpF8(void)                                                    // EORB ABS
 
 static void Op0C(void)                                                 // INC DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_INC_HANDLER(m);
        WRITE_BACK(m);
@@ -1984,7 +2014,7 @@ static void Op5C(void)                                                    // INCB
 
 static void Op6C(void)                                                 // INC IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_INC_HANDLER(m);
        WRITE_BACK(m);
@@ -1992,7 +2022,7 @@ static void Op6C(void)                                                    // INC IDX
 
 static void Op7C(void)                                                 // INC ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_INC_HANDLER(m);
        WRITE_BACK(m);
@@ -2017,12 +2047,14 @@ static void Op7C(void)                                                  // INC ABS
 
 static void Op0E(void)                                                 // JMP DP
 {
-       regs.pc = EA_DP;
+       // This needs to be separate because of the EA_DP adding to regs.pc.
+       uint16_t m = EA_DP;
+       regs.pc = m;
 }
 
 static void Op17(void)                                                 // LBSR
 {
-       uint16 word = FetchMemW(regs.pc);
+       uint16_t word = FetchMemW(regs.pc);
        PUSHS16(regs.pc);
        regs.pc += word;
 }
@@ -2064,28 +2096,28 @@ static void Op7E(void)                                                  // JMP ABS
 
 static void Op8D(void)                                                 // BSR
 {
-       uint16 word = (int16)(int8)READ_IMM;
+       uint16_t word = (int16_t)(int8_t)READ_IMM;
        PUSHS16(regs.pc);
        regs.pc += word;
 }
 
 static void Op9D(void)                                                 // JSR DP
 {
-       uint16 word = EA_DP;
+       uint16_t word = EA_DP;
        PUSHS16(regs.pc);
        regs.pc = word;
 }
 
 static void OpAD(void)                                                 // JSR IDX
 {
-       uint16 word = EA_IDX;
+       uint16_t word = EA_IDX;
        PUSHS16(regs.pc);
        regs.pc = word;
 }
 
 static void OpBD(void)                                                 // JSR ABS
 {
-       uint16 word = EA_ABS;
+       uint16_t word = EA_ABS;
        PUSHS16(regs.pc);
        regs.pc = word;
 }
@@ -2103,10 +2135,10 @@ static void Op1E(void)                                                  // EXG
 {
        // If bit 3 & 7 are not equal, $FF is the result (undocumented)...
 
-       uint8 m = READ_IMM;
-       uint8 reg1 = m >> 4, reg2 = m & 0x0F;
-       uint16 acc1 = ReadEXG(reg1);
-       uint16 acc2 = ReadEXG(reg2);
+       uint8_t m = READ_IMM;
+       uint8_t reg1 = m >> 4, reg2 = m & 0x0F;
+       uint16_t acc1 = ReadEXG(reg1);
+       uint16_t acc2 = ReadEXG(reg2);
 
        // If bit 3 & 7 are not equal, $FF is the result (undocumented)...
        if (((m >> 4) ^ m) & 0x08)
@@ -2118,8 +2150,8 @@ static void Op1E(void)                                                    // EXG
 
 static void Op1F(void)                                                 // TFR
 {
-       uint8 m = READ_IMM;
-       uint16 acc = ReadEXG(m >> 4);
+       uint8_t m = READ_IMM;
+       uint16_t acc = ReadEXG(m >> 4);
 
        // If bit 3 & 7 are not equal, $FF is the result (undocumented)...
        if (((m >> 4) ^ m) & 0x08)
@@ -2183,169 +2215,169 @@ static void Op1F(void)                                                        // TFR
 
 static void Op86(void)                                                 // LDA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void Op8E(void)                                                 // LDX #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_LDA_HANDLER16(m, regs.x);
 }
 
 static void Op96(void)                                                 // LDA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void Op9E(void)                                                 // LDX DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_LDA_HANDLER16(m, regs.x);
 }
 
 static void OpA6(void)                                                 // LDA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void OpAE(void)                                                 // LDX IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_LDA_HANDLER16(m, regs.x);
 }
 
 static void OpB6(void)                                                 // LDA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void OpBE(void)                                                 // LDX ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_LDA_HANDLER16(m, regs.x);
 }
 
 static void OpC6(void)                                                 // LDB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpCC(void)                                                 // LDD #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_LDA_HANDLER16D(m);
 }
 
 static void OpCE(void)                                                 // LDU #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_LDA_HANDLER16(m, regs.u);
 }
 
 static void OpD6(void)                                                 // LDB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpDC(void)                                                 // LDD DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_LDA_HANDLER16D(m);
 }
 
 static void OpDE(void)                                                 // LDU DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_LDA_HANDLER16(m, regs.u);
 }
 
 static void OpE6(void)                                                 // LDB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpEC(void)                                                 // LDD IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_LDA_HANDLER16D(m);
 }
 
 static void OpEE(void)                                                 // LDU IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_LDA_HANDLER16(m, regs.u);
 }
 
 static void OpF6(void)                                                 // LDB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpFC(void)                                                 // LDD ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_LDA_HANDLER16D(m);
 }
 
 static void OpFE(void)                                                 // LDU ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_LDA_HANDLER16(m, regs.u);
 }
 
 static void Op108E(void)                                               // LDY #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_LDA_HANDLER16(m, regs.y);
 }
 
 static void Op109E(void)                                               // LDY DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_LDA_HANDLER16(m, regs.y);
 }
 
 static void Op10AE(void)                                               // LDY IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_LDA_HANDLER16(m, regs.y);
 }
 
 static void Op10BE(void)                                               // LDY ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_LDA_HANDLER16(m, regs.y);
 }
 
 static void Op10CE(void)                                               // LDS #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_LDA_HANDLER16(m, regs.s);
 }
 
 static void Op10DE(void)                                               // LDS DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_LDA_HANDLER16(m, regs.s);
 }
 
 static void Op10EE(void)                                               // LDS IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_LDA_HANDLER16(m, regs.s);
 }
 
 static void Op10FE(void)                                               // LDS ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_LDA_HANDLER16(m, regs.s);
 }
 
@@ -2403,7 +2435,7 @@ static void Op33(void)                                                    // LEAU
 
 static void Op04(void)                                                 // LSR DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_LSR_HANDLER(m);
        WRITE_BACK(m);
@@ -2421,7 +2453,7 @@ static void Op54(void)                                                    // LSRB
 
 static void Op64(void)                                                 // LSR IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_LSR_HANDLER(m);
        WRITE_BACK(m);
@@ -2429,7 +2461,7 @@ static void Op64(void)                                                    // LSR IDX
 
 static void Op74(void)                                                 // LSR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_LSR_HANDLER(m);
        WRITE_BACK(m);
@@ -2445,7 +2477,7 @@ static void Op74(void)                                                    // LSR ABS
 
 static void Op3D(void)                                                 // MUL
 {
-       uint16 prod = regs.a * regs.b;
+       uint16_t prod = regs.a * regs.b;
        regs.a = prod >> 8;
        regs.b = prod & 0xFF;
        SET_Z(prod);
@@ -2468,25 +2500,15 @@ static void Op3D(void)                                                  // MUL
 // NEG opcodes
 
 #define OP_NEG_HANDLER(m) \
-       uint8 res = -m; \
+       uint8_t res = -m; \
        SET_ZN(res); \
        SET_V(0, m, res); \
        flagC = (res >= 0x80 ? 1 : 0); \
        m = res
 
-/*
-       UINT16 r,t;
-       DIRBYTE(t);
-       r = -t;
-       CLR_NZVC;
-       SET_FLAGS8(0,t,r);
-       WM(EAD,r);
-#define SET_FLAGS8(a,b,r)      {SET_N8(r);SET_Z8(r);SET_V8(a,b,r);SET_C8(r);}
-#define SET_C8(a)              CC|=((a&0x100)>>8)
-*/
 static void Op00(void)                                                 // NEG DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_NEG_HANDLER(m);
        WRITE_BACK(m);
@@ -2504,7 +2526,7 @@ static void Op50(void)                                                    // NEGB
 
 static void Op60(void)                                                 // NEG IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_NEG_HANDLER(m);
        WRITE_BACK(m);
@@ -2512,7 +2534,7 @@ static void Op60(void)                                                    // NEG IDX
 
 static void Op70(void)                                                 // NEG ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_NEG_HANDLER(m);
        WRITE_BACK(m);
@@ -2542,49 +2564,49 @@ static void Op70(void)                                                  // NEG ABS
 
 static void Op8A(void)                                                 // ORA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_OR_HANDLER(m, regs.a);
 }
 
 static void Op9A(void)                                                 // ORA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_OR_HANDLER(m, regs.a);
 }
 
 static void OpAA(void)                                                 // ORA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_OR_HANDLER(m, regs.a);
 }
 
 static void OpBA(void)                                                 // ORA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_OR_HANDLER(m, regs.a);
 }
 
 static void OpCA(void)                                                 // ORB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_OR_HANDLER(m, regs.b);
 }
 
 static void OpDA(void)                                                 // ORB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_OR_HANDLER(m, regs.b);
 }
 
 static void OpEA(void)                                                 // ORB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_OR_HANDLER(m, regs.b);
 }
 
 static void OpFA(void)                                                 // ORB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_OR_HANDLER(m, regs.b);
 }
 
@@ -2601,7 +2623,7 @@ static void OpFA(void)                                                    // ORB ABS
 
 static void Op34(void)                                                 // PSHS
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
 
        if (m & 0x80)
                PUSHS16(regs.pc);
@@ -2624,13 +2646,12 @@ static void Op34(void)                                                  // PSHS
        }
 
        // Count bits in each nybble to come up with correct cycle counts...
-       uint8 bitCount[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
        regs.clock += (1 * bitCount[m & 0x0F]) + (2 * bitCount[m >> 4]);
 }
 
 static void Op35(void)                                                 // PULS
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
 
        if (m & 0x01)
        {
@@ -2653,13 +2674,12 @@ static void Op35(void)                                                  // PULS
                PULLS16(regs.pc);
 
        // Count bits in each nybble to come up with correct cycle counts...
-       uint8 bitCount[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
        regs.clock += (1 * bitCount[m & 0x0F]) + (2 * bitCount[m >> 4]);
 }
 
 static void Op36(void)                                                 // PHSU
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
 
        if (m & 0x80)
                PUSHU16(regs.pc);
@@ -2682,13 +2702,12 @@ static void Op36(void)                                                  // PHSU
        }
 
        // Count bits in each nybble to come up with correct cycle counts...
-       uint8 bitCount[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
        regs.clock += (1 * bitCount[m & 0x0F]) + (2 * bitCount[m >> 4]);
 }
 
 static void Op37(void)                                                 // PULU
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
 
        if (m & 0x01)
        {
@@ -2711,7 +2730,6 @@ static void Op37(void)                                                    // PULU
                PULLU16(regs.pc);
 
        // Count bits in each nybble to come up with correct cycle counts...
-       uint8 bitCount[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
        regs.clock += (1 * bitCount[m & 0x0F]) + (2 * bitCount[m >> 4]);
 }
 
@@ -2730,23 +2748,15 @@ static void Op37(void)                                                  // PULU
 // ROL opcodes
 
 #define OP_ROL_HANDLER(m) \
-       uint8 res = (m << 1) | flagC; \
+       uint8_t res = (m << 1) | flagC; \
        SET_ZN(res); \
        SET_V(m, m, res); \
        flagC = (m >> 7) & 0x01; \
        m = res
 
-/*
-       UINT16 t,r;
-       DIRBYTE(t);
-       r = (CC & CC_C) | (t << 1);
-       CLR_NZVC;
-       SET_FLAGS8(t,t,r);
-       WM(EAD,r);
-*/
 static void Op09(void)                                                 // ROL DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_ROL_HANDLER(m);
        WRITE_BACK(m);
@@ -2764,7 +2774,7 @@ static void Op59(void)                                                    // ROLB
 
 static void Op69(void)                                                 // ROL IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_ROL_HANDLER(m);
        WRITE_BACK(m);
@@ -2772,7 +2782,7 @@ static void Op69(void)                                                    // ROL IDX
 
 static void Op79(void)                                                 // ROL ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ROL_HANDLER(m);
        WRITE_BACK(m);
@@ -2793,7 +2803,7 @@ static void Op79(void)                                                    // ROL ABS
 // ROR opcodes
 
 #define OP_ROR_HANDLER(m) \
-       uint8 res = (flagC << 7) | (m >> 1); \
+       uint8_t res = (flagC << 7) | (m >> 1); \
        SET_ZN(res); \
        SET_V(m, m, res); \
        flagC = m & 0x01; \
@@ -2801,7 +2811,7 @@ static void Op79(void)                                                    // ROL ABS
 
 static void Op06(void)                                                 // ROR DP
 {
-       uint8 m;
+       uint8_t m;
        READ_DP_WB(m);
        OP_ROR_HANDLER(m);
        WRITE_BACK(m);
@@ -2819,7 +2829,7 @@ static void Op56(void)                                                    // RORB
 
 static void Op66(void)                                                 // ROR IDX
 {
-       uint8 m;
+       uint8_t m;
        READ_IDX_WB(m);
        OP_ROR_HANDLER(m);
        WRITE_BACK(m);
@@ -2827,7 +2837,7 @@ static void Op66(void)                                                    // ROR IDX
 
 static void Op76(void)                                                 // ROR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ROR_HANDLER(m);
        WRITE_BACK(m);
@@ -2851,57 +2861,57 @@ static void Op76(void)                                                  // ROR ABS
 // SBC opcodes
 
 #define OP_SBC_HANDLER(m, acc) \
-       uint16 sum = (uint16)acc - (m) - (uint16)flagC; \
+       uint16_t sum = (uint16_t)acc - (m) - (uint16_t)flagC; \
        flagC = (sum >> 8) & 0x01; \
        SET_V(m, acc, sum); \
-       acc = (uint8)sum; \
+       acc = (uint8_t)sum; \
        SET_ZN(acc)
 
 static void Op82(void)                                                 // SBCA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void Op92(void)                                                 // SBCA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpA2(void)                                                 // SBCA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpB2(void)                                                 // SBCA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpC2(void)                                                 // SBCB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpD2(void)                                                 // SBCB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpE2(void)                                                 // SBCB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpF2(void)                                                 // SBCB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_SBC_HANDLER(m, regs.b);
 }
 
@@ -2947,127 +2957,127 @@ static void OpF2(void)                                                        // SBCB ABS
 
 static void Op97(void)                                                 // STA DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER(addr, regs.a);
 }
 
 static void Op9F(void)                                                 // STX DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER16(addr, regs.x);
 }
 
 static void OpA7(void)                                                 // STA IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER(addr, regs.a);
 }
 
 static void OpAF(void)                                                 // STX IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER16(addr, regs.x);
 }
 
 static void OpB7(void)                                                 // STA ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER(addr, regs.a);
 }
 
 static void OpBF(void)                                                 // STX ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER16(addr, regs.x);
 }
 
 static void OpD7(void)                                                 // STB DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER(addr, regs.b);
 }
 
 static void OpDD(void)                                                 // STD DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER16(addr, (regs.a << 8) | regs.b);
 }
 
 static void OpDF(void)                                                 // STU DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER16(addr, regs.u);
 }
 
 static void OpE7(void)                                                 // STB IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER(addr, regs.b);
 }
 
 static void OpED(void)                                                 // STD IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER16(addr, (regs.a << 8) | regs.b);
 }
 
 static void OpEF(void)                                                 // STU IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER16(addr, regs.u);
 }
 
 static void OpF7(void)                                                 // STB ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER(addr, regs.b);
 }
 
 static void OpFD(void)                                                 // STD ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER16(addr, (regs.a << 8) | regs.b);
 }
 
 static void OpFF(void)                                                 // STU ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER16(addr, regs.u);
 }
 
 static void Op109F(void)                                               // STY DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER16(addr, regs.y);
 }
 
 static void Op10AF(void)                                               // STY IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER16(addr, regs.y);
 }
 
 static void Op10BF(void)                                               // STY ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER16(addr, regs.y);
 }
 
 static void Op10DF(void)                                               // STS DP
 {
-       uint16 addr = EA_DP;
+       uint16_t addr = EA_DP;
        OP_STA_HANDLER16(addr, regs.s);
 }
 
 static void Op10EF(void)                                               // STS IDX
 {
-       uint16 addr = EA_IDX;
+       uint16_t addr = EA_IDX;
        OP_STA_HANDLER16(addr, regs.s);
 }
 
 static void Op10FF(void)                                               // STS ABS
 {
-       uint16 addr = EA_ABS;
+       uint16_t addr = EA_ABS;
        OP_STA_HANDLER16(addr, regs.s);
 }
 
@@ -3093,15 +3103,15 @@ static void Op10FF(void)                                                // STS ABS
 // SUB opcodes
 
 #define OP_SUB_HANDLER(m, acc) \
-       uint16 sum = (uint16)acc - (m); \
+       uint16_t sum = (uint16_t)acc - (m); \
        flagC = (sum >> 8) & 0x01; \
        SET_V(m, acc, sum); \
-       acc = (uint8)sum; \
+       acc = (uint8_t)sum; \
        SET_ZN(acc)
 
 #define OP_SUB_HANDLER16D(m) \
-       uint32 acc = (uint32)((regs.a << 8) | regs.b); \
-       uint32 sum = acc - (m); \
+       uint32_t acc = (uint32_t)((regs.a << 8) | regs.b); \
+       uint32_t sum = acc - (m); \
        flagC = (sum >> 16) & 0x01; \
        SET_V16(m, acc, sum); \
        acc = sum & 0xFFFF; \
@@ -3111,73 +3121,73 @@ static void Op10FF(void)                                                // STS ABS
 
 static void Op80(void)                                                 // SUBA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void Op83(void)                                                 // SUBD #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_SUB_HANDLER16D(m);
 }
 
 static void Op90(void)                                                 // SUBA DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void Op93(void)                                                 // SUBD DP
 {
-       uint16 m = READ_DP16;
+       uint16_t m = READ_DP16;
        OP_SUB_HANDLER16D(m);
 }
 
 static void OpA0(void)                                                 // SUBA IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void OpA3(void)                                                 // SUBD IDX
 {
-       uint16 m = READ_IDX16;
+       uint16_t m = READ_IDX16;
        OP_SUB_HANDLER16D(m);
 }
 
 static void OpB0(void)                                                 // SUBA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void OpB3(void)                                                 // SUBD ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_SUB_HANDLER16D(m);
 }
 
 static void OpC0(void)                                                 // SUBB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpD0(void)                                                 // SUBB DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpE0(void)                                                 // SUBB IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpF0(void)                                                 // SUBB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_SUB_HANDLER(m, regs.b);
 }
 
@@ -3201,7 +3211,7 @@ static void OpF0(void)                                                    // SUBB ABS
 
 static void Op0D(void)                                                 // TST DP
 {
-       uint8 m = READ_DP;
+       uint8_t m = READ_DP;
        OP_TST_HANDLER(m);
 }
 
@@ -3217,43 +3227,28 @@ static void Op5D(void)                                                  // TSTB
 
 static void Op6D(void)                                                 // TST IDX
 {
-       uint8 m = READ_IDX;
+       uint8_t m = READ_IDX;
        OP_TST_HANDLER(m);
 }
 
 static void Op7D(void)                                                 // TST ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_TST_HANDLER(m);
 }
 
+//
 // Undocumented Opcodes
-
+//
 static void Op01(void)
 {
        Op00();                                                                         // NEG DP
 }
 
-
-//temp, for testing...
-#ifdef __DEBUG__
-static uint8 backTrace[256];
-static uint16 btPC[256];
-static int btPtr = 0;//*/
-#endif
-static void Op__(void)                                                                 // Illegal opcode
+static void Op__(void)                                                 // Illegal opcode
 {
        regs.clock++;
-//     illegal = true;
        regs.cpuFlags |= V6809_STATE_ILLEGAL_INST;
-#ifdef __DEBUG__
-/*WriteLog("V6809: Executed illegal opcode %02X at PC=%04X...\n\nBacktrace:\n\n", regs.RdMem(regs.pc - 1), regs.pc - 1);
-for(int i=0; i<256; i++)
-{
-       Decode6809(btPC[(btPtr + i) & 0xFF]);
-       WriteLog("\n");
-}//*/
-#endif
 }
 
 //
@@ -3330,8 +3325,7 @@ static void (* exec_op2[256])() = {
 // Page 1 opcode
 static void Op10(void)
 {
-//     exec_op1[regs.RdMem(regs.pc++)]();
-       uint8 opcode = regs.RdMem(regs.pc++);
+       uint8_t opcode = regs.RdMem(regs.pc++);
        exec_op1[opcode]();
        regs.clock += page1Cycles[opcode];
 }
@@ -3339,135 +3333,74 @@ static void Op10(void)
 // Page 2 opcode
 static void Op11(void)
 {
-//     exec_op2[regs.RdMem(regs.pc++)]();
-       uint8 opcode = regs.RdMem(regs.pc++);
+       uint8_t opcode = regs.RdMem(regs.pc++);
        exec_op2[opcode]();
        regs.clock += page2Cycles[opcode];
 }
 
-
 //
 // Internal "memcpy" (so we don't have to link with any external libraries!)
 //
-static void myMemcpy(void * dst, void * src, uint32 size)
+static void myMemcpy(void * dst, void * src, uint32_t size)
 {
-       uint8 * d = (uint8 *)dst, * s = (uint8 *)src;
+       uint8_t * d = (uint8_t *)dst, * s = (uint8_t *)src;
 
-       for(uint32 i=0; i<size; i++)
+       for(uint32_t i=0; i<size; i++)
                d[i] = s[i];
 }
 
 //
 // Function to execute 6809 instructions
 //
-//#define DEBUG_ILLEGAL
-#ifdef DEBUG_ILLEGAL
-#include "log.h"
-#include "dis6809.h"
-uint8 btPtr = 0;
-uint8 backTrace[256];
-V6809REGS btRegs[256];
-bool tripped = false;
-#endif
-void Execute6809(V6809REGS * context, uint32 cycles)
+void Execute6809(V6809REGS * context, uint32_t cycles)
 {
-       // If this is not in place, the clockOverrun calculations can cause the V6809 to get
-       // stuck in an infinite loop.
+       // If this is not in place, the clockOverrun calculations can cause the
+       // V6809 to get stuck in an infinite loop.
        if (cycles == 0)                                                        // Nothing to do, so bail!
                return;
 
        myMemcpy(&regs, context, sizeof(V6809REGS));
-       UNPACK_FLAGS;                                                           // Explode flags register into individual uint8s
+       // Explode flags register into individual uint8_ts
+       UNPACK_FLAGS;
 
        // Execute here...
 
-       // Since we can't guarantee that we'll execute the number of cycles passed in
-       // exactly, we have to keep track of how much we overran the number of cycles
-       // the last time we executed. Since we already executed those cycles, this time
-       // through we remove them from the cycles passed in in order to come out
-       // approximately even. Over the long run, this unevenness in execution times
-       // evens out.
-       uint64 endCycles = regs.clock + (uint64)(cycles - regs.clockOverrun);
+       // Since we can't guarantee that we'll execute the number of cycles passed
+       // in exactly, we have to keep track of how much we overran the number of
+       // cycles the last time we executed.  Since we already executed those
+       // cycles, this time through we remove them from the cycles passed in in
+       // order to come out approximately even.  Over the long run, this unevenness
+       // in execution times evens out.  :-)
+       uint64_t endCycles = regs.clock + (uint64_t)(cycles - regs.clockOverrun);
 
        while (regs.clock < endCycles)
        {
-#ifdef DEBUG_ILLEGAL
-if (!tripped)
-{
-       backTrace[btPtr] = regs.RdMem(regs.pc);
-       btRegs[btPtr] = regs;
-       btPtr = (btPtr + 1) & 0xFF;
-
-       if (regs.cpuFlags & V6809_STATE_ILLEGAL_INST)
-       {
-               WriteLog("V6809: Executed illegal instruction!!!!\n\nBacktrace:\n\n");
-               regs.cpuFlags &= ~V6809_STATE_ILLEGAL_INST;
-
-               for(uint16 i=btPtr; i<btPtr+256; i++)
-               {
-                       Decode6809(btRegs[i & 0xFF].pc);
-// Note that these values are *before* execution, so stale...
-                       WriteLog("\n\tA=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X\n",
-                               btRegs[i & 0xFF].a, btRegs[i & 0xFF].b, btRegs[i & 0xFF].cc, btRegs[i & 0xFF].dp, btRegs[i & 0xFF].x, btRegs[i & 0xFF].y, btRegs[i & 0xFF].s, btRegs[i & 0xFF].u, btRegs[i & 0xFF].pc);//*/
-               }
-
-               tripped = true;
-       }
-}
-#endif
-#ifdef __DEBUG__
-if (disasm)
-{
-       Decode6809(regs.pc);
-//     WriteLog("[e=%02X,f=%02X,h=%02X,i=%02X,n=%02X,z=%02X,v=%02X,c=%02X]", flagE, flagF, flagH, flagI, flagN, flagZ, flagV, flagC);
-}
-#if 0 //we solved this...
-if ((flagE | flagF | flagH | flagI | flagN | flagZ | flagV | flagC) > 1)
-       WriteLog("\n\n!!! FLAG OUT OF BOUNDS !!!\n\n");
-#endif
-//static bool disasm = false;
-/*//if (regs.pc == 0x15BA)     disasm = true;
-//if (regs.pc == 0xFE76)       disasm = true;
-if (regs.x == 0xFED4)  disasm = true;
-if (disasm) Decode6809(regs.pc);
-//if (regs.pc == 0x164A)       disasm = false;//*/
-
-//temp, for testing...
-/*backTrace[btPtr] = regs.RdMem(regs.pc);
-btPC[btPtr] = regs.pc;
-btPtr = (btPtr + 1) & 0xFF;//*/
-#endif
-//             exec_op0[regs.RdMem(regs.pc++)]();
-               uint8 opcode = regs.RdMem(regs.pc++);
+               uint8_t opcode = regs.RdMem(regs.pc++);
                exec_op0[opcode]();
                regs.clock += page0Cycles[opcode];
 
                // Handle any pending interrupts
 
 // Hmm, this is bad and only works when flags are changed OUTSIDE of the running context...
-//             uint32 flags = context->cpuFlags;
-               uint32 flags = regs.cpuFlags;
+//             uint32_t flags = context->cpuFlags;
+               uint32_t flags = regs.cpuFlags;
 
-               if (flags & V6809_ASSERT_LINE_RESET)                    // *** RESET handler ***
+               // *** RESET handler ***
+               if (flags & V6809_LINE_RESET)
                {
-#ifdef __DEBUG__
-if (disasm) WriteLog("\nV6809: RESET line asserted!\n");
-#endif
-                       flagF = flagI = 1;                                                      // Set F, I
-                       regs.dp = 0;                                                            // Reset direct page register
-                       regs.pc = RdMemW(0xFFFE);                                       // And load PC with the RESET vector
-                       context->cpuFlags &= ~V6809_ASSERT_LINE_RESET;
-                       regs.cpuFlags &= ~V6809_ASSERT_LINE_RESET;
+                       flagF = flagI = 1;                      // Set F, I
+                       regs.dp = 0;                            // Reset direct page register
+                       regs.pc = RdMemW(0xFFFE);       // And load PC with the RESET vector
+                       context->cpuFlags &= ~V6809_LINE_RESET;
+                       regs.cpuFlags &= ~V6809_LINE_RESET;
                }
-               else if (flags & V6809_ASSERT_LINE_NMI)                 // *** NMI handler ***
+               // *** NMI handler ***
+               else if (flags & V6809_LINE_NMI)
                {
-#ifdef __DEBUG__
-if (disasm) WriteLog("\nV6809: NMI line asserted!\n");
-#endif
-                       flagE = 1;                                                                      // Set Entire flag
-                       regs.cc = PACK_FLAGS;                                           // Mash flags back into the CC register
+                       flagE = 1;                                      // Set Entire flag
+                       regs.cc = PACK_FLAGS;           // Mash flags back into the CC register
 
-                       PUSHS16(regs.pc);                                                       // Save all regs...
+                       PUSHS16(regs.pc);                       // Save all regs...
                        PUSHS16(regs.u);
                        PUSHS16(regs.y);
                        PUSHS16(regs.x);
@@ -3476,47 +3409,33 @@ if (disasm) WriteLog("\nV6809: NMI line asserted!\n");
                        PUSHS(regs.a);
                        PUSHS(regs.cc);
 
-                       flagI = flagF = 1;                                                      // Set IRQ/FIRQ suppress flags
-                       regs.pc = RdMemW(0xFFFC);                                       // And load PC with the NMI vector
+                       flagI = flagF = 1;                      // Set IRQ/FIRQ suppress flags
+                       regs.pc = RdMemW(0xFFFC);       // And load PC with the NMI vector
                        regs.clock += 19;
-//                     context->cpuFlags &= ~V6809_ASSERT_LINE_NMI;// Reset the asserted line (NMI)...
-//                     regs.cpuFlags &= ~V6809_ASSERT_LINE_NMI;        // Reset the asserted line (NMI)...
                }
-               else if (flags & V6809_ASSERT_LINE_FIRQ)                // *** FIRQ handler ***
+               // *** FIRQ handler ***
+               else if (flags & V6809_LINE_FIRQ)
                {
-#ifdef __DEBUG__
-if (disasm) WriteLog("\nV6809: FIRQ line asserted!\n");
-#endif
-                       if (!flagF)                                                                     // Is the FIRQ masked (F == 1)?
+                       if (!flagF)                                     // Is the FIRQ masked (F == 1)?
                        {
-#ifdef __DEBUG__
-if (disasm) WriteLog("       FIRQ taken...\n");
-#endif
-                               flagE = 0;                                                              // Clear Entire flag
-                               regs.cc = PACK_FLAGS;                                   // Mash flags back into the CC register
+                               flagE = 0;                              // Clear Entire flag
+                               regs.cc = PACK_FLAGS;   // Mash flags back into the CC register
 
                                PUSHS16(regs.pc);
                                PUSHS(regs.cc);
 
-                               flagI = flagF = 1;                                              // Set IRQ/FIRQ suppress flags
-                               regs.pc = RdMemW(0xFFF6);                               // And load PC with the IRQ vector
+                               flagI = flagF = 1;              // Set IRQ/FIRQ suppress flags
+                               regs.pc = RdMemW(0xFFF6);       // And load PC with the IRQ vector
                                regs.clock += 10;
-//                             context->cpuFlags &= ~V6809_ASSERT_LINE_FIRQ;   // Reset the asserted line (FIRQ)...
-//                             regs.cpuFlags &= ~V6809_ASSERT_LINE_FIRQ;       // Reset the asserted line (FIRQ)...
                        }
                }
-               else if (flags & V6809_ASSERT_LINE_IRQ)                 // *** IRQ handler ***
+               // *** IRQ handler ***
+               else if (flags & V6809_LINE_IRQ)
                {
-#ifdef __DEBUG__
-if (disasm) WriteLog("\nV6809: IRQ line asserted!\n");
-#endif
-                       if (!flagI)                                                                     // Is the IRQ masked (I == 1)?
+                       if (!flagI)                                     // Is the IRQ masked (I == 1)?
                        {
-#ifdef __DEBUG__
-if (disasm) WriteLog("       IRQ taken...\n");
-#endif
-                               flagE = 1;                                                              // Set the Entire flag
-                               regs.cc = PACK_FLAGS;                                   // Mash flags back into the CC register
+                               flagE = 1;                              // Set the Entire flag
+                               regs.cc = PACK_FLAGS;   // Mash flags back into the CC register
 
                                PUSHS16(regs.pc);
                                PUSHS16(regs.u);
@@ -3527,35 +3446,24 @@ if (disasm) WriteLog("       IRQ taken...\n");
                                PUSHS(regs.a);
                                PUSHS(regs.cc);
 
-                               flagI = 1;                                                              // Specs say that it doesn't affect FIRQ... or FLAG_F [WAS: Set IRQ/FIRQ suppress flags]
-                               regs.pc = RdMemW(0xFFF8);                               // And load PC with the IRQ vector
+                               flagI = 1;                              // Specs say that it doesn't affect FIRQ... or FLAG_F [WAS: Set IRQ/FIRQ suppress flags]
+                               regs.pc = RdMemW(0xFFF8);       // And load PC with the IRQ vector
                                regs.clock += 19;
-// Apparently, not done here!
-//                             context->cpuFlags &= ~V6809_ASSERT_LINE_IRQ;    // Reset the asserted line (IRQ)...
-//                             regs.cpuFlags &= ~V6809_ASSERT_LINE_IRQ;        // Reset the asserted line (IRQ)...
                        }
                }
-#ifdef __DEBUG__
-if (disasm) WriteLog("CC=%s%s%s%s%s%s%s%s A=%02X B=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X\n",
-       (flagE ? "E" : "-"), (flagF ? "F" : "-"), (flagH ? "H" : "-"), (flagI ? "I" : "-"),
-       (flagN ? "N" : "-"), (flagZ ? "Z" : "-"), (flagV ? "V" : "-"), (flagC ? "C" : "-"),
-       regs.a, regs.b, regs.dp, regs.x, regs.y, regs.s, regs.u, regs.pc);//*/
-/*WriteLog("\tA=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X\n",
-       regs.a, regs.b, regs.cc, regs.dp, regs.x, regs.y, regs.s, regs.u, regs.pc);//*/
-#endif
        }
 
        // Keep track of how much we overran so we can adjust on the next run...
-       regs.clockOverrun = (uint32)(regs.clock - endCycles);
+       regs.clockOverrun = (uint32_t)(regs.clock - endCycles);
 
-       regs.cc = PACK_FLAGS;                                           // Mash flags back into the CC register
+       regs.cc = PACK_FLAGS;                           // Mash flags back into the CC register
        myMemcpy(context, &regs, sizeof(V6809REGS));
 }
 
 //
 // Get the clock of the currently executing CPU
 //
-uint64 GetCurrentV6809Clock(void)
+uint64_t GetCurrentV6809Clock(void)
 {
        return regs.clock;
 }
@@ -3563,51 +3471,19 @@ uint64 GetCurrentV6809Clock(void)
 //
 // Get the PC of the currently executing CPU
 //
-uint16 GetCurrentV6809PC(void)
+uint16_t GetCurrentV6809PC(void)
 {
        return regs.pc;
 }
 
 // Set a line of the currently executing CPU
-void SetLineOfCurrentV6809(uint32 line)
+void SetLineOfCurrentV6809(uint32_t line)
 {
        regs.cpuFlags |= line;
 }
 
 // Clear a line of the currently executing CPU
-void ClearLineOfCurrentV6809(uint32 line)
+void ClearLineOfCurrentV6809(uint32_t line)
 {
-#ifdef __DEBUG__
-if (disasm)
-       WriteLog("V6809: Clearing line %s...", (line == V6809_ASSERT_LINE_IRQ ? "IRQ" : "OTHER"));
-#endif
        regs.cpuFlags &= ~line;
 }
-
-#if 0
-FE54: 27 6A          BEQ   $FEC0        CC=EF-I-Z-- A=39 B=01 DP=00 X=FEE2 Y=F51
-E S=BFFF U=0000 PC=FEC0
-FEC0: 6E A4          JMP   ,Y   CC=EF-I-Z-- A=39 B=01 DP=00 X=FEE2 Y=F51E S=BFFF
- U=0000 PC=F51E
-F51E: 86 34          LDA   #$34 CC=EF-I---- A=34 B=01 DP=00 X=FEE2 Y=F51E S=BFFF
- U=0000 PC=F520
-F520: B7 C8 0D       STA   $C80D        CC=EF-I---- A=34 B=01 DP=00 X=FEE2 Y=F51E S=BFFF U=0000 PC=F523
-F523: B7 C8 0F       STA   $C80F        CC=EF-I---- A=34 B=01 DP=00 X=FEE2 Y=F51E S=BFFF U=0000 PC=F526
-F526: 7F C8 0E       CLR   $C80EV6809: Clearing line IRQ...     CC=EF-I-Z-- A=34 B=01 DP=00 X=FEE2 Y=F51E S=BFFF U=0000 PC=F529
-F529: 86 9C          LDA   #$9C CC=EF-IN--- A=9C B=01 DP=00 X=FEE2 Y=F51E S=BFFF U=0000 PC=F52B
-F52B: 1F 8B          TFR   A,DP CC=EF-IN--- A=9C B=01 DP=9C X=FEE2 Y=F51E S=BFFF U=0000 PC=F52D
-F52D: 10 CE BF FF    LDS   #$BFFF       CC=EF-IN--- A=9C B=01 DP=9C X=FEE2 Y=F51E S=BFFF U=0000 PC=F531
-F531: BD 13 BD       JSR   $13BD        CC=EF-IN--- A=9C B=01 DP=9C X=FEE2 Y=F51E S=BFFD U=0000 PC=13BD
-13BD: 34 76          PSHS  A B X Y U    CC=EF-IN--- A=9C B=01 DP=9C X=FEE2 Y=F51E S=BFF5 U=0000 PC=13BF
-13BF: CE 9C 00       LDU   #$9C00       CC=EF-IN--- A=9C B=01 DP=9C X=FEE2 Y=F51E S=BFF5 U=9C00 PC=13C2
-13C2: 8E 00 00       LDX   #$0000       CC=EF-I-Z-- A=9C B=01 DP=9C X=0000 Y=F51E S=BFF5 U=9C00 PC=13C5
-13C5: 1F 12          TFR   X,Y  CC=EF-I-Z-- A=9C B=01 DP=9C X=0000 Y=0000 S=BFF5 U=9C00 PC=13C7
-13C7: 1F 10          TFR   X,D  CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFF5 U=9C00 PC=13C9
-13C9: 36 36          PSHU  A B X Y      CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFEF U=9C00 PC=13CB
-13CB: 36 36          PSHU  A B X Y      CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFE9 U=9C00 PC=13CD
-13CD: 36 36          PSHU  A B X Y      CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFE3 U=9C00 PC=13CF
-13CF: 36 36          PSHU  A B X Y      CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFDD U=9C00 PC=13D1
-13D1: 36 36          PSHU  A B X Y      CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFD7 U=9C00 PC=13D3
-13D3: 36 10          PSHU  X    CC=EF-I-Z-- A=00 B=00 DP=9C X=0000 Y=0000 S=BFD5 U=9C00 PC=13D5
-13D5: 11 83 00 00    CMPU  #$0000       CC=EF-IN--- A=00 B=00 DP=9C X=0000 Y=000
-#endif