]> Shamusworld >> Repos - thunder/commitdiff
Code cleanup.
authorShamus Hammons <jlhamm@acm.org>
Fri, 4 Apr 2014 17:06:37 +0000 (12:06 -0500)
committerShamus Hammons <jlhamm@acm.org>
Fri, 4 Apr 2014 17:06:37 +0000 (12:06 -0500)
18 files changed:
makefile
src/dis6808.cpp
src/dis6808.h
src/dis6809.cpp
src/dis6809.h
src/gui.cpp
src/gui.h
src/log.cpp
src/resource.asm
src/resource.h
src/screen.cpp
src/screen.h
src/thunder.cpp
src/types.h [deleted file]
src/v6808.cpp
src/v6808.h
src/v6809.cpp
src/v6809.h

index a9957d2943fa4fa896d5c86773e37c3c4dcb221f..5f21739a3166d32efce6917134965686df2a613e 100644 (file)
--- a/makefile
+++ b/makefile
@@ -1,7 +1,7 @@
 #
 # Makefile for Thunder SDL
 #
-# by James L. Hammons
+# by James Hammons
 # (C) 2009 Underground Software
 # This software is licensed under the GPL v3 or later
 #
@@ -26,7 +26,7 @@ ICON       =
 SDLLIBTYPE = --static-libs
 MSG        = Mac OS X
 
-else                                                                                   # *nix
+else   # *nix
 
 SYSTYPE    = __GCCUNIX__
 EXESUFFIX  =
index 35c54798b695a05f6794c972ac476e30be46b566..97f20c4c91d64a515d1bfed669659039c8a9147b 100644 (file)
@@ -1,9 +1,9 @@
 //
 // 6808 disassembler
 //
-// by James L. Hammons
+// by James Hammons
 //
-// (c) 2004 Underground Software
+// (c) 2004, 2014 Underground Software
 //
 
 #include "dis6808.h"
@@ -79,15 +79,15 @@ static char mnemonics[256][6] = {
 //
 // Display bytes in mem in hex
 //
-static void DisplayBytes(uint16 src, uint32 dst)
+static void DisplayBytes(uint16_t src, uint32_t dst)
 {
        WriteLog("%04X: ", src);
-       uint8 cnt = 0;                                                                          // Init counter...
+       uint8_t cnt = 0;                                                                                // Init counter...
 
        if (src > dst)
                dst += 0x10000;                                                                 // That should fix the FFFF bug...
 
-       for(uint32 i=src; i<dst; i++)
+       for(uint32_t i=src; i<dst; i++)
        {
                WriteLog("%02X ", soundCPU.RdMem(i));
                cnt++;                                                                                  // Bump counter...
@@ -100,12 +100,12 @@ static void DisplayBytes(uint16 src, uint32 dst)
 //
 // Decode a 6808 instruction
 //
-int Decode6808(uint16 pc)
+int Decode6808(uint16_t pc)
 {
        char outbuf[80];
 
-       uint16 addr = pc, offset;
-       uint8 opcode = soundCPU.RdMem(addr++);                          // Get the opcode
+       uint16_t addr = pc, offset;
+       uint8_t opcode = soundCPU.RdMem(addr++);                                // Get the opcode
 
        switch (op_mat[opcode])                                                         // Decode the addressing mode...
        {
@@ -122,8 +122,8 @@ int Decode6808(uint16 pc)
                sprintf(outbuf, "%s $%04X  ", mnemonics[opcode], offset);
                break;
        case 3:                                                                                         // Relative
-//             sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16)(int8)soundCPU.RdMem(addr));
-               offset = addr + 1 + (int16)(int8)soundCPU.RdMem(addr);
+//             sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16_t)(int8_t)soundCPU.RdMem(addr));
+               offset = addr + 1 + (int16_t)(int8_t)soundCPU.RdMem(addr);
                addr++;
                sprintf(outbuf, "%s $%04X  ", mnemonics[opcode], offset);
                break;
index 3f77e13707dbec385c25462673167d87484a8b63..0e3934a6d211b162eab6b3a6707c861f0d9dc3a3 100644 (file)
@@ -1,15 +1,15 @@
 //
-// DIS6809.H
+// DIS6808.H
 //
-// by James L. Hammons
-// (C) 2004 Underground Software
+// by James Hammons
+// (C) 2004, 2014 Underground Software
 //
 
-#ifndef __DIS6809_H__
-#define __DIS6809_H__
+#ifndef __DIS6808_H__
+#define __DIS6808_H__
 
-#include "types.h"
+#include <stdint.h>
 
-int Decode6808(uint16 pc);
+int Decode6808(uint16_t pc);
 
-#endif // __DIS6809_H__
+#endif // __DIS6808_H__
index d598e2cf7334763229b2684558eeffe36d2a9887..cfc6b519f4fa390f8b09964510389ad01a1af9cd 100644 (file)
@@ -1,9 +1,9 @@
 //
 // 6809 disassembler
 //
-// by James L. Hammons
+// by James Hammons
 //
-// (c) 2004 Underground Software
+// (c) 2004, 2014 Underground Software
 //
 
 #include "dis6809.h"
@@ -191,15 +191,15 @@ iregs[4][2] = {"X", "Y", "U", "S" };
 //
 // Display bytes in mem in hex
 //
-static void DisplayBytes(V6809REGS regs, uint16 src, uint32 dst)
+static void DisplayBytes(V6809REGS regs, uint16_t src, uint32_t dst)
 {
        WriteLog("%04X: ", src);
-       uint8 cnt = 0;                                                                          // Init counter...
+       uint8_t cnt = 0;                                                                                // Init counter...
 
        if (src > dst)
                dst += 0x10000;                                                                 // That should fix the FFFF bug...
 
-       for(uint32 i=src; i<dst; i++)
+       for(uint32_t i=src; i<dst; i++)
        {
                WriteLog("%02X ", regs.RdMem(i));
                cnt++;                                                                                  // Bump counter...
@@ -212,16 +212,16 @@ static void DisplayBytes(V6809REGS regs, uint16 src, uint32 dst)
 //
 // Decode a 6809 instruction at 'addr'
 //
-//int Decode6809(uint16 pc)
+//int Decode6809(uint16_t pc)
 int Decode6809(V6809REGS regs)
 {
        char outbuf[80], mnem[6], tmp[30];
-       uint8 opcode2, operand;
+       uint8_t opcode2, operand;
 
-       uint16 addr = regs.pc, offset;
+       uint16_t addr = regs.pc, offset;
 
-       uint8 opcode = regs.RdMem(addr++);                              // Get the opcode
-       uint8 admode = op_mat1[opcode];                                         // addressing mode
+       uint8_t opcode = regs.RdMem(addr++);                            // Get the opcode
+       uint8_t admode = op_mat1[opcode];                                               // addressing mode
        strcpy(mnem, mnemonics[opcode]);                                        // Copy page 1 opcode
 
        if (opcode == 0x10)                                                                     // Extended opcode?
@@ -253,14 +253,14 @@ int Decode6809(V6809REGS regs)
                break;
        case 3:                                                                                         // Relative
 //DISNOWOK--FIX
-//             sprintf(outbuf, "%s $%04X", mnem, ++addr + (int16)((int8)regs.RdMem(addr)));
-               offset = addr + 1 + (int16)(int8)regs.RdMem(addr);
+//             sprintf(outbuf, "%s $%04X", mnem, ++addr + (int16_t)((int8_t)regs.RdMem(addr)));
+               offset = addr + 1 + (int16_t)(int8_t)regs.RdMem(addr);
                addr++;
                sprintf(outbuf, "%s $%04X", mnem, offset);
                break;
        case 4:                                                                                         // Long Relative
-//             sprintf(outbuf, "%s $%04X", mnem, addr + (int16)((regs.RdMem(addr++) << 8) | regs.RdMem(addr++)) + 2);
-               offset = addr + (int16)((regs.RdMem(addr) << 8) | regs.RdMem(addr + 1)) + 2;
+//             sprintf(outbuf, "%s $%04X", mnem, addr + (int16_t)((regs.RdMem(addr++) << 8) | regs.RdMem(addr++)) + 2);
+               offset = addr + (int16_t)((regs.RdMem(addr) << 8) | regs.RdMem(addr + 1)) + 2;
                addr += 2;
                sprintf(outbuf, "%s $%04X", mnem, offset);
                break;
@@ -289,9 +289,9 @@ int Decode6809(V6809REGS regs)
        case 7:                                                                                         // Indexed (the tough one!)
        {
                operand = regs.RdMem(addr++);                           // Get IDX byte
-               uint8 reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
+               uint8_t reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
                        lo_nyb = (operand & 0x0F),  boff;
-               uint16 woff;
+               uint16_t woff;
 
                strcpy(tmp, "??");
                if (!(operand & 0x80))                                                  // Hi bit set? Then decode 4 bit offset
index 04d2e6c306bc899932141aa42d48027674c6c89a..a08851ef3a208395263f91cfad00390c22aeabe8 100644 (file)
@@ -1,8 +1,8 @@
 //
 // DIS6809.H
 //
-// by James L. Hammons
-// (C) 2004 Underground Software
+// by James Hammons
+// (C) 2004, 2014 Underground Software
 //
 
 #ifndef __DIS6809_H__
index df8275cf05e8826f1fe7c5cc89292c3dad96f346..a84ab6f19124f932120095fcd48c5cd7b54298fc 100644 (file)
@@ -1,10 +1,10 @@
 //
 // Thunder Graphic User Interface
 //
-// by James L. Hammons
-// (c) 2004, 2009 Underground Software
+// by James Hammons
+// (c) 2004, 2014 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // WHO  WHEN        WHAT
 // ---  ----------  ------------------------------------------------------------
@@ -25,34 +25,34 @@ using namespace std;                                        // Yes!
 
 extern SDL_Surface * screen;
 
-extern uint8 my_scr[0x14000];                                                  // Screen buffer...
-extern uint8 gram1[];                                                                  // Game RAM (do here??)
-extern uint8 hScrollOffset;                                                            // Horizontal scroll offset
-extern uint8 vScrollOffset;                                                            // Vertical scroll offset
-extern uint32 voffsets[8];
-extern uint8 voice_rom[];                                                              // PCM data pointer
+extern uint8_t my_scr[0x14000];                                                        // Screen buffer...
+extern uint8_t gram1[];                                                                        // Game RAM (do here??)
+extern uint8_t hScrollOffset;                                                          // Horizontal scroll offset
+extern uint8_t vScrollOffset;                                                          // Vertical scroll offset
+extern uint32_t voffsets[8];
+extern uint8_t voice_rom[];                                                            // PCM data pointer
 extern fstream tr;                                                                             // Tracelog
 
 // Global shit
 
-uint16 text_life;          // How long text is visible
+uint16_t text_life;          // How long text is visible
 bool show_text;          // Whether or not to show text
-uint16 show_which_msg;     // Which message to show
+uint16_t show_which_msg;     // Which message to show
 bool show_gui;           // Whether or not to show GUI
-uint16 selection;          // Which GUI item currently selected
-uint16 snd_num;
-uint16 gui_debounce;       // GUI key debounce value
-uint16 num_coins;          // Number of coins dropped
-uint16 blink = 0;          // Used to blink player 1 & 2 start buttons
-uint16 flash = 23;         // Used to flash GUI lights
-uint16 iline = 0;          // Used to roll line
-uint16 dcurcol = 179;      // dipswitch cursor color
+uint16_t selection;          // Which GUI item currently selected
+uint16_t snd_num;
+uint16_t gui_debounce;       // GUI key debounce value
+uint16_t num_coins;          // Number of coins dropped
+uint16_t blink = 0;          // Used to blink player 1 & 2 start buttons
+uint16_t flash = 23;         // Used to flash GUI lights
+uint16_t iline = 0;          // Used to roll line
+uint16_t dcurcol = 179;      // dipswitch cursor color
 int  dcurdir = 1;        // Initially going up...
 bool blink_on = false;
 bool game_refresh;       // Refresh rate user set
 bool do_decrement;       // Flag to handle decrement...
 bool user_selected_something;  // Flag for well, you know...
-uint16 dswitch;            // Which dipswitch is selected...
+uint16_t dswitch;            // Which dipswitch is selected...
 
 // The following are global for the sound routines...
 
@@ -60,27 +60,27 @@ const float sampleBase = 22050.0/6000.0;  // Btwn 5512.5 and 6000
 bool snd_go = false;
 bool chan1_go = false, chan2_go = false, chan3_go = false;
 bool chan4_go = false, chan5_go = false, chan6_go = false;
-uint8 * sndp1, * sndp2, * sndp3, * sndp4, * sndp5, * sndp6;
-uint32 rom_pos, end_pos;
-uint32 spos1, end_pos1;
-uint32 spos2, end_pos2;
-uint32 spos3, end_pos3;
-uint32 spos4, end_pos4;
-uint32 spos5, end_pos5;
-uint32 spos6, end_pos6;
+uint8_t * sndp1, * sndp2, * sndp3, * sndp4, * sndp5, * sndp6;
+uint32_t rom_pos, end_pos;
+uint32_t spos1, end_pos1;
+uint32_t spos2, end_pos2;
+uint32_t spos3, end_pos3;
+uint32_t spos4, end_pos4;
+uint32_t spos5, end_pos5;
+uint32_t spos6, end_pos6;
 float sample1;
-uint8 prevSamp1;
-int8 delta_x1;
+uint8_t prevSamp1;
+int8_t delta_x1;
 float sample2;
-uint8 prevSamp2;
-int8 delta_x2;
+uint8_t prevSamp2;
+int8_t delta_x2;
 
-uint8 * snd_array[3] = { sunknown, scya, scamera }; // From RESOURCE.H
-uint32 snd_lens[3]   = { sunknownlen, scyalen, scameralen };
+uint8_t * snd_array[3] = { sunknown, scya, scamera }; // From RESOURCE.H
+uint32_t snd_lens[3]   = { sunknownlen, scyalen, scameralen };
 
 // Bitmaps
 
-uint8 bmp1[] = {
+uint8_t bmp1[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,
   0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,
@@ -89,7 +89,7 @@ uint8 bmp1[] = {
   0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-uint8 bmp2[] = {
+uint8_t bmp2[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,
   0,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,
@@ -98,7 +98,7 @@ uint8 bmp2[] = {
   0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-uint8 bmp3[] = {
+uint8_t bmp3[] = {
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,
@@ -107,7 +107,7 @@ uint8 bmp3[] = {
   0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,0,1,1,1,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
   };
-uint8 boptions[] = { // 35x9
+uint8_t boptions[] = { // 35x9
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -118,7 +118,7 @@ uint8 boptions[] = { // 35x9
   0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,
   0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   };
-uint8 bn0[] = {
+uint8_t bn0[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -127,7 +127,7 @@ uint8 bn0[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn1[] = {
+uint8_t bn1[] = {
   0,0,0,0,0,0,
   0,0,1,0,0,0,
   0,1,1,0,0,0,
@@ -136,7 +136,7 @@ uint8 bn1[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn2[] = {
+uint8_t bn2[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,0,0,0,1,0,
@@ -145,7 +145,7 @@ uint8 bn2[] = {
   0,1,1,1,1,0,
   0,0,0,0,0,0
   };
-uint8 bn3[] = {
+uint8_t bn3[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,0,0,0,1,0,
@@ -154,7 +154,7 @@ uint8 bn3[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn4[] = {
+uint8_t bn4[] = {
   0,0,0,0,0,0,
   0,0,0,1,0,0,
   0,1,0,1,0,0,
@@ -163,7 +163,7 @@ uint8 bn4[] = {
   0,0,0,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn5[] = {
+uint8_t bn5[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -172,7 +172,7 @@ uint8 bn5[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn6[] = {
+uint8_t bn6[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,0,0,
@@ -181,7 +181,7 @@ uint8 bn6[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn7[] = {
+uint8_t bn7[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,0,0,0,1,0,
@@ -190,7 +190,7 @@ uint8 bn7[] = {
   0,0,1,0,0,0,
   0,0,0,0,0,0
   };
-uint8 bn8[] = {
+uint8_t bn8[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -199,7 +199,7 @@ uint8 bn8[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bn9[] = {
+uint8_t bn9[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -208,7 +208,7 @@ uint8 bn9[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bnA[] = {
+uint8_t bnA[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -217,7 +217,7 @@ uint8 bnA[] = {
   0,1,0,0,1,0,
   0,0,0,0,0,0
   };
-uint8 bnB[] = {
+uint8_t bnB[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,1,0,0,1,0,
@@ -226,7 +226,7 @@ uint8 bnB[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bnC[] = {
+uint8_t bnC[] = {
   0,0,0,0,0,0,
   0,0,1,1,0,0,
   0,1,0,0,1,0,
@@ -235,7 +235,7 @@ uint8 bnC[] = {
   0,0,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bnD[] = {
+uint8_t bnD[] = {
   0,0,0,0,0,0,
   0,1,1,1,0,0,
   0,1,0,0,1,0,
@@ -244,7 +244,7 @@ uint8 bnD[] = {
   0,1,1,1,0,0,
   0,0,0,0,0,0
   };
-uint8 bnE[] = {
+uint8_t bnE[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -253,7 +253,7 @@ uint8 bnE[] = {
   0,1,1,1,1,0,
   0,0,0,0,0,0
   };
-uint8 bnF[] = {
+uint8_t bnF[] = {
   0,0,0,0,0,0,
   0,1,1,1,1,0,
   0,1,0,0,0,0,
@@ -322,16 +322,16 @@ void DeactivateGUI(void)  { show_gui = false; }
 //
 // Draw the small icons...
 //
-void DrawSmallIcons(uint16 icon_not_to_draw)
+void DrawSmallIcons(uint16_t icon_not_to_draw)
 {
-  uint8 * iconmem;
-  uint8 xl, yl;
-  uint8 * sIcons[12] = { inoguis, icoinus, ipl1sts, ipl2sts, ii30hzs, ii60hzs,
+  uint8_t * iconmem;
+  uint8_t xl, yl;
+  uint8_t * sIcons[12] = { inoguis, icoinus, ipl1sts, ipl2sts, ii30hzs, ii60hzs,
                         idipsws, ichecks, ikeycns, isnapss, iresets, ibyebys };
-  uint8 xlens[12] = { 31, 18, 32, 35, 37, 37, 29, 23, 28, 32, 19, 19 };
-  uint8 ylens[12] = { 31, 18, 19, 19, 21, 21, 23, 20, 16, 17, 20, 23 };
-  uint8 xpos[11] = { 33, 48, 63, 78, 104, 0, 184, 210, 225, 240, 255 };
-  uint8 iconidx[11] = { 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 6 };
+  uint8_t xlens[12] = { 31, 18, 32, 35, 37, 37, 29, 23, 28, 32, 19, 19 };
+  uint8_t ylens[12] = { 31, 18, 19, 19, 21, 21, 23, 20, 16, 17, 20, 23 };
+  uint8_t xpos[11] = { 33, 48, 63, 78, 104, 0, 184, 210, 225, 240, 255 };
+  uint8_t iconidx[11] = { 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 6 };
 
   if (game_refresh)  iconidx[9] = 5;       // 60 Hz...
 
@@ -339,44 +339,44 @@ void DrawSmallIcons(uint16 icon_not_to_draw)
 
   for(int i=0; i<5; i++)
   {
-    uint16 idx = i + icon_not_to_draw;          // Get correct start pos.
+    uint16_t idx = i + icon_not_to_draw;          // Get correct start pos.
     if (idx > 10)  idx -= 11;
 
     iconmem = sIcons[iconidx[idx]];
     xl = xlens[iconidx[idx]];  yl = ylens[iconidx[idx]];
 
-    uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
+    uint32_t scadr = hScrollOffset + voffsets[vScrollOffset];
     scadr += 320*((224-yl)/2);                // Center vertically
     scadr += xpos[i] - (xl/2);                // Center around horiz. pos.
-    uint16 bmpptr = 0;
+    uint16_t bmpptr = 0;
 
     for(int yy=0; yy<yl; yy++)
     {
       for(int xx=0; xx<xl; xx++)
       {
-        uint8 b = iconmem[bmpptr++];
+        uint8_t b = iconmem[bmpptr++];
         if (b)  my_scr[scadr+xx+yy*320] = b;
       }
     }
   }
   for(int i=10; i>5; i--)
   {
-    uint16 idx = i + icon_not_to_draw;          // Get correct start pos.
+    uint16_t idx = i + icon_not_to_draw;          // Get correct start pos.
     if (idx > 10)  idx -= 11;
 
     iconmem = sIcons[iconidx[idx]];
     xl = xlens[iconidx[idx]];  yl = ylens[iconidx[idx]];
 
-    uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
+    uint32_t scadr = hScrollOffset + voffsets[vScrollOffset];
     scadr += 320*((224-yl)/2);                // Center vertically
     scadr += xpos[i] - (xl/2);     // Center around horiz. pos.
-    uint16 bmpptr = 0;
+    uint16_t bmpptr = 0;
 
     for(int yy=0; yy<yl; yy++)
     {
       for(int xx=0; xx<xl; xx++)
       {
-        uint8 b = iconmem[bmpptr++];
+        uint8_t b = iconmem[bmpptr++];
         if (b)  my_scr[scadr+xx+yy*320] = b;
       }
     }
@@ -386,16 +386,16 @@ void DrawSmallIcons(uint16 icon_not_to_draw)
 //
 // Draw the large (selected) icon
 //
-void DrawLargeIcon(uint16 icon)
+void DrawLargeIcon(uint16_t icon)
 {
-  uint8 * iconmem;
-  uint8 xl, yl;
-  uint8 * lIcons[11] = { inoguib, icoinub, ipl1stb, ipl2stb, ii30hzb, ii60hzb,
+  uint8_t * iconmem;
+  uint8_t xl, yl;
+  uint8_t * lIcons[11] = { inoguib, icoinub, ipl1stb, ipl2stb, ii30hzb, ii60hzb,
                         idipswb, ikeycnb, isnapsb, iresetb, ibyebyb };
-  uint8 xlens[11] = { 44, 45, 50, 52, 59, 59, 42, 45, 48, 58, 42 };
-  uint8 ylens[11] = { 44, 40, 33, 29, 52, 52, 34, 45, 37, 40, 50 };
+  uint8_t xlens[11] = { 44, 45, 50, 52, 59, 59, 42, 45, 48, 58, 42 };
+  uint8_t ylens[11] = { 44, 40, 33, 29, 52, 52, 34, 45, 37, 40, 50 };
 
-  uint8 gsubs1[24] = { 21, 21, 20, 19, 168, 168, 31, 155, 68, 68, 67, 66,
+  uint8_t gsubs1[24] = { 21, 21, 20, 19, 168, 168, 31, 155, 68, 68, 67, 66,
                       36, 36, 35, 34, 188, 188, 183, 181, 81, 81, 85, 80 },
        gsubs2[24] = { 20, 20, 19, 19, 31,  31,  155, 155, 67, 67, 66, 66,
                       35, 35, 34, 34, 183, 183, 181, 181, 85, 85, 80, 80 },
@@ -424,16 +424,16 @@ void DrawLargeIcon(uint16 icon)
     xl = xlens[6];  yl = ylens[6];
   }
 
-  uint32 scadr = hScrollOffset + voffsets[vScrollOffset];
+  uint32_t scadr = hScrollOffset + voffsets[vScrollOffset];
   scadr += 320*((224-yl)/2);                // Center vertically
   scadr += (288-xl)/2;                      // Center horizontally
-  uint16 bmpptr = 0;
+  uint16_t bmpptr = 0;
 
   for(int yy=0; yy<yl; yy++)
   {
     for(int xx=0; xx<xl; xx++)
     {
-      uint8 b = iconmem[bmpptr++];
+      uint8_t b = iconmem[bmpptr++];
       if (b)
       {
         if ((icon == PL1START) && (b == 235) && (num_coins) && !blink_on)
@@ -443,7 +443,7 @@ void DrawLargeIcon(uint16 icon)
                                 36,35,34; 188,183,181; 81,85,80 */
         if (icon == NOGUI)
         {
-          uint8 fln = (23 - flash) + 1; // Want to go forward (maybe fix it?)
+          uint8_t fln = (23 - flash) + 1; // Want to go forward (maybe fix it?)
           switch (b)
           {
             case 36:   { b = gsubs1[fln];  break; }
@@ -472,21 +472,21 @@ void DrawLargeIcon(uint16 icon)
 //
 void DrawDipswitch(void)
 {
-  uint8 dseloff[16] = { 0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 11, 12 };
-  uint8 * dtxt[13] = { idstext1, idstext2, idstext3, idstext4, idstext5,
+  uint8_t dseloff[16] = { 0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 11, 12 };
+  uint8_t * dtxt[13] = { idstext1, idstext2, idstext3, idstext4, idstext5,
                       idstext2, idstext6, idstext7, idstext8, idstext9,
                       idstext10, idstext11, idstext12 };
 
-  uint8 dtx[13] = { 48, 80, 96, 82, 60, 80, 76, 57, 33, 50, 62, 65, 63 },
+  uint8_t dtx[13] = { 48, 80, 96, 82, 60, 80, 76, 57, 33, 50, 62, 65, 63 },
        dty[13] = { 7, 9, 7, 9, 7, 9, 7, 7, 7, 9, 7, 9, 7 };
-  uint32 dtxtoff[13] = { 4*320+24, 14*320-78, 25*320+24, 32*320-80,
+  uint32_t dtxtoff[13] = { 4*320+24, 14*320-78, 25*320+24, 32*320-80,
                         39*320+24, 49*320-78,
                         4*320+24, 11*320-55, 18*320+24, 25*320-48,
                         32*320+24, 42*320-63, 53*320+24 };
-  uint32 scadr, bmpptr;
+  uint32_t scadr, bmpptr;
   //dsx = //26x65
 
-  uint32 dbase = hScrollOffset + voffsets[vScrollOffset];
+  uint32_t dbase = hScrollOffset + voffsets[vScrollOffset];
   dbase += (288-26)/2;                 // Center horizontally
   dbase += 320*((224-((65*2)+8))/2);   // Center vertically
 
@@ -496,7 +496,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<26; xx++)
     {
-      uint8 b = idswitch[bmpptr++];
+      uint8_t b = idswitch[bmpptr++];
       if (b)  my_scr[scadr+xx+yy*320] = b;
     }
   }
@@ -506,7 +506,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<26; xx++)
     {
-      uint8 b = idswitch[bmpptr++];
+      uint8_t b = idswitch[bmpptr++];
       if (b)  my_scr[scadr+xx+yy*320] = b;
     }
   }
@@ -525,7 +525,7 @@ void DrawDipswitch(void)
       scadr += 315; // Adjust position...
     }
   }
-  uint8 dselected_text = dseloff[dswitch];
+  uint8_t dselected_text = dseloff[dswitch];
   for(int i=0; i<13; i++)
   {
     if (dselected_text != i)
@@ -537,7 +537,7 @@ void DrawDipswitch(void)
       {
         for(int xx=0; xx<dtx[i]; xx++)
         {
-          uint8 b = dtxt[i][bmpptr++];
+          uint8_t b = dtxt[i][bmpptr++];
           if (b)  my_scr[scadr] = b;
           scadr++;
         }
@@ -552,7 +552,7 @@ void DrawDipswitch(void)
   {
     for(int xx=0; xx<dtx[dselected_text]; xx++)
     {
-      uint8 b = dtxt[dselected_text][bmpptr++];
+      uint8_t b = dtxt[dselected_text][bmpptr++];
       if (b)  my_scr[scadr] = 125;
       scadr++;
     }
@@ -680,9 +680,9 @@ void SelectDown(void)
 //
 // User selected something! Handle it!
 //
-uint8 UserSelectedSomething(void)
+uint8_t UserSelectedSomething(void)
 {
-  //extern uint8 * gram1;
+  //extern uint8_t * gram1;
 
   if (!gui_debounce)
   {
@@ -774,12 +774,12 @@ uint8 UserSelectedSomething(void)
 //
 void ShowNumbers(int number)
 {
-  uint8 * bnarray[16] = { bn0, bn1, bn2, bn3, bn4, bn5, bn6, bn7, bn8, bn9,
+  uint8_t * bnarray[16] = { bn0, bn1, bn2, bn3, bn4, bn5, bn6, bn7, bn8, bn9,
     bnA, bnB, bnC, bnD, bnE, bnF };
-  uint32 scadr = hScrollOffset + voffsets[vScrollOffset] + 642 + 2560;
-  uint16 bmpptr = 0;
+  uint32_t scadr = hScrollOffset + voffsets[vScrollOffset] + 642 + 2560;
+  uint16_t bmpptr = 0;
 
-  uint8 first_dig = number>>4, second_dig = number&0x0F;
+  uint8_t first_dig = number>>4, second_dig = number&0x0F;
   for(int y=0; y<7; y++)
   {
     for(int x=0; x<6; x++)
@@ -802,7 +802,7 @@ void ShowNumbers(int number)
 //
 // Spawn a message
 //
-void SpawnMsg(uint8 msg)
+void SpawnMsg(uint8_t msg)
 {
        text_life = 60;                                                                         // 1 second...
        show_text = true;                                                                       // Show the damn thing...
@@ -823,8 +823,8 @@ void DrawText(void)
        text_life--;                                                                            // Your life force is running out...
 
        // Draw the message here...
-       uint32 scadr = hScrollOffset + voffsets[vScrollOffset] + 642;
-       uint16 bmpptr = 0;
+       uint32_t scadr = hScrollOffset + voffsets[vScrollOffset] + 642;
+       uint16_t bmpptr = 0;
 
        for(int y=0; y<7; y++)
        {
@@ -863,12 +863,12 @@ void DrawText(void)
 //
 void SpawnSound(int type, int snd, int channel/* = 0*/)
 {
-       extern uint32 psg_lens[16];
-       extern uint8 * psg_adrs[16];
-       extern uint32 voc_lens[32];
-       extern uint8 * voc_adrs[32];
-       extern uint32 fm_lens[14];
-       extern uint8 * fm_adrs[14];
+       extern uint32_t psg_lens[16];
+       extern uint8_t * psg_adrs[16];
+       extern uint32_t voc_lens[32];
+       extern uint8_t * voc_adrs[32];
+       extern uint32_t fm_lens[14];
+       extern uint8_t * fm_adrs[14];
 
        snd_num = snd;
        SpawnMsg(MSHOWNUMS);
@@ -880,7 +880,7 @@ void SpawnSound(int type, int snd, int channel/* = 0*/)
                if (channel == 0)
                {
                        // 00 nn ss (nn # of repeats of sample ss)
-                       uint32 st = 0;
+                       uint32_t st = 0;
 
                        if (snd & 0x40)
                        {
@@ -896,7 +896,7 @@ void SpawnSound(int type, int snd, int channel/* = 0*/)
                }
                else
                {
-                       uint32 st = 0;
+                       uint32_t st = 0;
 
                        if (snd & 0x40)
                        {
@@ -958,9 +958,9 @@ void SpawnSound(int type, int snd, int channel/* = 0*/)
 //
 void SoundFunc(void * userdata, Uint8 * buff, int num)
 {
-       uint16 cnt = 0, sample;                                                         // 0-22 different sounds...
-       uint8 start_samp1, end_samp1, start_samp2, end_samp2;
-       uint8 samp1 = 128, samp2 = 128, samp3 = 128,
+       uint16_t cnt = 0, sample;                                                               // 0-22 different sounds...
+       uint8_t start_samp1, end_samp1, start_samp2, end_samp2;
+       uint8_t samp1 = 128, samp2 = 128, samp3 = 128,
                samp4 = 128, samp5 = 128, samp6 = 128;                  // Zero samples...
 
        memset(buff, 128, num);                                                         // Kill sound...
index 7193b7372bae9356e438cbf613f55fd52ced733d..663dd527dfe9c3429b940ce497c1bbcb17101010 100644 (file)
--- a/src/gui.h
+++ b/src/gui.h
@@ -1,14 +1,14 @@
 //
 // GUI.H
 //
-// by James L. Hammmons
-// (C) 1998, 2009 Underground Software
+// by James Hammmons
+// (C) 1998, 2014 Underground Software
 //
 
 #ifndef __GUI_H__
 #define __GUI_H__
 
-#include "types.h"
+#include <stdint.h>
 #include "SDL.h"
 
 // Message macros
@@ -44,7 +44,7 @@
 #define RESET     9
 #define EXIT      10
 
-void SpawnMsg(uint8);
+void SpawnMsg(uint8_t);
 void DrawText(void);
 void InitGUI(void);
 bool ShowGUI(void);
@@ -53,7 +53,7 @@ void SelectLeft(void);
 void SelectRight(void);
 void SelectUp(void);
 void SelectDown(void);
-uint8 UserSelectedSomething(void);
+uint8_t UserSelectedSomething(void);
 void SetRefreshRate(bool);
 void ActivateGUI(void);
 void DeactivateGUI(void);
index adf8a18a32cb137752e436e5205fbe0533c2a5f0..623a6b97e187a27c226890ad1d0734b050c0ff40 100644 (file)
@@ -1,61 +1,65 @@
 //
 // Log handler
 //
-// by James L. Hammons
-// (c) 2004, 2009 Underground Software
+// by James Hammons
+// (C) 2004, 2014 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // WHO  WHEN        WHAT
-// ---  ----------  ------------------------------------------------------------
+// ---  ----------  -----------------------------------------------------------
 // JLH  07/23/2009  Added changelog ;-)
 //
 
 #include "types.h"
 #include "log.h"
 
-#define MAX_LOG_SIZE           10000000                                // Maximum size of log file (10 MB)
+#define MAX_LOG_SIZE           10000000                // Maximum size of log file (10 MB)
 
-static FILE * log_stream = NULL;
+static FILE * logStream = NULL;
 static uint32 logSize = 0;
 
+
 bool InitLog(const char * path)
 {
-       log_stream = fopen(path, "wrt");
+       logStream = fopen(path, "wrt");
 
-       if (log_stream == NULL)
+       if (logStream == NULL)
                return false;
 
        return true;
 }
 
+
 void LogDone(void)
 {
-       if (log_stream)
-               fclose(log_stream);
+       if (logStream)
+               fclose(logStream);
 }
 
+
 //
 // This logger is used mainly to ensure that text gets written to the log file
 // even if the program crashes. The performance hit is acceptable in this case!
 //
 void WriteLog(const char * text, ...)
 {
-       if (!log_stream)
+       if (!logStream)
                return;
 
        va_list arg;
 
        va_start(arg, text);
-       logSize += vfprintf(log_stream, text, arg);
+       logSize += vfprintf(logStream, text, arg);
 
        if (logSize > MAX_LOG_SIZE)
        {
-               fflush(log_stream);
-               fclose(log_stream);
+               fflush(logStream);
+               fclose(logStream);
                exit(1);
-       }//*/
+       }
 
        va_end(arg);
-       fflush(log_stream);                                     // Make sure that text is written!
+       fflush(logStream);                                      // Make sure that text is written!
 }
+
index 57c949214e1e7daf930db979a6781f8217c77b4d..e702566c0d163e4c0ae9d99e43ec7df0cb001ae9 100644 (file)
@@ -1,8 +1,8 @@
 ;
 ; Thunder GUI resources
 ;
-; by Jimmy Hamm
-; (C) 1998 Underground Software
+; by James Hammons
+; (C) 1998, 2014 Underground Software
 ;
 [SECTION .data]
 [GLOBAL sunknown]
index 8df329136dd06b6b6d3dbb81a4a190c5ac0302b3..9f862a2844068cd1103a0b54d31ce04bb1886335 100644 (file)
@@ -1,63 +1,65 @@
 //
 // Resource header file
 //
-// by James L. Hammons
-// (C) 1998, 2009 Underground Software
+// by James Hammons
+// (C) 1998, 2014 Underground Software
 //
 
 #ifndef __RESOURCE_H__
 #define __RESOURCE_H__
 
+#include <stdint.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-extern uint8 * sunknown;
-extern uint8 * scya;
-extern uint8 * scamera;
-extern uint32 sunknownlen;
-extern uint32 scyalen;
-extern uint32 scameralen;
+extern uint8_t * sunknown;
+extern uint8_t * scya;
+extern uint8_t * scamera;
+extern uint32_t sunknownlen;
+extern uint32_t scyalen;
+extern uint32_t scameralen;
 
-extern uint8 * inoguib;
-extern uint8 * idipswb;
-extern uint8 * ipl1stb;
-extern uint8 * ipl2stb;
-extern uint8 * ii30hzb;
-extern uint8 * ii60hzb;
-extern uint8 * icoinub;
-extern uint8 * isnapsb;
-extern uint8 * iresetb;
-extern uint8 * ibyebyb;
-extern uint8 * ikeycnb;
+extern uint8_t * inoguib;
+extern uint8_t * idipswb;
+extern uint8_t * ipl1stb;
+extern uint8_t * ipl2stb;
+extern uint8_t * ii30hzb;
+extern uint8_t * ii60hzb;
+extern uint8_t * icoinub;
+extern uint8_t * isnapsb;
+extern uint8_t * iresetb;
+extern uint8_t * ibyebyb;
+extern uint8_t * ikeycnb;
 
-extern uint8 * inoguis;
-extern uint8 * idipsws;
-extern uint8 * ipl1sts;
-extern uint8 * ipl2sts;
-extern uint8 * ii30hzs;
-extern uint8 * ii60hzs;
-extern uint8 * icoinus;
-extern uint8 * isnapss;
-extern uint8 * iresets;
-extern uint8 * ibyebys;
-extern uint8 * ikeycns;
-extern uint8 * ichecks;
+extern uint8_t * inoguis;
+extern uint8_t * idipsws;
+extern uint8_t * ipl1sts;
+extern uint8_t * ipl2sts;
+extern uint8_t * ii30hzs;
+extern uint8_t * ii60hzs;
+extern uint8_t * icoinus;
+extern uint8_t * isnapss;
+extern uint8_t * iresets;
+extern uint8_t * ibyebys;
+extern uint8_t * ikeycns;
+extern uint8_t * ichecks;
 
-extern uint8 * idswitch;
-extern uint8 * idsbutton;
-extern uint8 * idstext1;
-extern uint8 * idstext2;
-extern uint8 * idstext3;
-extern uint8 * idstext4;
-extern uint8 * idstext5;
-extern uint8 * idstext6;
-extern uint8 * idstext7;
-extern uint8 * idstext8;
-extern uint8 * idstext9;
-extern uint8 * idstext10;
-extern uint8 * idstext11;
-extern uint8 * idstext12;
+extern uint8_t * idswitch;
+extern uint8_t * idsbutton;
+extern uint8_t * idstext1;
+extern uint8_t * idstext2;
+extern uint8_t * idstext3;
+extern uint8_t * idstext4;
+extern uint8_t * idstext5;
+extern uint8_t * idstext6;
+extern uint8_t * idstext7;
+extern uint8_t * idstext8;
+extern uint8_t * idstext9;
+extern uint8_t * idstext10;
+extern uint8_t * idstext11;
+extern uint8_t * idstext12;
 
 #ifdef __cplusplus
 }
index fd35a1376a4425dde8aeaf19d82ad9f87e3f0702..5f92f223afeffc00cabb3d0023c932e4b8032e6e 100644 (file)
@@ -5,14 +5,14 @@
 // Now with VESA2 support!
 // Also, support routines for video hardware emulation are included
 //
-// by James L. Hammons
+// by James Hammons
 //
 // (C) 2003 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // Who  When        What
-// ---  ----------  ------------------------------------------------------------
+// ---  ----------  -----------------------------------------------------------
 // JLH  03/12/2003  Ported this steaming pile of crap from VESA to SDL
 //
 
 
 // Private function prototypes
 
-void DrawSprites(uint8 priority);
+void DrawSprites(uint8_t priority);
 int FindPCXName(void);
-static void DrawChar(uint8 * chr, uint8 * ram, uint8 sx, uint8 sy, uint16 scp, uint32 baseAddr, uint32 scrollOffset, bool transparent = true);
-void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8 vert_bl);
+static void DrawChar(uint8_t * chr, uint8_t * ram, uint8_t sx, uint8_t sy, uint16_t scp, uint32_t baseAddr, uint32_t scrollOffset, bool transparent = true);
+void Sprite(uint32_t sprnum, uint16_t x, uint16_t y, uint8_t flip, uint8_t horiz_bl, uint8_t vert_bl);
 
 // Private global variables
 
-uint8 my_scr[0x14000];                                                                 // Screen buffer...
-uint8 palette[768];                                                                            // Screen palette
-uint8 ccolor[256][8];                                                                  // Character colors
-uint8 scolor[128][16];                                                                 // Sprite colors
-bool charbase;                                                                                 // Character base pointer...
-uint8 hScrollOffset;                                                                   // Horizontal scroll offset
-uint8 vScrollOffset;                                                                   // Vertical scroll offset
-uint8 spr_color_index;                                                                 // Sprite color index
-uint32 hoffsets[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };               // Scroll offsets...
-uint32 voffsets[8] = { 0, 320, 640, 960, 1280, 1600, 1920, 2240 };
+uint8_t my_scr[0x14000];                       // Screen buffer...
+uint8_t palette[768];                          // Screen palette
+uint8_t ccolor[256][8];                                // Character colors
+uint8_t scolor[128][16];                       // Sprite colors
+bool charbase;                                         // Character base pointer...
+uint8_t hScrollOffset;                         // Horizontal scroll offset
+uint8_t vScrollOffset;                         // Vertical scroll offset
+uint8_t spr_color_index;                       // Sprite color index
+uint32_t hoffsets[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };// Scroll offsets...
+uint32_t voffsets[8] = { 0, 320, 640, 960, 1280, 1600, 1920, 2240 };
+
+extern bool show_text;                         // Whether or not to show text
+extern bool show_scr;                          // Whether or not to show screen
 
-extern bool show_text;                                                                 // Whether or not to show text
-extern bool show_scr;                                                                  // Whether or not to show screen
 
 //
 // Render the NAMCO screen
 //
-void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
+void BlitChar(SDL_Surface * scr, uint8_t * chr, uint8_t * ram)
 {
        // Screen structure:
        // Screen is 288 x 224 pixels, with character and independent sprites. Tiles are 36 x 28.
@@ -59,16 +60,16 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
 
        if (show_scr)
        {
-               uint32 sc_base = ((ram[0x9000] << 8) | ram[0x9001]) + 4;        // Adjust hscroll val
+               uint32_t sc_base = ((ram[0x9000] << 8) | ram[0x9001]) + 4;      // Adjust hscroll val
                hScrollOffset = sc_base & 0x07;                                 // Horiz. fine scroll offset
                sc_base = (sc_base & 0xFFF8) >> 2;                              // Skip odds..
-               uint8 vsc_base = ((ram[0x9002] + 1) & 0xF8) >> 3;// Vertical scroll addr adjust
+               uint8_t vsc_base = ((ram[0x9002] + 1) & 0xF8) >> 3;// Vertical scroll addr adjust
                vScrollOffset = ((ram[0x9002] + 1) & 0x07);             // Vertical fine scroll amount
 
-               uint32 scp0 = 0x0180 | ((sc_base + 0x04) & 0x7F);       /*0x0188;*/
-               uint32 scp1 = 0x1180 | ((sc_base + 0x04) & 0x7F);       /*0x1188;*/
-               uint32 scp2 = 0x2180 | ((sc_base + 0x04) & 0x7F);       /*0x2188;*/
-               uint32 scp3 = 0x3208;
+               uint32_t scp0 = 0x0180 | ((sc_base + 0x04) & 0x7F);     /*0x0188;*/
+               uint32_t scp1 = 0x1180 | ((sc_base + 0x04) & 0x7F);     /*0x1188;*/
+               uint32_t scp2 = 0x2180 | ((sc_base + 0x04) & 0x7F);     /*0x2188;*/
+               uint32_t scp3 = 0x3208;
 
                scp0 += vsc_base * 0x80;
                scp0 &= 0x0FFF;                                                                 // Set vertical scroll addr
@@ -78,9 +79,9 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
                scp2 = 0x2000 | (scp2 & 0x0FFF);                                // Set vertical scroll addr
 
                // Layer 0 (bottom layer)
-               for(uint8 sy=0; sy<29; sy++)
+               for(uint8_t sy=0; sy<29; sy++)
                {
-                       for(uint8 sx=0; sx<37; sx++)
+                       for(uint8_t sx=0; sx<37; sx++)
                                DrawChar(chr, ram, sx, sy, scp0, (charbase ? 0x20000 : 0x00000), 0, false);
 
                        scp0 += 0x80;
@@ -90,9 +91,9 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
                DrawSprites(0x40);                                                              // Draw sprites at lowest layer...
 
                // Layer 1
-               for(uint8 sy=0; sy<29; sy++)
+               for(uint8_t sy=0; sy<29; sy++)
                {
-                       for(uint8 sx=0; sx<37; sx++)
+                       for(uint8_t sx=0; sx<37; sx++)
                                DrawChar(chr, ram, sx, sy, scp1, (charbase ? 0x30000 : 0x10000), 0);
 
                        scp1 += 0x80;
@@ -102,9 +103,9 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
                DrawSprites(0x80);                                                              // Draw sprites under layer #2...
 
                // Layer 2
-               for(uint8 sy=0; sy<29; sy++)
+               for(uint8_t sy=0; sy<29; sy++)
                {
-                       for(uint8 sx=0; sx<37; sx++)
+                       for(uint8_t sx=0; sx<37; sx++)
                                DrawChar(chr, ram, sx, sy, scp2, 0x40000, 0);
 
                        scp2 += 0x80;
@@ -114,9 +115,9 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
                DrawSprites(0xC0);                                                              // Draw highest priority sprites...
 
                // Layer 3 (top layer)
-               for(uint8 sy=0; sy<28; sy++)
+               for(uint8_t sy=0; sy<28; sy++)
                {
-                       for(uint8 sx=0; sx<36; sx++)
+                       for(uint8_t sx=0; sx<36; sx++)
                                DrawChar(chr, ram, sx, sy, scp3, 0x50000, hScrollOffset + voffsets[vScrollOffset]);
 
                        scp3 += 0x80;
@@ -138,10 +139,10 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
        // Rolling Thunder screen size is 288 x 224. Virtual is this, real may not be...
 
        // Doubled pixel blit (should be faster now!)
-       uint8 * pMem = (uint8 *)scr->pixels;
-       uint32 src = (uint32)(hoffsets[hScrollOffset] + voffsets[vScrollOffset]),
+       uint8_t * pMem = (uint8_t *)scr->pixels;
+       uint32_t src = (uint32_t)(hoffsets[hScrollOffset] + voffsets[vScrollOffset]),
                dst1 = 0, dst2 = scr->pitch;
-       uint32 srcAdd = 320 - VIRTUAL_SCREEN_WIDTH, dstAdd = (scr->pitch * 2) - (VIRTUAL_SCREEN_WIDTH * 2);
+       uint32_t srcAdd = 320 - VIRTUAL_SCREEN_WIDTH, dstAdd = (scr->pitch * 2) - (VIRTUAL_SCREEN_WIDTH * 2);
 
        for(int i=0; i<VIRTUAL_SCREEN_HEIGHT; i++)
        {
@@ -161,18 +162,19 @@ void BlitChar(SDL_Surface * scr, uint8 * chr, uint8 * ram)
        SDL_UpdateRect(scr, 0, 0, 0, 0);
 }
 
+
 //
 // Draw character on screen
 //
-static inline void DrawChar(uint8 * chr, uint8 * ram, uint8 sx, uint8 sy, uint16 scp, uint32 baseAddr, uint32 scrollOffset, bool transparent/*= true*/)
+static inline void DrawChar(uint8_t * chr, uint8_t * ram, uint8_t sx, uint8_t sy, uint16_t scp, uint32_t baseAddr, uint32_t scrollOffset, bool transparent/*= true*/)
 {
-       uint8 scp_lo = (scp + (sx << 1)) & 0x7F;// Let LO byte wrap only...
-       uint16 sp2 = (scp & 0xFF80) | scp_lo;
-       uint8 tile  = ram[sp2++];
-       uint8 index = ram[sp2] & 0x03;
-       uint8 color = ram[sp2];
-       uint32 chind = baseAddr + (((index << 8) + tile) * 64);
-       uint32 sc_addr = (sx * 8) + (sy * 2560) + scrollOffset; // Start addr in my_scr[]
+       uint8_t scp_lo = (scp + (sx << 1)) & 0x7F;// Let LO byte wrap only...
+       uint16_t sp2 = (scp & 0xFF80) | scp_lo;
+       uint8_t tile  = ram[sp2++];
+       uint8_t index = ram[sp2] & 0x03;
+       uint8_t color = ram[sp2];
+       uint32_t chind = baseAddr + (((index << 8) + tile) * 64);
+       uint32_t sc_addr = (sx * 8) + (sy * 2560) + scrollOffset;       // Start addr in my_scr[]
 
        for(int y=0; y<8; y++)
        {
@@ -194,10 +196,11 @@ static inline void DrawChar(uint8 * chr, uint8 * ram, uint8 sx, uint8 sy, uint16
        }
 }
 
+
 //
 // Draw sprites at priority level (new code)
 //
-void DrawSprites(uint8 priority)
+void DrawSprites(uint8_t priority)
 {
        // Sprite blocks:
        //
@@ -210,21 +213,21 @@ void DrawSprites(uint8 priority)
        // 8       Top two bits are sprite priority, bits 4 & 2 are sprite offset hi bit, vert. expand
        // 9       Sprite Y position (192 - value)
 
-       extern uint8 gram1[];                                                   // Game RAM space
+       extern uint8_t gram1[];                                                 // Game RAM space
 
-       for(uint16 i=0x5800; i<0x6000; i+=0x10)
+       for(uint16_t i=0x5800; i<0x6000; i+=0x10)
        {
                if ((gram1[i + 8] & 0xC0) == priority)          // Check for correct layer...
                {
                        spr_color_index = gram1[i + 6] >> 1;    // Set color...
-                       uint16 x = ((gram1[i + 6] & 0x01) << 8) | gram1[i + 7];
+                       uint16_t x = ((gram1[i + 6] & 0x01) << 8) | gram1[i + 7];
 
                        if (x > 512 - 32)
                                x -= 512;                                                       // Handle neg x values
 
-                       uint16 y = 192 - gram1[i + 9];
-                       uint8 flip = gram1[i + 4] & 0x20;               // Horizontal flip
-                       uint32 spr_num = ((gram1[i + 4] & 0x07) << 9) | ((gram1[i + 5] & 0x7F) << 2)
+                       uint16_t y = 192 - gram1[i + 9];
+                       uint8_t flip = gram1[i + 4] & 0x20;             // Horizontal flip
+                       uint32_t spr_num = ((gram1[i + 4] & 0x07) << 9) | ((gram1[i + 5] & 0x7F) << 2)
                                | ((gram1[i + 4] & 0x10) >> 4) | ((gram1[i + 8] & 0x10) >> 3);
 
                        // Draw sprite...
@@ -233,13 +236,14 @@ void DrawSprites(uint8 priority)
        }
 }
 
+
 //
 // Sprite handler
 //
-void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8 vert_bl)
+void Sprite(uint32_t sprnum, uint16_t x, uint16_t y, uint8_t flip, uint8_t horiz_bl, uint8_t vert_bl)
 {
-       extern uint8 spr_rom[];
-       uint32 sc_addr;
+       extern uint8_t spr_rom[];
+       uint32_t sc_addr;
 
        x += hScrollOffset;                                                     // Adjust x-coord
        y += vScrollOffset;                                                     // Adjust y-coord
@@ -251,12 +255,12 @@ void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8
 
        if (!flip)
        {
-               for(uint16 sy=0; sy<16; sy++)
+               for(uint16_t sy=0; sy<16; sy++)
                {
-                       for(uint16 sx=0; sx<16; sx+=2)
+                       for(uint16_t sx=0; sx<16; sx+=2)
                        {
-                               uint8 b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
-                               uint16 spy = y + sy, spx = x + sx;      // Need to optimize this clipping!
+                               uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                               uint16_t spy = y + sy, spx = x + sx;    // Need to optimize this clipping!
 
                                if (spy > 223 || spx > 299)
                                        sc_addr = 0x13FFE;
@@ -275,12 +279,12 @@ void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8
 
                if (horiz_bl)
                {
-                       for(uint16 sy=0; sy<16; sy++)
+                       for(uint16_t sy=0; sy<16; sy++)
                        {
-                               for(uint16 sx=16; sx<32; sx+=2)
+                               for(uint16_t sx=16; sx<32; sx+=2)
                                {
-                                       uint8 b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
-                                       uint16 spy = y + sy, spx = x + sx;
+                                       uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                       uint16_t spy = y + sy, spx = x + sx;
 
                                        if (spy > 223 || spx > 299)
                                                sc_addr = 0x13FFE;
@@ -304,12 +308,12 @@ void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8
                {
                        y += 16;                                                                        // Do next row...
 
-                       for(uint16 sy=0; sy<16; sy++)
+                       for(uint16_t sy=0; sy<16; sy++)
                        {
-                               for(uint16 sx=0; sx<16; sx+=2)
+                               for(uint16_t sx=0; sx<16; sx+=2)
                                {
-                                       uint8 b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
-                                       uint16 spy = y + sy, spx = x + sx;
+                                       uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                       uint16_t spy = y + sy, spx = x + sx;
 
                                        if (spy > 223 || spx > 299)
                                                sc_addr = 0x13FFE;
@@ -328,12 +332,12 @@ void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8
 
                        if (horiz_bl)
                        {
-                               for(uint16 sy=0; sy<16; sy++)
+                               for(uint16_t sy=0; sy<16; sy++)
                                {
-                                       for(uint16 sx=16; sx<32; sx+=2)
+                                       for(uint16_t sx=16; sx<32; sx+=2)
                                        {
-                                               uint8 b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
-                                               uint16 spy = y + sy, spx = x + sx;
+                                               uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                               uint16_t spy = y + sy, spx = x + sx;
 
                                                if (spy > 223 || spx > 299)
                                                        sc_addr = 0x13FFE;
@@ -354,88 +358,109 @@ void Sprite(uint32 sprnum, uint16 x, uint16 y, uint8 flip, uint8 horiz_bl, uint8
        }
        else    // Flip
        {
-    if (horiz_bl)
-    {
-      for(uint16 sy=0; sy<16; sy++)
-      {
-        for(uint16 sx=30; sx!=14; sx-=2)
-        {
-          uint8 b1 = spr_rom[sprnum]>>4, b2 = spr_rom[sprnum++]&0x0F;
-        uint16 spy = y+sy, spx = x+sx;
-        if ((spy>223) || (spx>299))
-          sc_addr = 0x13FFE;
-        else
-          sc_addr = spx+spy*320;
-          if (b2 != 15)
-            my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
-          sc_addr++;
-          if (b1 != 15)
-            my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
-        }
-      }
-    }
-    for(uint16 sy=0; sy<16; sy++)
-    {
-      for(uint16 sx=14; sx!=0xFFFE; sx-=2)
-      {
-        uint8 b1 = spr_rom[sprnum]>>4, b2 = spr_rom[sprnum++]&0x0F;
-        uint16 spy = y+sy, spx = x+sx;
-        if ((spy>223) || (spx>299))
-          sc_addr = 0x13FFE;
-        else
-          sc_addr = spx+spy*320;
-        if (b2 != 15)
-          my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
-        sc_addr++;
-        if (b1 != 15)
-          my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
-      }
-    }
-    if (!horiz_bl)  sprnum += 128;  // If single, skip sprite...
-    if (vert_bl)
-    {
-      y += 16;      // Adjust Y coord...
-      if (horiz_bl)
-      {
-        for(uint16 sy=0; sy<16; sy++)
-        {
-          for(uint16 sx=30; sx!=14; sx-=2)
-          {
-            uint8 b1 = spr_rom[sprnum]>>4, b2 = spr_rom[sprnum++]&0x0F;
-        uint16 spy = y+sy, spx = x+sx;
-        if ((spy>223) || (spx>299))
-          sc_addr = 0x13FFE;
-        else
-          sc_addr = spx+spy*320;
-            if (b2 != 15)
-              my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
-            sc_addr++;
-            if (b1 != 15)
-               my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
-          }
-        }
-      }
-      for(uint16 sy=0; sy<16; sy++)
-      {
-        for(uint16 sx=14; sx!=0xFFFE; sx-=2)
-        {
-          uint8 b1 = spr_rom[sprnum]>>4, b2 = spr_rom[sprnum++]&0x0F;
-        uint16 spy = y+sy, spx = x+sx;
-        if ((spy>223) || (spx>299))
-          sc_addr = 0x13FFE;
-        else
-          sc_addr = spx+spy*320;
-          if (b2 != 15)
-            my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
-          sc_addr++;
-          if (b1 != 15)
-            my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
-        }
-      }
-    }
-  }
+               if (horiz_bl)
+               {
+                       for(uint16_t sy=0; sy<16; sy++)
+                       {
+                               for(uint16_t sx=30; sx!=14; sx-=2)
+                               {
+                                       uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                       uint16_t spy = y + sy, spx = x + sx;
+
+                                       if ((spy > 223) || (spx > 299))
+                                               sc_addr = 0x13FFE;
+                                       else
+                                               sc_addr = spx + spy * 320;
+
+                                       if (b2 != 15)
+                                               my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
+
+                                       sc_addr++;
+
+                                       if (b1 != 15)
+                                               my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
+                               }
+                       }
+               }
+
+               for(uint16_t sy=0; sy<16; sy++)
+               {
+                       for(uint16_t sx=14; sx!=0xFFFE; sx-=2)
+                       {
+                               uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                               uint16_t spy = y + sy, spx = x + sx;
+
+                               if ((spy > 223) || (spx > 299))
+                                       sc_addr = 0x13FFE;
+                               else
+                                       sc_addr = spx+spy*320;
+
+                               if (b2 != 15)
+                                       my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
+
+                               sc_addr++;
+
+                               if (b1 != 15)
+                                       my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
+                       }
+               }
+
+               if (!horiz_bl)  sprnum += 128;  // If single, skip sprite...
+
+               if (vert_bl)
+               {
+                       y += 16;      // Adjust Y coord...
+
+                       if (horiz_bl)
+                       {
+                               for(uint16_t sy=0; sy<16; sy++)
+                               {
+                                       for(uint16_t sx=30; sx!=14; sx-=2)
+                                       {
+                                               uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                               uint16_t spy = y + sy, spx = x + sx;
+
+                                               if ((spy > 223) || (spx > 299))
+                                                       sc_addr = 0x13FFE;
+                                               else
+                                                       sc_addr = spx + spy * 320;
+
+                                               if (b2 != 15)
+                                                       my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
+
+                                               sc_addr++;
+
+                                               if (b1 != 15)
+                                                       my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
+                                       }
+                               }
+                       }
+                       for(uint16_t sy=0; sy<16; sy++)
+                       {
+                               for(uint16_t sx=14; sx!=0xFFFE; sx-=2)
+                               {
+                                       uint8_t b1 = spr_rom[sprnum] >> 4, b2 = spr_rom[sprnum++] & 0x0F;
+                                       uint16_t spy = y + sy, spx = x + sx;
+
+                                       if ((spy > 223) || (spx > 299))
+                                               sc_addr = 0x13FFE;
+                                       else
+                                               sc_addr = spx + spy * 320;
+
+                                       if (b2 != 15)
+                                               my_scr[sc_addr] = scolor[spr_color_index][b2]; // Store it
+
+                                       sc_addr++;
+
+                                       if (b1 != 15)
+                                               my_scr[sc_addr] = scolor[spr_color_index][b1]; // Store it
+                               }
+                       }
+               }
+       }
 }
 
+
 int FindPCXName()
 {
        static int pcxNum = -1;                                                         // This needs to go elsewhere... (or does it?)
@@ -457,6 +482,7 @@ int FindPCXName()
        return -1;
 }
 
+
 void SnapPCX(SDL_Surface * scr)
 {
        char filename[30];
@@ -466,8 +492,9 @@ void SnapPCX(SDL_Surface * scr)
        int YMax = 223;
        int bytesPerLine = 320;
 
+       // Return if failed...
        if ((i = FindPCXName()) < 0)
-               return;               // failed...
+               return;
 
        sprintf(filename, "thnd%04i.pcx", i);
 
@@ -480,46 +507,68 @@ void SnapPCX(SDL_Surface * scr)
        fputc(0x5, fw); // version 5
        fputc(0x1, fw); // RLE encoding
        fputc(0x8, fw); // bits per pixel
-       fputc(0, fw);  fputc(0, fw);  fputc(0, fw);  fputc(0, fw); // XMin=0,YMin=0
-       fputc(XMax&0xFF, fw);  fputc(XMax>>8, fw);
-       fputc(YMax&0xFF, fw);  fputc(YMax>>8, fw);
-       fputc(0, fw);  fputc(0, fw);  fputc(0, fw);  fputc(0,fw); // unknown DPI
-       for (i=0; i<48; i++)  fputc(0, fw);                 // EGA color palette
+       fputc(0, fw);
+       fputc(0, fw);
+       fputc(0, fw);
+       fputc(0, fw); // XMin=0,YMin=0
+       fputc(XMax & 0xFF, fw);
+       fputc(XMax >> 8, fw);
+       fputc(YMax & 0xFF, fw);
+       fputc(YMax >> 8, fw);
+       fputc(0, fw);
+       fputc(0, fw);
+       fputc(0, fw);
+       fputc(0,fw); // unknown DPI
+
+       for (i=0; i<48; i++)
+               fputc(0, fw);                 // EGA color palette
+
        fputc(0, fw); // reserved
        fputc(1, fw); // number of bit planes
-       fputc(bytesPerLine&0xFF, fw);  fputc(bytesPerLine>>8, fw);
-       fputc(1, fw);  fputc(0, fw); // palette info - unused
-       fputc((XMax+1)&0xFF, fw);  fputc((XMax+1)>>8, fw);
-       fputc((YMax+1)&0xFF, fw);  fputc((YMax+1)>>8, fw); // screen resolution
-       for (i=0; i<54; i++)  fputc(0, fw); // unused
+       fputc(bytesPerLine & 0xFF, fw);
+       fputc(bytesPerLine >> 8, fw);
+       fputc(1, fw);
+       fputc(0, fw); // palette info - unused
+       fputc((XMax + 1) & 0xFF, fw);
+       fputc((XMax + 1) >> 8, fw);
+       fputc((YMax + 1) & 0xFF, fw);
+       fputc((YMax + 1) >> 8, fw); // screen resolution
+
+       for (i=0; i<54; i++)
+               fputc(0, fw); // unused
 
        // Instead of using the screen, we should use our internal buffer...
        SDL_LockSurface(scr);
 
-       uint32 mem = scr->pitch * 8; // Skip first line... WAS:320*8;
+       uint32_t mem = scr->pitch * 8; // Skip first line... WAS:320*8;
+
        for (line=0; line<=YMax; line++)
        {
                int count;
                int last;
                int xpos;
-               uint8 * pMem = (uint8 *)scr->pixels;
+               uint8_t * pMem = (uint8_t *)scr->pixels;
 
                xpos = 0;
+
                while (xpos < bytesPerLine)
                {
                        last = pMem[mem++];
                        xpos++;
                        count = 1;
+
                        while (pMem[mem] == last && xpos < bytesPerLine && count < 63)
                        {
                                mem++;  count++;  xpos++;
                        }
 
-                       if (count > 1 || (last&0xC0) == 0xC0)
+                       if (count > 1 || (last & 0xC0) == 0xC0)
                        {
-                               fputc(0xC0 | (count & 0x3F), fw);  fputc(last & 0xFF, fw);
+                               fputc(0xC0 | (count & 0x3F), fw);
+                               fputc(last & 0xFF, fw);
                        }
-                       else fputc(last & 0xFF, fw);
+                       else
+                               fputc(last & 0xFF, fw);
                }
                mem += (scr->pitch - 320);  // Handle non-standard line lengths...
        }
@@ -527,10 +576,11 @@ void SnapPCX(SDL_Surface * scr)
        SDL_UnlockSurface(scr);
 
        // Write the palette
-
        fputc(0x0C, fw);
+
        for (i=0; i<768; i++)
                fputc(palette[i], fw);
 
        fclose(fw);    // success!
 }
+
index 417c8c2849ae9fbfb1f8859fa4aea278c0326139..50c3aafaae44c63f09883a8c6b265526fd99a1f6 100644 (file)
@@ -1,20 +1,21 @@
 //
 // SCREEN.H
 //
-// by James L. Hammons
-// (C) 1997 Underground Software
+// by James Hammons
+// (C) 1997, 2014 Underground Software
 //
 
 #ifndef __SCREEN_H__
 #define __SCREEN_H__
 
 #include "SDL.h"
-#include "types.h"
+#include <stdint.h>
 
 #define VIRTUAL_SCREEN_WIDTH    288
 #define VIRTUAL_SCREEN_HEIGHT   224
 
 void SnapPCX(SDL_Surface *);          // Take a PCX snapshot
-void BlitChar(SDL_Surface *, uint8 *, uint8 *); // Show NAMCO screen
+void BlitChar(SDL_Surface *, uint8_t *, uint8_t *); // Show NAMCO screen
 
 #endif // __SCREEN_H__
+
index 4fd1f32e5d2984c45cf20b111a32127ea0fdfef6..d3134ed62db44ff5d5f84bf57f421836b474e1c5 100644 (file)
@@ -1,18 +1,18 @@
 //
 // Thunder: A Rolling Thunder Emulator w/6809 debugger
 //
-// by James L. Hammons
-// (c) 2004, 2009 Underground Software
+// by James Hammons
+// (C) 2004, 2014 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // WHO  WHEN        WHAT
-// ---  ----------  ------------------------------------------------------------
+// ---  ----------  -----------------------------------------------------------
 // JLH  07/23/2009  Added changelog ;-)
 // JLH  08/12/2009  Stabilized emulation so that it works
 //
 
-#define THUNDER_VERSION                "0.9.9"
+#define THUNDER_VERSION                "1.0.0"
 
 #include <iostream>
 #include <iomanip>
 #include <new>
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdint.h>
 //#include <conio.h>                   // For getch()
 #include <curses.h>                    // For getch()
 #include <time.h>
 #include "SDL.h"                                                               // Get yer SDL out...!
-#include "types.h"
 #include "v6809.h"
 #include "screen.h"
 #include "gui.h"
 
 using namespace std;                                                   // Yes!
 
-#if 0
-#define ROM1  "RT3-1B.ROM"
-#define ROM2  "RT3-2B.ROM"
-#define ROM3  "RT3-3.ROM"
-#define ROM4  "RT3-4.ROM"
-#define ROM5  "RT1-5.ROM"
-#define ROM6  "RT1-6.ROM"
-#define ROM7  "RT1-7.ROM"
-#define ROM8  "RT1-8.ROM"
-#define ROM9  "RT1-9.ROM"
-#define ROM10 "RT1-10.ROM"
-#define ROM11 "RT1-11.ROM"
-#define ROM12 "RT1-12.ROM"
-#define ROM13 "RT1-13.ROM"
-#define ROM14 "RT1-14.ROM"
-#define ROM15 "RT1-15.ROM"
-#define ROM16 "RT1-16.ROM"
-#define ROM17 "RT1-17.ROM"
-#define ROM18 "RT1-18.ROM"
-#define ROM19 "RT3-19.ROM"
-#define ROM20 "RT3-20.ROM"
-#define ROM21 "RT1-21.ROM"
-#define ROM22 "RT2-22.ROM"
-#define PROM1 "RT1-1.BIN"
-#define PROM2 "RT1-2.BIN"
-#define PROM3 "RT1-3.BIN"
-#define PROM4 "RT1-4.BIN"
-#define PROM5 "RT1-5.BIN"
-#else
+
 #define ROM1   "rt3-1b.9c"
 #define ROM2   "rt3-2b.12c"
 #define ROM3   "rt3-3.12d"
@@ -90,44 +62,44 @@ using namespace std;                                                        // Yes!
 #define PROM4  "mb7138h.6v"
 #define PROM5  "mb7112e.6u"
 #define MCUROM "rt1-mcu.bin"
-#endif
+
 
 // Global defines
 
 SDL_Surface * screen;
 
-uint8 * gram, * grom;                                                  // Allocate RAM & ROM pointers
-uint8 gram1[0x10000], gram2[0x10000], grom1[0x10000], grom2[0x10000];  // Actual memory
-uint8 grom3[0x8000], grom4[0x8000], data_rom[0x40000], spr_rom[0x80000], voice_rom[0x20000];
-uint8 chr_rom[0x60000];                                                        // Character ROM pointer
+uint8_t * gram, * grom;                                // Allocate RAM & ROM pointers
+uint8_t gram1[0x10000], gram2[0x10000], grom1[0x10000], grom2[0x10000];        // Actual memory
+uint8_t grom3[0x8000], grom4[0x8000], data_rom[0x40000], spr_rom[0x80000], voice_rom[0x20000];
+uint8_t chr_rom[0x60000];                      // Character ROM pointer
 
 V6809REGS cpu1, cpu2;
 
-bool trace1 = false;                                                   // ditto...
-bool looking_at_rom = true;                                            // true = R1, false = R2
-uint32 banksw1, banksw2;                                               // Bank switch addresses
-uint16 game_over_switch;                                               // Game over delay
-uint16 dpc;                                                                            // Debug pc reg...
-bool show_scr = true;                                                  // Whether or not to show background
-bool enable_cpu = true;                                                        // Whether or not to enable CPUs
-bool irqGoA = true;                                                            // IRQ switch for CPU #1
-bool irqGoB = true;                                                            // IRQ switch for CPU #2
-
-uint16 refresh_ = 0;                                                   // Crappy global screen stuff...
+bool trace1 = false;                           // ditto...
+bool looking_at_rom = true;                    // true = R1, false = R2
+uint32_t banksw1, banksw2;                     // Bank switch addresses
+uint16_t game_over_switch;                     // Game over delay
+uint16_t dpc;                                          // Debug pc reg...
+bool show_scr = true;                          // Whether or not to show background
+bool enable_cpu = true;                                // Whether or not to enable CPUs
+bool irqGoA = true;                                    // IRQ switch for CPU #1
+bool irqGoB = true;                                    // IRQ switch for CPU #2
+
+uint16_t refresh_ = 0;                         // Crappy global screen stuff...
 bool refresh2 = true;
 
-uint32 psg_lens[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-uint8 * psg_adrs[16];
-uint32 voc_lens[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+uint32_t psg_lens[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+uint8_t * psg_adrs[16];
+uint32_t voc_lens[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-uint8 * voc_adrs[32];
-uint32 fm_lens[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-uint8 * fm_adrs[14];
+uint8_t * voc_adrs[32];
+uint32_t fm_lens[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+uint8_t * fm_adrs[14];
 
-fstream tr;    // Tracelog hook
-uint16 pcx;   // Where we at?
+fstream tr;                                                    // Tracelog hook
+uint16_t pcx;                                          // Where we at?
 
-static uint8 * keys;                                                   // SDL raw keyboard matrix
+static uint8_t * keys;                         // SDL raw keyboard matrix
 
 static char op_mat1[256] = {
   1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
@@ -284,12 +256,13 @@ tregs[16][3] = {
   "A",  "B", "CC", "DP", "??", "??", "??", "??" },
 iregs[4][2] = {"X", "Y", "U", "S" };
 
+
 //
 // Read a byte from memory (without touching PC. Not a Fetch!)
 //
-uint8 RdMem(uint16 addr)
+uint8_t RdMem(uint16_t addr)
 {
-       uint8 b;
+       uint8_t b;
 
        // $4000-4300 is RAM shared with the microcontroller...
 
@@ -306,22 +279,23 @@ uint8 RdMem(uint16 addr)
        return b;
 }
 
+
 //
 // Write a byte to memory
 //
-void WrMem(uint16 addr, uint8 b)
+void WrMem(uint16_t addr, uint8_t b)
 {
        extern bool disasm;
        extern bool charbase;                                                           // Needed for screen. Extern it in it??
-  //extern uint16 sr, ur, xr, yr;            // Needed for tracelog
-  //extern uint16 pcr;
+  //extern uint16_t sr, ur, xr, yr;            // Needed for tracelog
+  //extern uint16_t pcr;
 /*  if ((addr>0x40FF) && (addr<0x4390))
   {
     tr << hex << addr << ":" << (int)b;
     //for(int i=0; i<32; i++)
     //{
     //  if (gram1[0x4400+i]<0x10)  tr << "0";
-    //  tr << hex << (uint16)gram1[0x4400+i] << " ";
+    //  tr << hex << (uint16_t)gram1[0x4400+i] << " ";
     //}
     tr << endl;
   }//*/
@@ -337,7 +311,7 @@ void WrMem(uint16 addr, uint8 b)
        if (addr == 0x6400)
                SpawnSound(GAMESOUND, gram1[0x6600], 1);                // Do voice chan 2
        if (addr == 0x6800)
-               banksw1 = (uint32)b << 13;                                              // Set char data bankswitch base address
+               banksw1 = (uint32_t)b << 13;                                            // Set char data bankswitch base address
        if (addr > 0x4284 && addr < 0x42A5 && b)
                SpawnSound(PSGSOUND, addr - 0x4285);                    // Do PSG sound on chans 2, 3
        if (addr == 0x4380)
@@ -369,13 +343,14 @@ void WrMem(uint16 addr, uint8 b)
        }
 }
 
+
 //
 // Read a byte from memory (without touching PC. Not a Fetch!) (2nd processor)
 //
-uint8 RdMemB(uint16 addr)
+uint8_t RdMemB(uint16_t addr)
 {
-//  extern uint16 cpu2.s, cpu2.u, cpu2.x, cpu2.y;            // Needed for tracelog
-       uint8 b;
+//  extern uint16_t cpu2.s, cpu2.u, cpu2.x, cpu2.y;            // Needed for tracelog
+       uint8_t b;
 
        if (addr < 0x8000)
        {
@@ -399,22 +374,23 @@ uint8 RdMemB(uint16 addr)
        return b;
 }
 
+
 //
 // Write a byte to memory (2nd processor)
 //
-void WrMemB(uint16 addr, uint8 b)
+void WrMemB(uint16_t addr, uint8_t b)
 {
        extern bool disasm;
        extern bool charbase;
-  //extern uint16 sr, ur, xr, yr;            // Needed for tracelog
-  //extern uint16 pcr;
+  //extern uint16_t sr, ur, xr, yr;            // Needed for tracelog
+  //extern uint16_t pcr;
 /*  if ((addr>0x00FF) && (addr<0x0390))
   {
     tr << hex << addr << ":" << (int)b;
     //for(int i=0; i<32; i++)
     //{
     //  if (gram1[0x4400+i]<0x10)  tr << "0";
-    //  tr << hex << (uint16)gram1[0x4400+i] << " ";
+    //  tr << hex << (uint16_t)gram1[0x4400+i] << " ";
     //}
     tr << endl;
   }//*/
@@ -432,7 +408,7 @@ void WrMemB(uint16 addr, uint8 b)
        if (addr > 0x0284 && addr < 0x02A5 && b)
                SpawnSound(PSGSOUND, addr - 0x0285);                    // Do PSG sound on chans 2, 3
        if (addr == 0xD803)
-               banksw2 = (uint32)(b & 0x03) << 13;                             // Set sprite data bank switch
+               banksw2 = (uint32_t)(b & 0x03) << 13;                           // Set sprite data bank switch
        if (addr == 0x0380)
        {
                SpawnSound(FMSOUND, b);                                                 // Do FM sound on chan 4
@@ -459,412 +435,462 @@ void WrMemB(uint16 addr, uint8 b)
        }
 }
 
+
 //
 // Display bytes in mem in hex
 //
-void DisplayBytes(uint16 src, unsigned long dst)
+void DisplayBytes(uint16_t src, unsigned long dst)
 {
-  uint8 cnt;
-  unsigned long i;
+       uint8_t cnt = 0;
+       WriteLog("%04X: ", src);
 
-  WriteLog("%04X: ", src);
-  cnt = 0;                               // Init counter...
-  if (src > dst)  dst += 0x10000;        // That should fix the FFFF bug...
-  for(i=src; i<dst; i++)
-  {
-    WriteLog("%02X ", (uint8)(looking_at_rom ? RdMem(i) : RdMemB(i)));
-    cnt++;                               // Bump counter...
-  }
-  for(i=cnt; i<5; i++)                   // Pad the leftover spaces...
-  {
-    WriteLog("   ");
-  }
+       if (src > dst)
+               dst += 0x10000;        // That should fix the FFFF bug...
+
+       for(unsigned long i=src; i<dst; i++)
+       {
+               WriteLog("%02X ", (uint8_t)(looking_at_rom ? RdMem(i) : RdMemB(i)));
+               cnt++;
+       }
+
+       // Pad the leftover spaces...
+       for(unsigned long i=cnt; i<5; i++)
+               WriteLog("   ");
 }
 
+
 // temp crap...
-uint8 Fetch(void) { return RdMem(dpc); }
-uint16 FetchW(void) { return (uint16)((RdMem(dpc) << 8) | RdMem(dpc+1)); }
-uint8 FetchB(void) { return RdMemB(dpc); }
-uint16 FetchWB(void) { return (uint16)((RdMemB(dpc) << 8) | RdMemB(dpc+1)); }
+uint8_t Fetch(void) { return RdMem(dpc); }
+uint16_t FetchW(void) { return (uint16_t)((RdMem(dpc) << 8) | RdMem(dpc+1)); }
+uint8_t FetchB(void) { return RdMemB(dpc); }
+uint16_t FetchWB(void) { return (uint16_t)((RdMemB(dpc) << 8) | RdMemB(dpc+1)); }
+
 
 //
 // Decode a 6809 instruction at 'addr'
 //
 void Decode_6809()
 {
-  uint8 (* DFetch)();           // Decode Fetch() pointer...
-  uint16 (* DFetchW)();          // Decode FetchW() pointer...
-  DFetch  = (looking_at_rom ? Fetch : FetchB);
-  DFetchW = (looking_at_rom ? FetchW : FetchWB);
-
-/*  extern*/ uint16 pcr, pcrB;              // Pull in 'pcr' from '6809.cpp'
-  uint16 pc_save = pcr, pcB_save = pcrB;
-  pcr  = dpc;  pcrB = dpc;
-  uint8 opcode = DFetch();             // Get the opcode ('fetch' cycle)
-  uint8 opcode2, operand;
-  uint16 loperand;
-  uint8 admode = op_mat1[opcode];     // addressing mode
-  char outbuf[80], mnem[6], tmp[30];
-
-  strcpy(mnem, mnemonics[opcode]);  // Copy page 1 opcode
-  if (opcode == 0x10)             // Extended opcode?
-  {
-    opcode2 = DFetch();     // Then get next byte
-    admode = op_mat2[opcode2];    // And use it as index into 'op_mat2'
-    strcpy(mnem, mnemonics2[opcode2]);  // Overwrite mnemonic
-  }
-  if (opcode == 0x11)             // Same as above...
-  {
-    opcode2 = DFetch();
-    admode = op_mat3[opcode2];
-    strcpy(mnem, mnemonics3[opcode2]);  // Overwrite mnemonic
-  }
-  switch(admode)                  // Decode it...
-  {
-    case 0:  // Illegal
-    { sprintf(outbuf, "???");  break; }
-    case 1:  // Zero page
-    { operand = DFetch();   // Get ZP address
-      sprintf(outbuf, "%s $%02X", mnem, operand);
-      break; }
-    case 2:  // Absolute
-    { loperand = DFetchW(); // Get ABS address
-      sprintf(outbuf, "%s $%04X", mnem, loperand);
-      break; }
-    case 3:  // Relative
-    { operand = DFetch();   // Get offset
-      uint16 tmpc = (looking_at_rom ? pcr : pcrB);
-      sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16)(int8)operand);
-      break; }
-    case 4:  // Long Relative
-    { loperand = DFetchW(); // Get long offset
-      uint16 tmpc = (looking_at_rom ? pcr : pcrB);
-      sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16)loperand);
-      break; }
-    case 5:  // Inherent
-    { sprintf(outbuf, "%s ", mnem);
-      break; }
-    case 6:  // Txfr/exchg/push/pull
-    { operand = DFetch();   // Get txfr/exg/push/pull byte
-      if ((opcode == 0x1E) || (opcode == 0x1F))  // Is it TXF/EXG?
-      {
-        sprintf(tmp, "%s,%s", tregs[operand>>4], tregs[operand&0x0F]);
-      }
-      else
-      {
-        tmp[0] = 0;
-        if (operand&0x01)  strcat(tmp, "CC ");
-        if (operand&0x02)  strcat(tmp, "A ");
-        if (operand&0x04)  strcat(tmp, "B ");
-        if (operand&0x08)  strcat(tmp, "DP ");
-        if (operand&0x10)  strcat(tmp, "X ");
-        if (operand&0x20)  strcat(tmp, "Y ");
-        if (operand&0x40)  (((opcode==0x34)||(opcode==0x35))
-                       ? strcat(tmp, "U ") : strcat(tmp, "S "));
-        if (operand&0x80)  strcat(tmp, "PC");
-      }
-      sprintf(outbuf, "%s %s", mnem, tmp);
-      break; }
-    case 7:  // Indexed (the tough one!)
-    { operand = DFetch();   // Get IDX byte
-      uint8 reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
-           lo_nyb = (operand & 0x0F),  boff;
-      uint16 woff;
-
-      strcpy(tmp, "??");
-      if (!(operand & 0x80))      // Hi bit set? Then decode 4 bit offset
-      {
-        sprintf(tmp, "(%d),%s", (idxind ? -(16-lo_nyb) : lo_nyb),
-                iregs[reg]);
-      }
-      else   // Add the ($nnnn,R) code dude...
-      {
-        if (idxind)
-        {
-          switch(lo_nyb)
-          {
-            case 1:   sprintf(tmp, "(,%s++)", iregs[reg]);  break;
-            case 3:   sprintf(tmp, "(,--%s)", iregs[reg]);  break;
-            case 4:   sprintf(tmp, "(,%s)", iregs[reg]);  break;
-            case 5:   sprintf(tmp, "(B,%s)", iregs[reg]);  break;
-            case 6:   sprintf(tmp, "(A,%s)", iregs[reg]);  break;
-            case 8:
-            { boff = DFetch();  sprintf(tmp, "($%02X,%s)", boff,
-                                       iregs[reg]);  break; }
-            case 9:
-            { woff = DFetchW();  sprintf(tmp, "($%04X,%s)", woff,
-                                        iregs[reg]);  break; }
-            case 11:  sprintf(tmp, "(D,%s)", iregs[reg]);  break;
-            case 12:
-            { boff = DFetch();  sprintf(tmp, "($%02X,PC)", boff);  break; }
-            case 13:
-            { woff = DFetchW();  sprintf(tmp, "($%04X,PC)", woff);  break; }
-            case 15:
-            { woff = DFetchW();  sprintf(tmp, "[$%04X]", woff);  break; }
-            default:  strcpy(tmp, "??");
-          }
-        }
-        else
-        {
-          switch(lo_nyb)
-          {
-            case 0:   sprintf(tmp, ",%s+", iregs[reg]);  break;
-            case 1:   sprintf(tmp, ",%s++", iregs[reg]);  break;
-            case 2:   sprintf(tmp, ",-%s", iregs[reg]);  break;
-            case 3:   sprintf(tmp, ",--%s", iregs[reg]);  break;
-            case 4:   sprintf(tmp, ",%s", iregs[reg]);  break;
-            case 5:   sprintf(tmp, "(B),%s", iregs[reg]);  break;
-            case 6:   sprintf(tmp, "(A),%s", iregs[reg]);  break;
-            case 8:
-            { boff = DFetch();  sprintf(tmp, "($%02X),%s", boff,
-                                       iregs[reg]);  break; }
-            case 9:
-            { woff = DFetchW();  sprintf(tmp, "($%04X),%s", woff,
-                                       iregs[reg]);  break; }
-            case 11:  sprintf(tmp, "(D),%s", iregs[reg]);  break;
-            case 12:
-            { boff = DFetch();  sprintf(tmp, "($%02X),PC", boff);  break; }
-            case 13:
-            { woff = DFetchW();  sprintf(tmp, "($%04X),PC", woff);  break; }
-            default:  strcpy(tmp, "??");
-          }
-        }
-      }
-      sprintf(outbuf, "%s %s", mnem, tmp);
-      break; }
-    case 8:  // Immediate
-    { operand = DFetch();   // Get IMM byte
-      sprintf(outbuf, "%s #$%02X", mnem, operand);
-      break; }
-    case 9:  // Long Immediate
-    { loperand = DFetchW(); // Get IMM word
-      sprintf(outbuf, "%s #$%04X", mnem, loperand);
-      break; }
-  }
-  DisplayBytes(dpc, (looking_at_rom ? pcr : pcrB));  // Show bytes
-  WriteLog(outbuf); WriteLog("\n");     // display opcode & addressing, etc
-  dpc = (looking_at_rom ? pcr : pcrB);  // Advance debug PC
-  pcr = pc_save;  pcrB = pcB_save;  // Restore PCs
+       uint8_t (* DFetch)();           // Decode Fetch() pointer...
+       uint16_t (* DFetchW)();          // Decode FetchW() pointer...
+       DFetch  = (looking_at_rom ? Fetch : FetchB);
+       DFetchW = (looking_at_rom ? FetchW : FetchWB);
+
+       /*  extern*/ uint16_t pcr, pcrB;              // Pull in 'pcr' from '6809.cpp'
+       uint16_t pc_save = pcr, pcB_save = pcrB;
+       pcr  = dpc;  pcrB = dpc;
+       uint8_t opcode = DFetch();             // Get the opcode ('fetch' cycle)
+       uint8_t opcode2, operand;
+       uint16_t loperand;
+       uint8_t admode = op_mat1[opcode];     // addressing mode
+       char outbuf[80], mnem[6], tmp[30];
+
+       strcpy(mnem, mnemonics[opcode]);  // Copy page 1 opcode
+
+       if (opcode == 0x10)             // Extended opcode?
+       {
+               opcode2 = DFetch();     // Then get next byte
+               admode = op_mat2[opcode2];    // And use it as index into 'op_mat2'
+               strcpy(mnem, mnemonics2[opcode2]);  // Overwrite mnemonic
+       }
+
+       if (opcode == 0x11)             // Same as above...
+       {
+               opcode2 = DFetch();
+               admode = op_mat3[opcode2];
+               strcpy(mnem, mnemonics3[opcode2]);  // Overwrite mnemonic
+       }
+
+       // Decode it...
+       switch (admode)
+       {
+       case 0:  // Illegal
+               sprintf(outbuf, "???");
+               break;
+       case 1:  // Zero page
+               operand = DFetch();   // Get ZP address
+               sprintf(outbuf, "%s $%02X", mnem, operand);
+               break;
+       case 2:  // Absolute
+               loperand = DFetchW(); // Get ABS address
+               sprintf(outbuf, "%s $%04X", mnem, loperand);
+               break;
+       case 3:  // Relative
+       {
+               operand = DFetch();   // Get offset
+               uint16_t tmpc = (looking_at_rom ? pcr : pcrB);
+               sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16_t)(int8_t)operand);
+               break;
+       }
+       case 4:  // Long Relative
+       {
+               loperand = DFetchW(); // Get long offset
+               uint16_t tmpc = (looking_at_rom ? pcr : pcrB);
+               sprintf(outbuf, "%s $%04X", mnem, tmpc+(int16_t)loperand);
+               break;
+       }
+       case 5:  // Inherent
+               sprintf(outbuf, "%s ", mnem);
+               break;
+       case 6:  // Txfr/exchg/push/pull
+       {
+               operand = DFetch();   // Get txfr/exg/push/pull byte
+
+               if ((opcode == 0x1E) || (opcode == 0x1F))  // Is it TXF/EXG?
+               {
+                       sprintf(tmp, "%s,%s", tregs[operand>>4], tregs[operand&0x0F]);
+               }
+               else
+               {
+                       tmp[0] = 0;
+                       if (operand&0x01)  strcat(tmp, "CC ");
+                       if (operand&0x02)  strcat(tmp, "A ");
+                       if (operand&0x04)  strcat(tmp, "B ");
+                       if (operand&0x08)  strcat(tmp, "DP ");
+                       if (operand&0x10)  strcat(tmp, "X ");
+                       if (operand&0x20)  strcat(tmp, "Y ");
+                       if (operand&0x40)  (((opcode==0x34)||(opcode==0x35))
+                                               ? strcat(tmp, "U ") : strcat(tmp, "S "));
+                       if (operand&0x80)  strcat(tmp, "PC");
+               }
+               sprintf(outbuf, "%s %s", mnem, tmp);
+               break;
+       }
+       case 7:  // Indexed (the tough one!)
+       {
+               operand = DFetch();   // Get IDX byte
+               uint8_t reg = ((operand & 0x60) >> 5), idxind = ((operand & 0x10) >> 4),
+                       lo_nyb = (operand & 0x0F),  boff;
+               uint16_t woff;
+
+               strcpy(tmp, "??");
+
+               if (!(operand & 0x80))      // Hi bit set? Then decode 4 bit offset
+               {
+                       sprintf(tmp, "(%d),%s", (idxind ? -(16-lo_nyb) : lo_nyb),
+                                       iregs[reg]);
+               }
+               else   // Add the ($nnnn,R) code dude...
+               {
+                       if (idxind)
+                       {
+                               switch (lo_nyb)
+                               {
+                               case 1:   sprintf(tmp, "(,%s++)", iregs[reg]);  break;
+                               case 3:   sprintf(tmp, "(,--%s)", iregs[reg]);  break;
+                               case 4:   sprintf(tmp, "(,%s)", iregs[reg]);  break;
+                               case 5:   sprintf(tmp, "(B,%s)", iregs[reg]);  break;
+                               case 6:   sprintf(tmp, "(A,%s)", iregs[reg]);  break;
+                               case 8:
+                               { boff = DFetch();  sprintf(tmp, "($%02X,%s)", boff,
+                                                                               iregs[reg]);  break; }
+                               case 9:
+                               { woff = DFetchW();  sprintf(tmp, "($%04X,%s)", woff,
+                                                                                       iregs[reg]);  break; }
+                               case 11:  sprintf(tmp, "(D,%s)", iregs[reg]);  break;
+                               case 12:
+                               { boff = DFetch();  sprintf(tmp, "($%02X,PC)", boff);  break; }
+                               case 13:
+                               { woff = DFetchW();  sprintf(tmp, "($%04X,PC)", woff);  break; }
+                               case 15:
+                               { woff = DFetchW();  sprintf(tmp, "[$%04X]", woff);  break; }
+                               default:  strcpy(tmp, "??");
+                               }
+                       }
+                       else
+                       {
+                               switch (lo_nyb)
+                               {
+                               case 0:   sprintf(tmp, ",%s+", iregs[reg]);  break;
+                               case 1:   sprintf(tmp, ",%s++", iregs[reg]);  break;
+                               case 2:   sprintf(tmp, ",-%s", iregs[reg]);  break;
+                               case 3:   sprintf(tmp, ",--%s", iregs[reg]);  break;
+                               case 4:   sprintf(tmp, ",%s", iregs[reg]);  break;
+                               case 5:   sprintf(tmp, "(B),%s", iregs[reg]);  break;
+                               case 6:   sprintf(tmp, "(A),%s", iregs[reg]);  break;
+                               case 8:
+                               { boff = DFetch();  sprintf(tmp, "($%02X),%s", boff,
+                                                                               iregs[reg]);  break; }
+                               case 9:
+                               { woff = DFetchW();  sprintf(tmp, "($%04X),%s", woff,
+                                                                               iregs[reg]);  break; }
+                               case 11:  sprintf(tmp, "(D),%s", iregs[reg]);  break;
+                               case 12:
+                               { boff = DFetch();  sprintf(tmp, "($%02X),PC", boff);  break; }
+                               case 13:
+                               { woff = DFetchW();  sprintf(tmp, "($%04X),PC", woff);  break; }
+                               default:  strcpy(tmp, "??");
+                               }
+                       }
+               }
+
+               sprintf(outbuf, "%s %s", mnem, tmp);
+               break;
+       }
+       case 8:  // Immediate
+               operand = DFetch();   // Get IMM byte
+               sprintf(outbuf, "%s #$%02X", mnem, operand);
+               break;
+       case 9:  // Long Immediate
+               loperand = DFetchW(); // Get IMM word
+               sprintf(outbuf, "%s #$%04X", mnem, loperand);
+               break;
+       }
+
+       DisplayBytes(dpc, (looking_at_rom ? pcr : pcrB));  // Show bytes
+       WriteLog(outbuf);
+       WriteLog("\n");     // display opcode & addressing, etc
+       dpc = (looking_at_rom ? pcr : pcrB);  // Advance debug PC
+       pcr = pc_save;
+       pcrB = pcB_save;  // Restore PCs
 }
 
+
 //
 // Convert hex to dec
 //
-uint16 htod(char *str)
+uint16_t htod(char * str)
 {
-  uint16 value = 0;
-  int len = strlen(str);
+       uint16_t value = 0;
+       int len = strlen(str);
 
-  for(int i=0; i<len; i++)
-  {
-    if (str[i]>='0' && str[i]<='9')
-    {
-      value = (value<<4) | (unsigned)(str[i]-'0');
-    }
-    if (str[i]>='a' && str[i]<='f')
-    {
-      value = (value<<4) | (unsigned)(str[i]-'a')+10;
-    }
-    if (str[i]>='A' && str[i]<='F')
-    {
-      value = (value<<4) | (unsigned)(str[i]-'A')+10;
-    }
-  }
-  return(value);
+       for(int i=0; i<len; i++)
+       {
+               if (str[i] >= '0' && str[i] <= '9')
+               {
+                       value = (value << 4) | (unsigned)(str[i] - '0');
+               }
+               else if (str[i] >= 'a' && str[i] <= 'f')
+               {
+                       value = (value << 4) | (unsigned)((str[i] - 'a') + 10);
+               }
+               else if (str[i] >= 'A' && str[i] <= 'F')
+               {
+                       value = (value << 4) | (unsigned)((str[i] - 'A') + 10);
+               }
+       }
+
+       return value;
 }
 
+
 //
 // Load 32K file into ROM image space
 //
-bool Load32KImg(char * filename, uint16 address)
+bool Load32KImg(char * filename, uint16_t address)
 {
-  ifstream ff;
-  char ch;
+       ifstream ff;
+       char ch;
 
-  ff.open(filename, ios::binary | ios::in);  // Open 'da file...
-  if (ff)
-  {
-    for(long i=0; i<32768; i++)                // Read it in...
-    {
-      ff.get(ch);
-      grom[address+i] = ch;
-    }
-    ff.close();                                // Close 'da file...
-  }
-  return(ff);
+       ff.open(filename, ios::binary | ios::in);  // Open 'da file...
+
+       if (ff)
+       {
+               for(long i=0; i<32768; i++)                // Read it in...
+               {
+                       ff.get(ch);
+                       grom[address+i] = ch;
+               }
+
+               ff.close();                                // Close 'da file...
+       }
+
+       return ff;
 }
 
+
 //
 // Generic Load file into image space
 // (No error checking performed!  Responsibility of caller!)
 //
-bool LoadImg(const char * filename, uint8 * mem, uint32 address, uint32 length)
+bool LoadImg(const char * filename, uint8_t * mem, uint32_t address, uint32_t length)
 {
-  ifstream ff;
-  char path[80];
-  char ch;
+       ifstream ff;
+       char path[80];
+       char ch;
 
-  strcpy(path, "./ROMs/");
-  strcat(path, filename);
+       strcpy(path, "./ROMs/");
+       strcat(path, filename);
 //  ff.open(filename, ios::binary | ios::in);  // Open 'da file...
-  ff.open(path, ios::binary | ios::in);       // Open 'da file...
-  if (ff)
-  {
-    for(uint32 i=0; i<length; i++)             // Read it in...
-    {
-      ff.get(ch);
-      mem[address+i] = ch;
-    }
-    ff.close();                               // Close 'da file...
-  }
-  return(ff);
+       ff.open(path, ios::binary | ios::in);       // Open 'da file...
+
+       if (ff)
+       {
+               for(uint32_t i=0; i<length; i++)             // Read it in...
+               {
+                       ff.get(ch);
+                       mem[address+i] = ch;
+               }
+
+               ff.close();                               // Close 'da file...
+       }
+
+       return ff;
 }
 
+
 //
 // Read color PROMs
 //
 bool ReadColorPROMs(void)
 {
-  fstream ff1, ff2;
-//  uint8 ch;
-  char ch;
-  extern uint8 palette[768];     // Screen physical palette
-  extern uint8 ccolor[256][8];   // Character color PROM values
-  extern uint8 scolor[128][16];  // Sprite color PROM values
-
-  ff1.open("./ROMs/"PROM3, ios::binary|ios::in);
-  if (ff1)
-  {
-    for(int i=0; i<256; i++) // Load char pallete with PROM values
-    {
-      for(int j=0; j<8; j++)
-      {
-        ff1.get(ch);
-        ccolor[i][j] = (uint8)ch;
-      }
-    }
-    ff1.close();
-  }
-  ff1.open("./ROMs/"PROM4, ios::binary|ios::in);
-  if (ff1)
-  {
-    for(int i=0; i<128; i++) // Load sprite pallete with PROM values
-    {
-      for(int j=0; j<16; j++)
-      {
-        ff1.get(ch);
-        scolor[i][j] = (uint8)ch;
-      }
-    }
-    ff1.close();
-  }
-
-  ff1.open("./ROMs/"PROM1, ios::binary|ios::in);
-  ff2.open("./ROMs/"PROM2, ios::binary|ios::in);
-  if (ff1)    // If open was successful...
-  {
-    for(int i=0; i<768; i+=3)
-    {
-      ff1.get(ch);
-      palette[i]   = (uint8)(ch&0x0F);
-      palette[i+1] = (uint8)(ch>>4);
-      ff2.get(ch);
-      palette[i+2] = (uint8)ch;
-    }
-
-    // Do palette stretching here... I.e. add 0 to hinyb 0, 1 to hinyb 1, etc.
-
-    for(int i=0; i<768; i++)
-      palette[i] = ((palette[i]<<4)&0xF0) | (palette[i]&0x0F);
-
-    ff1.close();
-    ff2.close();
-  }
-  return ff1;
+       fstream ff1, ff2;
+       //  uint8_t ch;
+       char ch;
+       extern uint8_t palette[768];     // Screen physical palette
+       extern uint8_t ccolor[256][8];   // Character color PROM values
+       extern uint8_t scolor[128][16];  // Sprite color PROM values
+
+       ff1.open("./ROMs/"PROM3, ios::binary|ios::in);
+
+       if (ff1)
+       {
+               for(int i=0; i<256; i++) // Load char pallete with PROM values
+               {
+                       for(int j=0; j<8; j++)
+                       {
+                               ff1.get(ch);
+                               ccolor[i][j] = (uint8_t)ch;
+                       }
+               }
+
+               ff1.close();
+       }
+
+       ff1.open("./ROMs/"PROM4, ios::binary|ios::in);
+
+       if (ff1)
+       {
+               for(int i=0; i<128; i++) // Load sprite pallete with PROM values
+               {
+                       for(int j=0; j<16; j++)
+                       {
+                               ff1.get(ch);
+                               scolor[i][j] = (uint8_t)ch;
+                       }
+               }
+
+               ff1.close();
+       }
+
+       ff1.open("./ROMs/"PROM1, ios::binary|ios::in);
+       ff2.open("./ROMs/"PROM2, ios::binary|ios::in);
+
+       if (ff1)    // If open was successful...
+       {
+               for(int i=0; i<768; i+=3)
+               {
+                       ff1.get(ch);
+                       palette[i]   = (uint8_t)(ch&0x0F);
+                       palette[i+1] = (uint8_t)(ch>>4);
+                       ff2.get(ch);
+                       palette[i+2] = (uint8_t)ch;
+               }
+
+               // Do palette stretching here... I.e. add 0 to hinyb 0, 1 to hinyb 1, etc.
+
+               for(int i=0; i<768; i++)
+               palette[i] = ((palette[i]<<4)&0xF0) | (palette[i]&0x0F);
+
+               ff1.close();
+               ff2.close();
+       }
+
+       return ff1;
 }
 
+
 //
 // Unpack font data
 //
 bool UnpackFonts(void)
 {
-//  uint8 b1, b2, b3;
-  char b1, b2, b3;
-  fstream f1, f2;
-  //0x4000 $800 chars
-  f1.open("./ROMs/"ROM7, ios::binary | ios::in);
-  f2.open("./ROMs/"ROM8, ios::binary | ios::in);
-  if ((!f1) || (!f2))  return false;  // Return if not found...
-  for(long i=0; i<0x40000; i+=64)
-  {
-    for(int j=0; j<64; j+=8)
-    {
-      f1.get(b1);  f1.get(b2);  f2.get(b3);
-      b3 ^= 0xFF; // Invert top data...
-      chr_rom[i+j] = ((b3 & 0x80) >> 5) | ((b1 & 0x80) >> 6) | ((b1 & 0x08) >> 3);
-      chr_rom[i+j+1] = ((b3 & 0x40) >> 4) | ((b1 & 0x40) >> 5) | ((b1 & 0x04) >> 2);
-      chr_rom[i+j+2] = ((b3 & 0x20) >> 3) | ((b1 & 0x20) >> 4) | ((b1 & 0x02) >> 1);
-      chr_rom[i+j+3] = ((b3 & 0x10) >> 2) | ((b1 & 0x10) >> 3) | (b1 & 0x01);
-      chr_rom[i+j+4] = ((b3 & 0x08) >> 1) | ((b2 & 0x80) >> 6) | ((b2 & 0x08) >> 3);
-      chr_rom[i+j+5] = (b3 & 0x04)        | ((b2 & 0x40) >> 5) | ((b2 & 0x04) >> 2);
-      chr_rom[i+j+6] = ((b3 & 0x02) << 1) | ((b2 & 0x20) >> 4) | ((b2 & 0x02) >> 1);
-      chr_rom[i+j+7] = ((b3 & 0x01) << 2) | ((b2 & 0x10) >> 3) | (b2 & 0x01);
-    }
-  }
-  f1.close();
-  f2.close();
-
-  f1.open("./ROMs/"ROM5, ios::binary | ios::in);
-  f2.open("./ROMs/"ROM6, ios::binary | ios::in);
-  for(long i=0x40000; i<0x60000; i+=64)
-  {
-    for(int j=0; j<64; j+=8)
-    {
-      f1.get(b1);  f1.get(b2);  f2.get(b3);
-      b3 ^= 0xFF;                             // Invert top data
-      chr_rom[i+j] = ((b3 & 0x80) >> 5) | ((b1 & 0x80) >> 6) | ((b1 & 0x08) >> 3);
-      chr_rom[i+j+1] = ((b3 & 0x40) >> 4) | ((b1 & 0x40) >> 5) | ((b1 & 0x04) >> 2);
-      chr_rom[i+j+2] = ((b3 & 0x20) >> 3) | ((b1 & 0x20) >> 4) | ((b1 & 0x02) >> 1);
-      chr_rom[i+j+3] = ((b3 & 0x10) >> 2) | ((b1 & 0x10) >> 3) | (b1 & 0x01);
-      chr_rom[i+j+4] = ((b3 & 0x08) >> 1) | ((b2 & 0x80) >> 6) | ((b2 & 0x08) >> 3);
-      chr_rom[i+j+5] = (b3 & 0x04)        | ((b2 & 0x40) >> 5) | ((b2 & 0x04) >> 2);
-      chr_rom[i+j+6] = ((b3 & 0x02) << 1) | ((b2 & 0x20) >> 4) | ((b2 & 0x02) >> 1);
-      chr_rom[i+j+7] = ((b3 & 0x01) << 2) | ((b2 & 0x10) >> 3) | (b2 & 0x01);
-    }
-  }
-  f1.close();
-  f2.close();
-  return true;                                // Made it!
+//  uint8_t b1, b2, b3;
+       char b1, b2, b3;
+       fstream f1, f2;
+       //0x4000 $800 chars
+       f1.open("./ROMs/"ROM7, ios::binary | ios::in);
+       f2.open("./ROMs/"ROM8, ios::binary | ios::in);
+
+       if ((!f1) || (!f2))
+               return false;  // Return if not found...
+
+       for(long i=0; i<0x40000; i+=64)
+       {
+               for(int j=0; j<64; j+=8)
+               {
+                       f1.get(b1);  f1.get(b2);  f2.get(b3);
+                       b3 ^= 0xFF; // Invert top data...
+                       chr_rom[i+j] = ((b3 & 0x80) >> 5) | ((b1 & 0x80) >> 6) | ((b1 & 0x08) >> 3);
+                       chr_rom[i+j+1] = ((b3 & 0x40) >> 4) | ((b1 & 0x40) >> 5) | ((b1 & 0x04) >> 2);
+                       chr_rom[i+j+2] = ((b3 & 0x20) >> 3) | ((b1 & 0x20) >> 4) | ((b1 & 0x02) >> 1);
+                       chr_rom[i+j+3] = ((b3 & 0x10) >> 2) | ((b1 & 0x10) >> 3) | (b1 & 0x01);
+                       chr_rom[i+j+4] = ((b3 & 0x08) >> 1) | ((b2 & 0x80) >> 6) | ((b2 & 0x08) >> 3);
+                       chr_rom[i+j+5] = (b3 & 0x04)        | ((b2 & 0x40) >> 5) | ((b2 & 0x04) >> 2);
+                       chr_rom[i+j+6] = ((b3 & 0x02) << 1) | ((b2 & 0x20) >> 4) | ((b2 & 0x02) >> 1);
+                       chr_rom[i+j+7] = ((b3 & 0x01) << 2) | ((b2 & 0x10) >> 3) | (b2 & 0x01);
+               }
+       }
+
+       f1.close();
+       f2.close();
+
+       f1.open("./ROMs/"ROM5, ios::binary | ios::in);
+       f2.open("./ROMs/"ROM6, ios::binary | ios::in);
+
+       for(long i=0x40000; i<0x60000; i+=64)
+       {
+               for(int j=0; j<64; j+=8)
+               {
+                       f1.get(b1);  f1.get(b2);  f2.get(b3);
+                       b3 ^= 0xFF;                             // Invert top data
+                       chr_rom[i+j] = ((b3 & 0x80) >> 5) | ((b1 & 0x80) >> 6) | ((b1 & 0x08) >> 3);
+                       chr_rom[i+j+1] = ((b3 & 0x40) >> 4) | ((b1 & 0x40) >> 5) | ((b1 & 0x04) >> 2);
+                       chr_rom[i+j+2] = ((b3 & 0x20) >> 3) | ((b1 & 0x20) >> 4) | ((b1 & 0x02) >> 1);
+                       chr_rom[i+j+3] = ((b3 & 0x10) >> 2) | ((b1 & 0x10) >> 3) | (b1 & 0x01);
+                       chr_rom[i+j+4] = ((b3 & 0x08) >> 1) | ((b2 & 0x80) >> 6) | ((b2 & 0x08) >> 3);
+                       chr_rom[i+j+5] = (b3 & 0x04)        | ((b2 & 0x40) >> 5) | ((b2 & 0x04) >> 2);
+                       chr_rom[i+j+6] = ((b3 & 0x02) << 1) | ((b2 & 0x20) >> 4) | ((b2 & 0x02) >> 1);
+                       chr_rom[i+j+7] = ((b3 & 0x01) << 2) | ((b2 & 0x10) >> 3) | (b2 & 0x01);
+               }
+       }
+
+       f1.close();
+       f2.close();
+
+       return true;                                // Made it!
 }
 
+
 //
 // Get length of sample from WAV format
 //
-uint32 GetWAVLength(fstream &file)
+uint32_t GetWAVLength(fstream & file)
 {
        char ch;
-       uint32 len;
+       uint32_t len;
 
        file.ignore(16);                                                                        // Skip header BS
 
        for(int i=0; i<2; i++)
        {
-               file.get(ch);  len = (int)(uint8)ch;
-               file.get(ch);  len |= (int)(uint8)ch << 8;
-               file.get(ch);  len |= (int)(uint8)ch << 16;
-               file.get(ch);  len |= (int)(uint8)ch << 24;
+               file.get(ch);  len = (int)(uint8_t)ch;
+               file.get(ch);  len |= (int)(uint8_t)ch << 8;
+               file.get(ch);  len |= (int)(uint8_t)ch << 16;
+               file.get(ch);  len |= (int)(uint8_t)ch << 24;
 
                file.ignore(len + 4);                                                   // Skip intermediate data
        }
 
-       file.get(ch);  len = (int)(uint8)ch;                                    // & finally get length of data
-       file.get(ch);  len |= (int)(uint8)ch << 8;
-       file.get(ch);  len |= (int)(uint8)ch << 16;
-       file.get(ch);  len |= (int)(uint8)ch << 24;
+       file.get(ch);  len = (int)(uint8_t)ch;                                  // & finally get length of data
+       file.get(ch);  len |= (int)(uint8_t)ch << 8;
+       file.get(ch);  len |= (int)(uint8_t)ch << 16;
+       file.get(ch);  len |= (int)(uint8_t)ch << 24;
 
        return len;
 }
 
+
 //
 // Load PSG samples from disk
 //
@@ -872,7 +898,7 @@ void LoadPSGs(void)
 {
        char file[40];
        char ch;
-       uint32 len;
+       uint32_t len;
 
        for(int i=0; i<16; i++)
        {
@@ -886,7 +912,7 @@ void LoadPSGs(void)
                if (fp)
                {
                        len = GetWAVLength(fp);                                         // Get WAV data length...
-                       psg_adrs[i] = new uint8[len];                           // Attempt to allocate space...
+                       psg_adrs[i] = new uint8_t[len];                         // Attempt to allocate space...
 
                        if (psg_adrs[i] != NULL)
                        {
@@ -906,6 +932,7 @@ void LoadPSGs(void)
        }
 }
 
+
 //
 // Load FM samples from disk
 //
@@ -913,7 +940,7 @@ void LoadFMs(void)
 {
        char file[200];
        char ch;
-       uint32 len;
+       uint32_t len;
 
        for(int i=0; i<14; i++)
        {
@@ -927,7 +954,7 @@ void LoadFMs(void)
                if (fp)
                {
                        len = GetWAVLength(fp);                                         // Get WAV length...
-                       fm_adrs[i] = new uint8[len];                                    // Attempt to allocate space...
+                       fm_adrs[i] = new uint8_t[len];                                  // Attempt to allocate space...
 
                        if (fm_adrs[i] != NULL)
                        {
@@ -947,6 +974,7 @@ void LoadFMs(void)
        }
 }
 
+
 //
 // Main loop
 //
@@ -958,27 +986,27 @@ extern bool disasm;       // From 'V6809.CPP'
        extern bool charbase;                                           // From 'SCREEN.CPP'
        charbase = false;
 
-  char lbuff[80];
-  fstream ff;                       // Declare fstream without file hooks...
-  bool brk = false, brk2 = false;   // Breakpoint set flag
-  uint16 brkpnt, brkpnt2;             // Where the breakpoint is...
-  bool running;                     // CPU running state flag...
-  bool self_test = false;           // Self-test switch
-  bool scr_type = false;            // false=chars, true=pixels
-  uint16 debounce = 0;                // Key de-bounce counter
-  uint16 fire_debounce = 0;           // Fire button debounce counter
+       char lbuff[80];
+       fstream ff;                       // Declare fstream without file hooks...
+       bool brk = false, brk2 = false;   // Breakpoint set flag
+       uint16_t brkpnt, brkpnt2;             // Where the breakpoint is...
+       bool running;                     // CPU running state flag...
+       bool self_test = false;           // Self-test switch
+       bool scr_type = false;            // false=chars, true=pixels
+       uint16_t debounce = 0;                // Key de-bounce counter
+       uint16_t fire_debounce = 0;           // Fire button debounce counter
 //  bool refresh2 = true;             // Default to 60 Hz...
-  uint8 x;                           // General placeholder...
-  bool active = true;                                          // Program running flag
+       uint8_t x;                           // General placeholder...
+       bool active = true;                                             // Program running flag
 
-  SDL_Event event;                                                             // SDL "event"
-  extern uint8 palette[768];                                   // Screen physical palette
-  uint32 ticks, oldTicks;
+       SDL_Event event;                                                                // SDL "event"
+       extern uint8_t palette[768];                                    // Screen physical palette
+       uint32_t ticks, oldTicks;
 
        cout << endl << "THUNDER v"THUNDER_VERSION" ";
        cout << "by James Hammons" << endl;
-       cout << "Serial #20090723 / Prerelease" << endl;
-       cout << "(C) 2003, 2009 Underground Software" << endl << endl;
+       cout << "Serial #20149404 / Prerelease" << endl;
+       cout << "© 2003, 2014 Underground Software" << endl << endl;
 
        cout << "This emulator is free software. If you paid for it you were RIPPED OFF"
                << endl << endl;
@@ -995,87 +1023,88 @@ extern bool disasm;      // From 'V6809.CPP'
 
        keys = SDL_GetKeyState(NULL);                           // Get the SDL keyboard matrix
 
-  gram = gram1;  grom = grom1;           // Needed only for debugger
+       gram = gram1;  grom = grom1;           // Needed only for debugger
 
-  for(long i=0; i<0x10000; i++)
-  {
-    gram[i] = 0;  grom[i] = 0;           // Zero out memory
-    gram2[i] = 0;  grom2[i] = 0;
-  }
-  game_over_switch = 0;   // Init game over delay
+       for(long i=0; i<0x10000; i++)
+       {
+               gram[i] = 0;  grom[i] = 0;           // Zero out memory
+               gram2[i] = 0;  grom2[i] = 0;
+       }
+
+       game_over_switch = 0;   // Init game over delay
 //  cpu1.a = 0; cpu1.b = 0; cpu1.cc = 0; cpu1.dp = 0; cpu1.x = 0; cpu1.y = 0; cpu1.s = 0; ur = 0; cpu1.pc = 0;
 
-  cout << "Loading ROMs..." << endl;
+       cout << "Loading ROMs..." << endl;
 //  LoadCMOS();                            // Load CMOS at $CC00-$CFFF
-  if (!ReadColorPROMs())                   // Load virtual PROMs
-  { cout << "Could not open PROM files!" << endl;  return -1; }
+       if (!ReadColorPROMs())                   // Load virtual PROMs
+       { cout << "Could not open PROM files!" << endl;  return -1; }
 
-  if (!LoadImg(ROM1, grom1, 0x8000, 0x8000)) // Load $8000-$FFFF 1st ROM
-  { cout << "Could not open file '" << ROM1 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM1, grom1, 0x8000, 0x8000)) // Load $8000-$FFFF 1st ROM
+       { cout << "Could not open file '" << ROM1 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM2, grom2, 0x8000, 0x8000)) // Load $8000-$FFFF 2nd ROM
-  { cout << "Could not open file '" << ROM2 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM2, grom2, 0x8000, 0x8000)) // Load $8000-$FFFF 2nd ROM
+       { cout << "Could not open file '" << ROM2 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM3, grom3, 0, 0x8000))      // Load 3rd ROM into its own space
-  { cout << "Could not open file '" << ROM3 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM3, grom3, 0, 0x8000))      // Load 3rd ROM into its own space
+       { cout << "Could not open file '" << ROM3 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM4, grom4, 0, 0x8000))      // Load 4rd ROM into its own space
-  { cout << "Could not open file '" << ROM4 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM4, grom4, 0, 0x8000))      // Load 4rd ROM into its own space
+       { cout << "Could not open file '" << ROM4 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM17, data_rom, 0,       0x10000))  // Load 17th ROM
-  { cout << "Could not open file '" << ROM17 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM17, data_rom, 0,       0x10000))  // Load 17th ROM
+       { cout << "Could not open file '" << ROM17 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM18, data_rom, 0x10000, 0x10000))  // Load 18th ROM
-  { cout << "Could not open file '" << ROM18 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM18, data_rom, 0x10000, 0x10000))  // Load 18th ROM
+       { cout << "Could not open file '" << ROM18 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM19, data_rom, 0x20000, 0x10000))  // Load 19th ROM
-  { cout << "Could not open file '" << ROM19 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM19, data_rom, 0x20000, 0x10000))  // Load 19th ROM
+       { cout << "Could not open file '" << ROM19 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM20, data_rom, 0x30000, 0x10000))  // Load 20th ROM
-  { cout << "Could not open file '" << ROM20 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM20, data_rom, 0x30000, 0x10000))  // Load 20th ROM
+       { cout << "Could not open file '" << ROM20 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM9,  spr_rom, 0,       0x10000))   // Load 9th ROM
-  { cout << "Could not open file '" << ROM9 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM9,  spr_rom, 0,       0x10000))   // Load 9th ROM
+       { cout << "Could not open file '" << ROM9 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM10, spr_rom, 0x10000, 0x10000))   // Load 10th ROM
-  { cout << "Could not open file '" << ROM10 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM10, spr_rom, 0x10000, 0x10000))   // Load 10th ROM
+       { cout << "Could not open file '" << ROM10 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM11, spr_rom, 0x20000, 0x10000))   // Load 11th ROM
-  { cout << "Could not open file '" << ROM11 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM11, spr_rom, 0x20000, 0x10000))   // Load 11th ROM
+       { cout << "Could not open file '" << ROM11 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM12, spr_rom, 0x30000, 0x10000))   // Load 12th ROM
-  { cout << "Could not open file '" << ROM12 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM12, spr_rom, 0x30000, 0x10000))   // Load 12th ROM
+       { cout << "Could not open file '" << ROM12 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM13, spr_rom, 0x40000, 0x10000))   // Load 13th ROM
-  { cout << "Could not open file '" << ROM13 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM13, spr_rom, 0x40000, 0x10000))   // Load 13th ROM
+       { cout << "Could not open file '" << ROM13 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM14, spr_rom, 0x50000, 0x10000))   // Load 14th ROM
-  { cout << "Could not open file '" << ROM14 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM14, spr_rom, 0x50000, 0x10000))   // Load 14th ROM
+       { cout << "Could not open file '" << ROM14 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM15, spr_rom, 0x60000, 0x10000))   // Load 15th ROM
-  { cout << "Could not open file '" << ROM15 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM15, spr_rom, 0x60000, 0x10000))   // Load 15th ROM
+       { cout << "Could not open file '" << ROM15 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM16, spr_rom, 0x70000, 0x10000))   // Load 16th ROM
-  { cout << "Could not open file '" << ROM16 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM16, spr_rom, 0x70000, 0x10000))   // Load 16th ROM
+       { cout << "Could not open file '" << ROM16 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM21, voice_rom, 0, 0x10000))  // Load 21st ROM
-  { cout << "Could not open file '" << ROM21 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM21, voice_rom, 0, 0x10000))  // Load 21st ROM
+       { cout << "Could not open file '" << ROM21 << "'!" << endl;  return -1; }
 
-  if (!LoadImg(ROM22, voice_rom, 0x10000, 0x10000))  // Load 22nd ROM
-  { cout << "Could not open file '" << ROM22 << "'!" << endl;  return -1; }
+       if (!LoadImg(ROM22, voice_rom, 0x10000, 0x10000))  // Load 22nd ROM
+       { cout << "Could not open file '" << ROM22 << "'!" << endl;  return -1; }
 
-  if (!UnpackFonts())                         // Load 5, 6, 7, 8th ROMs
-  {
-    cout << "Could not open font files!" << endl;
-    return -1;
-  }
+       if (!UnpackFonts())                         // Load 5, 6, 7, 8th ROMs
+       {
+               cout << "Could not open font files!" << endl;
+               return -1;
+       }
 
        // Load samples if they're there...
        LoadPSGs();
        LoadFMs();
 
   // Quick 'n' Dirty voice dump (sound 0x0E)
-/*  uint32 adc = (voice_rom[26]<<8) | voice_rom[27];
+/*  uint32_t adc = (voice_rom[26]<<8) | voice_rom[27];
   bool doneWitIt = false;
   int crh = 0;
   while (!doneWitIt)
@@ -1123,7 +1152,7 @@ WriteLog("About to go to the main loop...\n");
                                dpc = htod(lbuff);
                        }
                        printf("%04X: ", dpc);
-                       uint16 pc_save = cpu1.pc, pcB_save = cpu2.pc;
+                       uint16_t pc_save = cpu1.pc, pcB_save = cpu2.pc;
                        cpu1.pc = dpc;  cpu2.pc = dpc;
                        for(int i=0; i<16; i++)
                                printf("%02X ", (looking_at_rom ? Fetch() : FetchB()));
@@ -1131,7 +1160,7 @@ WriteLog("About to go to the main loop...\n");
                        cpu1.pc = dpc;  cpu2.pc = dpc;
                        for(int i=0; i<16; i++)
                        {
-                               uint8 a = (looking_at_rom ? Fetch() : FetchB());
+                               uint8_t a = (looking_at_rom ? Fetch() : FetchB());
                                if (a<10)             cout << (char)(a+48);
                                if ((a>9) && (a<37))  cout << (char)(a+55);
                                if (a>36)             cout << ".";
@@ -1148,7 +1177,7 @@ WriteLog("About to go to the main loop...\n");
                                dpc = htod(lbuff);
                        }
                        printf("%04X: ", dpc);
-                       for(int i=0; i<16; i++)  printf("%02X ", (uint8)gram[dpc++]);
+                       for(int i=0; i<16; i++)  printf("%02X ", (uint8_t)gram[dpc++]);
                        cout << endl;
                }
                else if (lbuff[0] == 'l')
@@ -1192,11 +1221,11 @@ WriteLog("About to go to the main loop...\n");
                else if ((lbuff[0] == 'r') || (lbuff[0] == 'c')) // Run/continue...
                {
 WriteLog("Executing 'run' command...\n");
-                       uint32 my_clock = 0;
+                       uint32_t my_clock = 0;
                        running = true;                                                         // Set running status...
                        trace1 = false;
                        SetRefreshRate(refresh2);                                       // Tell GUI our refresh rate
-      //for(uint16 i=0; i<0x8000; i++)  gram2[i] = grom3[i]; //Temp
+      //for(uint16_t i=0; i<0x8000; i++)  gram2[i] = grom3[i]; //Temp
 
                        if (lbuff[0] == 'r')                                            // If run, then reset CPUs
                        {
@@ -1240,9 +1269,6 @@ WriteLog("--> CPU clock #1: %u\n", cpu1.clock);
                        }
 
 WriteLog("About to set up screen...\n");
-//      if (!SetVESA2())  running = false;        // Set up screen
-                       // Set up screen (windowed)
-//                     screen = SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE); //video_bpp, videoflags);
                        screen = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH * 2, VIRTUAL_SCREEN_HEIGHT * 2, 8, SDL_SWSURFACE  | SDL_DOUBLEBUF);
                        if (screen == NULL)
                        {
@@ -1251,23 +1277,25 @@ WriteLog("About to set up screen...\n");
                        }
 
                        SDL_Color colors[256];
+
                        for(int i=0; i<256; i++)
                        {
                                colors[i].r = palette[i*3+0];
                                colors[i].g = palette[i*3+1];
                                colors[i].b = palette[i*3+2];
                        }
+
                        SDL_SetPalette(screen, SDL_LOGPAL | SDL_PHYSPAL, colors, 0, 256);
 
 #if 0
        // This confirms that we're getting video to the screen...
        SDL_LockSurface(screen);
 
-       uint8 pixel = 0;
-       uint8 * pixels = (uint8 *)(screen->pixels);
+       uint8_t pixel = 0;
+       uint8_t * pixels = (uint8_t *)(screen->pixels);
 
-       for(uint32 y=0; y<480; y++)
-               for(uint32 x=0; x<640; x++)
+       for(uint32_t y=0; y<480; y++)
+               for(uint32_t x=0; x<640; x++)
                        pixels[(y * 640) + x] = pixel++;
 
        SDL_UnlockSurface(screen);
@@ -1294,6 +1322,7 @@ WriteLog("About to set up audio...\n");
                                cout << "Couldn't open audio: " << SDL_GetError() << endl;
                                return -1;
                        }
+
                        SDL_PauseAudio(0);                                                      // Get that audio going!
 
 WriteLog("About to enter main loop...\n");
@@ -1423,7 +1452,7 @@ WriteLog("About to enter main loop...\n");
                                }
                                if (keys[SDLK_RETURN])                                                  // Return
                                {
-                                       uint8 retval = UserSelectedSomething();
+                                       uint8_t retval = UserSelectedSomething();
                                        if (retval == EXIT)
                                                running = false;
                                        if (retval == REFRESH)
@@ -1527,8 +1556,8 @@ WriteLog("About to enter main loop...\n");
 // 640 * 40
 // 800 * 32
 // Interesting, putting IRQs at 30 Hz makes it run at the correct speed. Still hangs in the demo, though.
-                                       for(uint32 i=0; i<640; i++)
-//                                     for(uint32 i=0; i<1280; i++)
+                                       for(uint32_t i=0; i<640; i++)
+//                                     for(uint32_t i=0; i<1280; i++)
                                        {
                                                // Gay, but what are ya gonna do?
                                                // There's better ways, such as keeping track of when slave writes to master, etc...
@@ -1602,61 +1631,68 @@ BlitChar(screen, chr_rom, gram1);
                }
                else if (lbuff[0] == 'i')  // Inspect registers
                {
-      printf("CPU1: A=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X",
-              cpu1.a, cpu1.b, cpu1.cc, cpu1.dp, cpu1.x, cpu1.y, cpu1.s, cpu1.u, cpu1.pc);
-      cout << " iclk=" << dec << cpu1.clock << endl;
-      printf("CPU2: A=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X",
-              cpu2.a, cpu2.b, cpu2.cc, cpu2.dp, cpu2.x, cpu2.y, cpu2.s, cpu2.u, cpu2.pc);
-      cout << " iclk=" << dec << cpu2.clock << endl;
-      if (brk)
-        cout << "Breakpoint #1 set at " << hex << brkpnt << dec << endl;
-      if (brk2)
-        cout << "Breakpoint #2 set at " << hex << brkpnt2 << dec << endl;
-    }
+                       printf("CPU1: A=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X",
+                                       cpu1.a, cpu1.b, cpu1.cc, cpu1.dp, cpu1.x, cpu1.y, cpu1.s, cpu1.u, cpu1.pc);
+                       cout << " iclk=" << dec << cpu1.clock << endl;
+                       printf("CPU2: A=%02X B=%02X CC=%02X DP=%02X X=%04X Y=%04X S=%04X U=%04X PC=%04X",
+                                       cpu2.a, cpu2.b, cpu2.cc, cpu2.dp, cpu2.x, cpu2.y, cpu2.s, cpu2.u, cpu2.pc);
+                       cout << " iclk=" << dec << cpu2.clock << endl;
+
+                       if (brk)
+                               cout << "Breakpoint #1 set at " << hex << brkpnt << dec << endl;
+
+                       if (brk2)
+                               cout << "Breakpoint #2 set at " << hex << brkpnt2 << dec << endl;
+               }
                else if (strncmp(lbuff, "swap", 4) == 0)  // Swap ROMs
-    {
-      looking_at_rom = !looking_at_rom;
-      cout << "Swapped:  Looking at ";
-      (looking_at_rom ? cout << "ROM #1" : cout << "ROM #2");
-      cout << endl;
-    }
+               {
+                       looking_at_rom = !looking_at_rom;
+                       cout << "Swapped:  Looking at ";
+                       (looking_at_rom ? cout << "ROM #1" : cout << "ROM #2");
+                       cout << endl;
+               }
                else if (strncmp(lbuff, "seek", 4) == 0)  // Seek non-zero bytes in RAM
-    {
-      if (lbuff[4] != 0)
-      {
-        for(int i=0; i<4; i++)
-          lbuff[i] = 32;
-        dpc = htod(lbuff);
-      }
-      do
-      {
-        x = gram1[dpc++];
-      }
-      while ((x == 0) && (dpc != 0xFFFF)); // Keep going until something found
-      dpc--;
-
-      printf("%04X: ", dpc);       // Show data found...
-      for(int i=0; i<16; i++)
-        printf("%02X ", gram1[(uint16)(dpc+i)]);
-      cout << " ";
-      for(int i=0; i<16; i++)
-      {
-        uint8 a = gram1[dpc++];
-        if (a<10)
-          cout << (char)(a+48);
-        if ((a>9) && (a<37))
-          cout << (char)(a+55);
-        if (a>36)
-          cout << ".";
-      }
-      cout << endl;
-    }
+               {
+
+                       if (lbuff[4] != 0)
+                       {
+                               for(int i=0; i<4; i++)
+                               lbuff[i] = 32;
+                               dpc = htod(lbuff);
+                       }
+
+                       do
+                       {
+                               x = gram1[dpc++];
+                       }
+                       while ((x == 0) && (dpc != 0xFFFF)); // Keep going until something found
+                       dpc--;
+
+                       printf("%04X: ", dpc);       // Show data found...
+
+                       for(int i=0; i<16; i++)
+                               printf("%02X ", gram1[(uint16_t)(dpc+i)]);
+
+                       cout << " ";
+
+                       for(int i=0; i<16; i++)
+                       {
+                               uint8_t a = gram1[dpc++];
+
+                               if (a<10)
+                                       cout << (char)(a+48);
+                               if ((a>9) && (a<37))
+                                       cout << (char)(a+55);
+                               if (a>36)
+                                       cout << ".";
+                       }
+
+                       cout << endl;
+               }
                else if (lbuff[0] == 'v')    // View screen
                {
-//                     SetVESA2();                           // Set up screen
                        BlitChar(screen, chr_rom, gram1);
                        getch();
-//                     RestoreOldMode();
                }
 
                if (lbuff[0] == 'q')
@@ -1688,12 +1724,14 @@ Rolling Thunder Memory map
 Most of the decoding is done by custom chips (CUS47 and CUS41), so the memory
 map is inferred by program behaviour. The customs also handle internally irq
 and watchdog.
+
 The main CPU memory map is the same in all games because CUS47 is used by all
 games. The sub CPU and sound CPU, on the other hand, change because CUS41 is
 replaced by other chips.
-All RAM is shared between main and sub CPU, except for sound RAM which is shared
-between main and sound CPU; the portion of object RAM that is overlapped by sound
-RAM is used exclusively by the sub CPU.
+
+All RAM is shared between main and sub CPU, except for sound RAM which is
+shared between main and sound CPU; the portion of object RAM that is overlapped
+by sound RAM is used exclusively by the sub CPU.
 
 MAIN CPU:
 
@@ -1804,3 +1842,4 @@ TODO:
   stop receiving interrupts.
 
 #endif
+
diff --git a/src/types.h b/src/types.h
deleted file mode 100644 (file)
index 51bcbcd..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// TYPES.H
-//
-// by James L. Hammons
-// (C) 2009 Underground Software
-//
-// Now that C/C++ has stardard sizes, this is much more precise. We still do
-// this because we don't like typing _t on the back of our types. :-)
-//
-
-#ifndef __TYPES_H__
-#define __TYPES_H__
-
-#include <stdint.h>
-
-typedef uint8_t                uint8;
-typedef int8_t         int8;
-typedef uint16_t       uint16;
-typedef int16_t                int16;
-typedef uint32_t       uint32;
-typedef int32_t                int32;
-typedef uint64_t       uint64;
-typedef int64_t                int64;
-
-#endif // __TYPES_H__
index 2022e90c067f8ecaa37e282f1d5e3df899f8426b..0f9860df29ee0d4fefb72bc31952500984bc5c61 100644 (file)
@@ -1,13 +1,13 @@
 //
 // Virtual 6808 Emulator v2.0
 //
-// by James L. Hammons
+// by James Hammons
 // (C) 2006 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/13/2006  Converted core to V65C02 macro style :-)
@@ -19,7 +19,7 @@
 // NOTE: V6808_STATE_WAI is not handled in the main loop correctly. !!! FIX !!!
 
 // Some random thoughts: Could there be a performance gain by breaking
-// out the flags in regs.cc into separate uint8 variables (or bools)?
+// out the flags in regs.cc into separate uint8_t variables (or bools)?
 // You'd have to convert on entering and exiting the emulation loop, but I
 // think the perfomance hit would be negligible compared to the gain in not
 // having to mask and shift flags all the time. Investigate after the
 #define SET_N(r)                               (flagN = ((r) & 0x80) >> 7)
 #define SET_V(a,b,r)                   (flagV = (((b) ^ (a) ^ (r) ^ ((r) >> 1)) & 0x80) >> 7)
 
-#define SET_C_CMP(a,b)                 (flagC = ((uint8)(b) < (uint8)(a) ? 1 : 0))
+#define SET_C_CMP(a,b)                 (flagC = ((uint8_t)(b) < (uint8_t)(a) ? 1 : 0))
 #define SET_ZN(r)                              SET_N(r); SET_Z(r)
 #define SET_ZNC_ADD(a,b,r)             SET_N(r); SET_Z(r); SET_C_ADD(a,b)
 #define SET_ZNVC_CMP(a,b,r)            SET_N(r); SET_Z(r); SET_C_CMP(a,b); SET_V(a,b,r)
 
 #define SET_N16(r)                             (flagN = ((r) & 0x8000) >> 15)
 #define SET_V16(a,b,r)                 (flagV = (((b) ^ (a) ^ (r) ^ ((r) >> 1)) & 0x8000) >> 15)
-#define SET_C_CMP16(a,b)               (flagC = ((uint16)(b) < (uint16)(a) ? 1 : 0))
+#define SET_C_CMP16(a,b)               (flagC = ((uint16_t)(b) < (uint16_t)(a) ? 1 : 0))
 #define SET_ZNVC_CMP16(a,b,r)  SET_N16(r); SET_Z(r); SET_C_CMP16(a,b); SET_V16(a,b,r)
 
 //Small problem with the EA_ macros: ABS macros don't increment the PC!!! !!! FIX !!! [DONE, kinda]
 #define READ_ZP_X16                    RdMemW(EA_ZP_X)
 #define READ_ABS16                     RdMemW(EA_ABS);                         regs.pc += 2
 
-#define READ_IMM_WB(v)         uint16 addr = EA_IMM;           v = regs.RdMem(addr)
-#define READ_ZP_WB(v)          uint16 addr = EA_ZP;            v = regs.RdMem(addr)
-#define READ_ZP_X_WB(v)                uint16 addr = EA_ZP_X;          v = regs.RdMem(addr)
-#define READ_ABS_WB(v)         uint16 addr = EA_ABS;           v = regs.RdMem(addr); regs.pc += 2
+#define READ_IMM_WB(v)         uint16_t addr = EA_IMM;         v = regs.RdMem(addr)
+#define READ_ZP_WB(v)          uint16_t addr = EA_ZP;          v = regs.RdMem(addr)
+#define READ_ZP_X_WB(v)                uint16_t addr = EA_ZP_X;                v = regs.RdMem(addr)
+#define READ_ABS_WB(v)         uint16_t addr = EA_ABS;         v = regs.RdMem(addr); regs.pc += 2
 
 #define WRITE_BACK(d)          regs.WrMem(addr, (d))
 
@@ -99,9 +99,9 @@
 // Private global variables
 
 static V6808REGS regs;
-static uint8 flagH, flagI, flagN, flagZ, flagV, flagC;
+static uint8_t flagH, flagI, flagN, flagZ, flagV, flagC;
 
-static uint8 CPUCycles[256] = {
+static uint8_t CPUCycles[256] = {
        1,  2,  1,  1,  1,  1,  2,  2,  4,  4,  2,  2,  2,  2,  2,  2,
        2,  2,  1,  1,  1,  1,  2,  2,  1,  2,  1,  2,  1,  1,  1,  1,
        4,  1,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
@@ -122,14 +122,14 @@ static uint8 CPUCycles[256] = {
 
 // Private function prototypes
 
-static uint16 RdMemW(uint16);
+static uint16_t RdMemW(uint16_t);
 
 //
 // Read a word out of 6808 memory (little endian format)
 //
-static inline uint16 RdMemW(uint16 address)
+static inline uint16_t RdMemW(uint16_t address)
 {
-       return (uint16)(regs.RdMem(address) << 8) | regs.RdMem(address + 1);
+       return (uint16_t)(regs.RdMem(address) << 8) | regs.RdMem(address + 1);
 }
 
 //
@@ -152,7 +152,7 @@ Add Accumulators        |ABA  |      |      |      |      |1B 2 1|A=A+B     |T T
 // ADD opcodes
 
 #define OP_ADD_HANDLER(m, acc) \
-       uint16 sum = (uint16)(acc) + (m); \
+       uint16_t sum = (uint16_t)(acc) + (m); \
        flagC = sum >> 8; \
        flagH = (sum >> 4) & 0x01; \
        SET_V(m, acc, sum); \
@@ -161,49 +161,49 @@ Add Accumulators        |ABA  |      |      |      |      |1B 2 1|A=A+B     |T T
 
 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 ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_ADD_HANDLER(m, regs.a);
 }
 
 static void OpAB(void)                                                 // ADDA ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        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 OpCB(void)                                                 // ADDB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpDB(void)                                                 // ADDB ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpEB(void)                                                 // ADDB ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        OP_ADD_HANDLER(m, regs.b);
 }
 
 static void OpFB(void)                                                 // ADDB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_ADD_HANDLER(m, regs.b);
 }
 
@@ -222,7 +222,7 @@ Add with Carry          |ADCA |89 2 2|99 3 2|A9 5 2|B9 4 3|      |A=A+M+C   |T T
 // 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; \
        flagH = (sum >> 4) & 0x01; \
        SET_V(m, acc, sum); \
@@ -231,49 +231,49 @@ Add with Carry          |ADCA |89 2 2|99 3 2|A9 5 2|B9 4 3|      |A=A+M+C   |T T
 
 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 ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_ADC_HANDLER(m, regs.a);
 }
 
 static void OpA9(void)                                                 // ADCA ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        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 ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_ADC_HANDLER(m, regs.b);
 }
 
 static void OpE9(void)                                                 // ADCB ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        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);
 }
 
@@ -293,49 +293,49 @@ And                     |ANDA |84 2 2|94 3 2|A4 5 2|B4 4 3|      |A=A+M     |  T
 
 static void Op84(void)                                                 // ANDA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void Op94(void)                                                 // ANDA ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_AND_HANDLER(m, regs.a);
 }
 
 static void OpA4(void)                                                 // ANDA ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        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 #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_AND_HANDLER(m, regs.b);
 }
 
 static void OpD4(void)                                                 // ANDB ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_AND_HANDLER(m, regs.b);
 }
 
 static void OpE4(void)                                                 // ANDB ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        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);
 }
 
@@ -349,54 +349,54 @@ Bit Test                |BITA |85 2 2|95 3 2|A5 5 2|B5 4 3|      |A+M       |  T
 // BIT opcodes
 
 #define OP_BIT_HANDLER(m, acc) \
-       int8 result = acc & (m); \
+       int8_t result = acc & (m); \
        SET_ZN(result)
 
 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 ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_BIT_HANDLER(m, regs.a);
 }
 
 static void OpA5(void)                                                 // BITA ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        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 ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_BIT_HANDLER(m, regs.b);
 }
 
 static void OpE5(void)                                                 // BITB ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        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);
 }
 
@@ -454,54 +454,54 @@ Compare sets flags as if a subtraction had been carried out. If the value in the
 */
 
 #define OP_CMP_HANDLER(m, acc) \
-       uint16 result = acc - (m); \
+       uint16_t result = acc - (m); \
        SET_ZNVC_CMP(m, acc, result)
 
 static void Op81(void)                                                 // CMPA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void Op91(void)                                                 // CMPA ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void OpA1(void)                                                 // CMPA ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 static void OpB1(void)                                                 // CMPA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_CMP_HANDLER(m, regs.a);
 }
 
 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 ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_CMP_HANDLER(m, regs.b);
 }
 
 static void OpE1(void)                                                 // CMPB ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        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);
 }
 
@@ -528,7 +528,7 @@ Complement 1's          |COM  |      |      |63 7 2|73 6 3|      |M=-M      |  T
 
 static void Op63(void)                                                 // COM ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_COM_HANDLER(m);
        WRITE_BACK(m);
@@ -536,7 +536,7 @@ static void Op63(void)                                                      // COM ZP, X
 
 static void Op73(void)                                                 // COM ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_COM_HANDLER(m);
        WRITE_BACK(m);
@@ -570,7 +570,7 @@ Complement 2's          |NEG  |      |      |60 7 2|70 6 3|      |M=00-M    |  T
 
 static void Op60(void)                                                 // NEG ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_NEG_HANDLER(m);
        WRITE_BACK(m);
@@ -578,7 +578,7 @@ static void Op60(void)                                                      // NEG ZP, X
 
 static void Op70(void)                                                 // NEG ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_NEG_HANDLER(m);
        WRITE_BACK(m);
@@ -602,7 +602,7 @@ Decimal Adjust          |DAA  |      |      |      |      |19 2 1|*         |  T
 
 static void Op19(void)                                                 // DAA
 {
-       uint16 result = (uint16)regs.a;
+       uint16_t result = (uint16_t)regs.a;
 
        if ((regs.a & 0x0F) > 0x09 || flagH)
                result += 0x06;
@@ -610,7 +610,7 @@ static void Op19(void)                                                      // DAA
        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;                                                                          // Not sure this is correct...
        flagC |= (result & 0x100) >> 8;                         // Overwrite carry if it was 0, otherwise, ignore
@@ -633,7 +633,7 @@ Decrement               |DEC  |      |      |6A 7 2|7A 6 3|      |M=M-1     |  T
 
 static void Op6A(void)                                                 // DEC ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_DEC_HANDLER(m);
        WRITE_BACK(m);
@@ -641,7 +641,7 @@ static void Op6A(void)                                                      // DEC ZP, X
 
 static void Op7A(void)                                                 // DEC ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_DEC_HANDLER(m);
        WRITE_BACK(m);
@@ -673,49 +673,49 @@ Exclusive OR            |EORA |88 2 2|98 3 2|A8 5 2|B8 4 3|      |A=A(+)M   |  T
 
 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 ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_EOR_HANDLER(m, regs.a);
 }
 
 static void OpA8(void)                                                 // EORA ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        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 ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_EOR_HANDLER(m, regs.b);
 }
 
 static void OpE8(void)                                                 // EORB ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        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);
 }
 
@@ -736,7 +736,7 @@ Increment               |INC  |      |      |6C 7 2|7C 6 3|      |M=M+1     |  T
 
 static void Op6C(void)                                                 // INC ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_INC_HANDLER(m);
        WRITE_BACK(m);
@@ -744,7 +744,7 @@ static void Op6C(void)                                                      // INC ZP, X
 
 static void Op7C(void)                                                 // INC ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_INC_HANDLER(m);
        WRITE_BACK(m);
@@ -776,49 +776,49 @@ Load Accumulator        |LDAA |86 2 2|96 3 2|A6 5 2|B6 4 3|      |A=M       |  T
 
 static void Op86(void)                                                 // LDAA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void Op96(void)                                                 // LDAA ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void OpA6(void)                                                 // LDAA ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void OpB6(void)                                                 // LDAA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_LDA_HANDLER(m, regs.a);
 }
 
 static void OpC6(void)                                                 // LDAB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpD6(void)                                                 // LDAB ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpE6(void)                                                 // LDAB ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        OP_LDA_HANDLER(m, regs.b);
 }
 
 static void OpF6(void)                                                 // LDAB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_LDA_HANDLER(m, regs.b);
 }
 
@@ -838,49 +838,49 @@ OR, Inclusive           |ORAA |8A 2 2|9A 3 2|AA 5 2|BA 4 3|      |A=A+M     |  T
 
 static void Op8A(void)                                                 // ORAA #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_ORA_HANDLER(m, regs.a);
 }
 
 static void Op9A(void)                                                 // ORAA ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_ORA_HANDLER(m, regs.a);
 }
 
 static void OpAA(void)                                                 // ORAA ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        OP_ORA_HANDLER(m, regs.a);
 }
 
 static void OpBA(void)                                                 // ORAA ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_ORA_HANDLER(m, regs.a);
 }
 
 static void OpCA(void)                                                 // ORAB #
 {
-       uint8 m = READ_IMM;
+       uint8_t m = READ_IMM;
        OP_ORA_HANDLER(m, regs.b);
 }
 
 static void OpDA(void)                                                 // ORAB ZP
 {
-       uint8 m = READ_ZP;
+       uint8_t m = READ_ZP;
        OP_ORA_HANDLER(m, regs.b);
 }
 
 static void OpEA(void)                                                 // ORAB ZP, X
 {
-       uint8 m = READ_ZP_X;
+       uint8_t m = READ_ZP_X;
        OP_ORA_HANDLER(m, regs.b);
 }
 
 static void OpFA(void)                                                 // ORAB ABS
 {
-       uint8 m = READ_ABS;
+       uint8_t m = READ_ABS;
        OP_ORA_HANDLER(m, regs.b);
 }
 
@@ -924,7 +924,7 @@ Rotate Left             |ROL  |      |      |69 7 2|79 6 3|      |Memory  *1|  T
 // ROL opcodes
 
 #define OP_ROL_HANDLER(m) \
-       uint8 newCarry = (m & 0x80) >> 7; \
+       uint8_t newCarry = (m & 0x80) >> 7; \
        m = (m << 1) | flagC; \
        SET_ZN(m); \
        flagC = newCarry; \
@@ -932,7 +932,7 @@ Rotate Left             |ROL  |      |      |69 7 2|79 6 3|      |Memory  *1|  T
 
 static void Op69(void)                                                 // ROL ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_ROL_HANDLER(m);
        WRITE_BACK(m);
@@ -940,7 +940,7 @@ static void Op69(void)                                                      // ROL ZP, X
 
 static void Op79(void)                                                 // ROL ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ROL_HANDLER(m);
        WRITE_BACK(m);
@@ -967,7 +967,7 @@ Rotate Right            |ROR  |      |      |66 7 2|76 6 3|      |Memory  *2|  T
 // ROR opcodes
 
 #define OP_ROR_HANDLER(m) \
-       uint8 newCarry = m & 0x01; \
+       uint8_t newCarry = m & 0x01; \
        m = (m >> 1) | (flagC << 7); \
        SET_ZN(m); \
        flagC = newCarry; \
@@ -975,7 +975,7 @@ Rotate Right            |ROR  |      |      |66 7 2|76 6 3|      |Memory  *2|  T
 
 static void Op66(void)                                                 // ROR ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_ROR_HANDLER(m);
        WRITE_BACK(m);
@@ -983,7 +983,7 @@ static void Op66(void)                                                      // ROR ZP, X
 
 static void Op76(void)                                                 // ROR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ROR_HANDLER(m);
        WRITE_BACK(m);
@@ -1010,7 +1010,7 @@ Arithmetic Shift Left   |ASL  |      |      |68 7 2|78 6 3|      |Memory  *3|  T
 // ASL opcodes
 
 #define OP_ASL_HANDLER(m) \
-       uint8 newCarry = (m & 0x80) >> 7; \
+       uint8_t newCarry = (m & 0x80) >> 7; \
        m <<= 1; \
        SET_ZN(m); \
        flagC = newCarry; \
@@ -1018,7 +1018,7 @@ Arithmetic Shift Left   |ASL  |      |      |68 7 2|78 6 3|      |Memory  *3|  T
 
 static void Op68(void)                                                 // ASL ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_ASL_HANDLER(m);
        WRITE_BACK(m);
@@ -1026,7 +1026,7 @@ static void Op68(void)                                                    // ASL ZP, X
 
 static void Op78(void)                                                 // ASL ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ASL_HANDLER(m);
        WRITE_BACK(m);
@@ -1053,7 +1053,7 @@ Arithmetic Shift Right  |ASR  |      |      |67 7 2|77 6 3|      |Memory  *4|  T
 // ASR opcodes
 
 #define OP_ASR_HANDLER(m) \
-       uint8 newCarry = m & 0x01; \
+       uint8_t newCarry = m & 0x01; \
        m = (m >> 1) | (m & 0x80); \
        SET_ZN(m); \
        flagC = newCarry; \
@@ -1061,7 +1061,7 @@ Arithmetic Shift Right  |ASR  |      |      |67 7 2|77 6 3|      |Memory  *4|  T
 
 static void Op67(void)                                                 // ASR ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_ASR_HANDLER(m);
        WRITE_BACK(m);
@@ -1069,7 +1069,7 @@ static void Op67(void)                                                    // ASR ZP, X
 
 static void Op77(void)                                                 // ASR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_ASR_HANDLER(m);
        WRITE_BACK(m);
@@ -1096,7 +1096,7 @@ Logic Shift Right       |LSR  |      |      |64 7 2|74 6 3|      |Memory  *5|  T
 // LSR opcodes
 
 #define OP_LSR_HANDLER(m) \
-       uint8 newCarry = m & 0x01; \
+       uint8_t newCarry = m & 0x01; \
        m >>= 1; \
        SET_ZN(m); \
        flagC = newCarry; \
@@ -1104,7 +1104,7 @@ Logic Shift Right       |LSR  |      |      |64 7 2|74 6 3|      |Memory  *5|  T
 
 static void Op64(void)                                                 // LSR ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_LSR_HANDLER(m);
        WRITE_BACK(m);
@@ -1112,7 +1112,7 @@ static void Op64(void)                                                    // LSR ZP, X
 
 static void Op74(void)                                                 // LSR ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_LSR_HANDLER(m);
        WRITE_BACK(m);
@@ -1178,57 +1178,57 @@ Subtract Accumulators   |SBA  |      |      |      |      |10 2 1|A=A-B     |  T
 // SUB opcodes
 
 #define OP_SUB_HANDLER(m, acc) \
-       uint16 sum = (uint16)acc - (m); \
+       uint16_t sum = (uint16_t)acc - (m); \
        flagC = sum >> 15; \
        SET_V(m, acc, sum); \
-       acc = (uint8)sum; \
+       acc = (uint8_t)sum; \
        SET_ZN(acc)
 
 static void Op80(void)                                                 // SUBA #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void Op90(void)                                                 // SUBA ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void OpA0(void)                                                 // SUBA ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void OpB0(void)                                                 // SUBA ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_SUB_HANDLER(m, regs.a);
 }
 
 static void OpC0(void)                                                 // SUBB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpD0(void)                                                 // SUBB ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpE0(void)                                                 // SUBB ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        OP_SUB_HANDLER(m, regs.b);
 }
 
 static void OpF0(void)                                                 // SUBB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_SUB_HANDLER(m, regs.b);
 }
 
@@ -1247,57 +1247,57 @@ Subtract with Carry     |SBCA |82 2 2|92 3 2|A2 5 2|B2 4 3|      |A=A-M-C   |  T
 // 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 >> 15; \
        SET_V(m, acc, sum); \
-       acc = (uint8)sum; \
+       acc = (uint8_t)sum; \
        SET_ZN(acc)
 
 static void Op82(void)                                                 // SBCA #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void Op92(void)                                                 // SBCA ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpA2(void)                                                 // SBCA ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpB2(void)                                                 // SBCA ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_SBC_HANDLER(m, regs.a);
 }
 
 static void OpC2(void)                                                 // SBCB #
 {
-       uint16 m = READ_IMM;
+       uint16_t m = READ_IMM;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpD2(void)                                                 // SBCB ZP
 {
-       uint16 m = READ_ZP;
+       uint16_t m = READ_ZP;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpE2(void)                                                 // SBCB ZP, X
 {
-       uint16 m = READ_ZP_X;
+       uint16_t m = READ_ZP_X;
        OP_SBC_HANDLER(m, regs.b);
 }
 
 static void OpF2(void)                                                 // SBCB ABS
 {
-       uint16 m = READ_ABS;
+       uint16_t m = READ_ABS;
        OP_SBC_HANDLER(m, regs.b);
 }
 
@@ -1338,7 +1338,7 @@ Test, Zero/Minus        |TST  |      |      |6D 7 2|7D 6 3|      |M-00      |  T
 
 static void Op6D(void)                                                 // TST ZP, X
 {
-       uint8 m;
+       uint8_t m;
        READ_ZP_X_WB(m);
        OP_TST_HANDLER(m);
        WRITE_BACK(m);
@@ -1346,7 +1346,7 @@ static void Op6D(void)                                                    // TST ZP, X
 
 static void Op7D(void)                                                 // TST ABS
 {
-       uint8 m;
+       uint8_t m;
        READ_ABS_WB(m);
        OP_TST_HANDLER(m);
        WRITE_BACK(m);
@@ -1375,30 +1375,30 @@ Compare sets flags as if a subtraction had been carried out. If the value in the
 */
 
 #define OP_CPX_HANDLER(m) \
-       uint32 result = regs.x - (m); \
+       uint32_t result = regs.x - (m); \
        SET_ZNVC_CMP16(m, regs.x, result)
 
 static void Op8C(void)                                                 // CPX #
 {
-       uint16 m = READ_IMM16;
+       uint16_t m = READ_IMM16;
        OP_CPX_HANDLER(m);
 }
 
 static void Op9C(void)                                                 // CPX ZP
 {
-       uint16 m = READ_ZP16;
+       uint16_t m = READ_ZP16;
        OP_CPX_HANDLER(m);
 }
 
 static void OpAC(void)                                                 // CPX ZP, X
 {
-       uint16 m = READ_ZP_X16;
+       uint16_t m = READ_ZP_X16;
        OP_CPX_HANDLER(m);
 }
 
 static void OpBC(void)                                                 // CPX ABS
 {
-       uint16 m = READ_ABS16;
+       uint16_t m = READ_ABS16;
        OP_CPX_HANDLER(m);
 }
 
@@ -1513,38 +1513,38 @@ Store Stack Pointer     |STS  |      |9F 5 2|AF 7 2|BF 6 3|      |Formula 5 |  9
 
 static void OpDF(void)                                                 // STX ZP
 {
-       uint16 m = EA_ZP;
+       uint16_t m = EA_ZP;
        OP_ST_HANDLER(m, regs.x);
 }
 
 static void OpEF(void)                                                 // STX ZP, X
 {
-       uint16 m = EA_ZP_X;
+       uint16_t m = EA_ZP_X;
        OP_ST_HANDLER(m, regs.x);
 }
 
 static void OpFF(void)                                                 // STX ABS
 {
-       uint16 m = EA_ABS;
+       uint16_t m = EA_ABS;
        regs.pc += 2;
        OP_ST_HANDLER(m, regs.x);
 }
 
 static void Op9F(void)                                                 // STS ZP
 {
-       uint16 m = EA_ZP;
+       uint16_t m = EA_ZP;
        OP_ST_HANDLER(m, regs.s);
 }
 
 static void OpAF(void)                                                 // STS ZP, X
 {
-       uint16 m = EA_ZP_X;
+       uint16_t m = EA_ZP_X;
        OP_ST_HANDLER(m, regs.s);
 }
 
 static void OpBF(void)                                                 // STS ABS
 {
-       uint16 m = EA_ABS;
+       uint16_t m = EA_ABS;
        regs.pc += 2;
        OP_ST_HANDLER(m, regs.s);
 }
@@ -1588,7 +1588,7 @@ Plus                    |BPL  |      |2A 4 2|      |      |      |N=0       |
 
 static void Op20(void)                                                 // BRA
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
        regs.pc += m;
 }
 
@@ -1597,7 +1597,7 @@ static void Op24(void)                                                    // BCC
 // NOTE: We can optimize this by following the maxim: "Don't branch!" by converting the boolean
 //       result into a multiplication. The only way to know if this is a win is to do some profiling
 //       both with and without the optimization.
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
 //Note sure if the ! operator will do what we want, so we use ^ 1
@@ -1610,7 +1610,7 @@ static void Op24(void)                                                    // BCC
 
 static void Op25(void)                                                 // BCS
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagC);
@@ -1622,7 +1622,7 @@ static void Op25(void)                                                    // BCS
 
 static void Op27(void)                                                 // BEQ
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagZ);
@@ -1634,7 +1634,7 @@ static void Op27(void)                                                    // BEQ
 
 static void Op2C(void)                                                 // BGE
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * ((flagN ^ flagV) ^ 0x01);
@@ -1646,7 +1646,7 @@ static void Op2C(void)                                                    // BGE
 
 static void Op2E(void)                                                 // BGT
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * ((flagZ | (flagN ^ flagV)) ^ 0x01);
@@ -1658,7 +1658,7 @@ static void Op2E(void)                                                    // BGT
 
 static void Op22(void)                                                 // BHI
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * ((flagZ | flagC) ^ 0x01);
@@ -1670,7 +1670,7 @@ static void Op22(void)                                                    // BHI
 
 static void Op2F(void)                                                 // BLE
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagZ | (flagN ^ flagV));
@@ -1682,7 +1682,7 @@ static void Op2F(void)                                                    // BLE
 
 static void Op23(void)                                                 // BLS
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagZ | flagC);
@@ -1694,7 +1694,7 @@ static void Op23(void)                                                    // BLS
 
 static void Op2D(void)                                                 // BLT
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagN ^ flagV);
@@ -1706,7 +1706,7 @@ static void Op2D(void)                                                    // BLT
 
 static void Op2B(void)                                                 // BMI
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagN);
@@ -1718,7 +1718,7 @@ static void Op2B(void)                                                    // BMI
 
 static void Op26(void)                                                 // BNE
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagZ ^ 0x01);
@@ -1730,7 +1730,7 @@ static void Op26(void)                                                    // BNE
 
 static void Op28(void)                                                 // BVC
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagV ^ 0x01);
@@ -1742,7 +1742,7 @@ static void Op28(void)                                                    // BVC
 
 static void Op29(void)                                                 // BVS
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagV);
@@ -1754,7 +1754,7 @@ static void Op29(void)                                                    // BVS
 
 static void Op2A(void)                                                 // BPL
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
 
 #ifdef TEST_DONT_BRANCH_OPTIMIZATION
        regs.pc += m * (flagN ^ 0x01);
@@ -1774,7 +1774,7 @@ Jump to Subroutine      |JSR  |      |      |AD 8 2|BD 9 3|      |          |
 
 static void Op8D(void)                                                 // BSR
 {
-       int16 m = (int16)(int8)READ_IMM;
+       int16_t m = (int16_t)(int8_t)READ_IMM;
        PUSH16(regs.pc);
        regs.pc += m;
 }
@@ -1791,14 +1791,14 @@ static void Op7E(void)                                                  // JMP ABS
 
 static void OpAD(void)                                                 // JSR ZP, X
 {
-       uint16 m = EA_ZP_X;
+       uint16_t m = EA_ZP_X;
        PUSH16(regs.pc);
        regs.pc = m;
 }
 
 static void OpBD(void)                                                 // JSR ABS
 {
-       uint16 m = EA_ABS;
+       uint16_t m = EA_ABS;
        regs.pc += 2;
        PUSH16(regs.pc);
        regs.pc = m;
@@ -2003,11 +2003,11 @@ void (* exec_op[256])() = {
 //
 // 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];
 }
 
@@ -2018,13 +2018,13 @@ static bool logGo = false;
 //
 // Function to execute 6808 for "cycles" cycles
 //
-void Execute6808(V6808REGS * context, uint32 cycles)
+void Execute6808(V6808REGS * context, uint32_t cycles)
 {
 #warning "V6808_STATE_WAI is not properly handled yet! !!! FIX !!!"
 #warning "Need to convert from destructive clock to non-destructive. !!! FIX !!!"
 
        myMemcpy(&regs, context, sizeof(V6808REGS));
-       UNPACK_FLAGS;                                                           // Explode flags register into individual uint8s
+       UNPACK_FLAGS;                                                           // Explode flags register into individual uint8_ts
 
        // Execute here...
        while (regs.clock < cycles)
@@ -2033,7 +2033,7 @@ void Execute6808(V6808REGS * context, uint32 cycles)
 if (logGo)
        Decode6808(regs.pc);
 #endif
-               uint8 opcode = regs.RdMem(regs.pc++);
+               uint8_t opcode = regs.RdMem(regs.pc++);
 
 #ifdef __DEBUG__
 //if (!(regs.cpuFlags & V6808_STATE_ILLEGAL_INST))
@@ -2113,7 +2113,7 @@ logGo = true;
 //
 // Get the clock of the currently executing CPU
 //
-uint64 GetCurrentV6808Clock(void)
+uint64_t GetCurrentV6808Clock(void)
 {
        return regs.clock;
 }
index 2b25aee042beaa9498af14590ffe17299066c3d7..196ce3e3dbc61336a3e6667acfab55eb1724a842 100644 (file)
@@ -1,7 +1,7 @@
 //
 // Virtual 6808 Header file
 //
-// by James L. Hammons
+// by James Hammons
 //
 // (C) 2006 Underground Software
 //
@@ -9,7 +9,7 @@
 #ifndef __V6808_H__
 #define __V6808_H__
 
-#include "types.h"
+#include <stdint.h>
 
 // Useful defines
 
 
 struct V6808REGS
 {
-       uint16 pc;                                              // 6808 PC register
-       uint16 x;                                               // 6808 X index register
-       uint16 s;                                               // 6808 System stack pointer
-       uint8 cc;                                               // 6808 Condition Code register
-       uint8 a;                                                // 6808 A register
-       uint8 b;                                                // 6808 B register
-       uint64 clock;                                   // 6808 clock
-       uint8 (* RdMem)(uint16);                // Address of uint8 read routine
-       void (* WrMem)(uint16, uint8);  // Address of uint8 write routine
-       uint32 cpuFlags;                                // v6808 IRQ/RESET flags
-       uint32 clockOverrun;                    // Amount of overflow between runs
+       uint16_t pc;                                    // 6808 PC register
+       uint16_t x;                                             // 6808 X index register
+       uint16_t s;                                             // 6808 System stack pointer
+       uint8_t cc;                                             // 6808 Condition Code register
+       uint8_t a;                                              // 6808 A register
+       uint8_t b;                                              // 6808 B register
+       uint64_t clock;                                 // 6808 clock
+       uint8_t (* RdMem)(uint16_t);    // Address of uint8_t read routine
+       void (* WrMem)(uint16_t, uint8_t);      // Address of uint8_t write routine
+       uint32_t cpuFlags;                              // v6808 IRQ/RESET flags
+       uint32_t clockOverrun;                  // Amount of overflow between runs
 };
 
 // Function prototypes
 
-void Execute6808(V6808REGS *, uint32); // Function to execute 6808 instructions
-uint64 GetCurrentV6808Clock(void);             // Get the clock of the currently executing CPU
-//uint8 GetCCRegister(void);                           // Hmm.
+void Execute6808(V6808REGS *, uint32_t);       // Function to execute 6808 instructions
+uint64_t GetCurrentV6808Clock(void);           // Get the clock of the currently executing CPU
+//uint8_t GetCCRegister(void);                         // Hmm.
 
 #endif // __V6808_H__
+
index 3dd47b5eb20a4872037d96a49fc64d2cc10cf602..862f1a82dc19b9d38e259d770adb12bfb9c3e368 100644 (file)
@@ -1,13 +1,13 @@
 //
 // Virtual 6809 v1.3
 //
-// by James L. Hammons
-// (c) 1997, 2006 Underground Software
+// by James Hammons
+// (c) 1997, 2014 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
@@ -36,9 +36,9 @@
 #define SET_N(r)                       (regs.cc = ((r) & 0x80 ? regs.cc | FLAG_N : regs.cc & ~FLAG_N))
 
 //Not sure that this code is computing the carry correctly... Investigate! [Seems to be]
-#define SET_C_ADD(a,b)         (regs.cc = ((uint8)(b) > (uint8)(~(a)) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
-//#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)         (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
+#define SET_C_ADD(a,b)         (regs.cc = ((uint8_t)(b) > (uint8_t)(~(a)) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
+//#define SET_C_SUB(a,b)               (regs.cc = ((uint8_t)(b) >= (uint8_t)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
+#define SET_C_CMP(a,b)         (regs.cc = ((uint8_t)(b) >= (uint8_t)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))
 #define SET_ZN(r)                      SET_N(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 READ_IND_ZP_Y          regs.RdMem(EA_IND_ZP_Y)
 #define READ_IND_ZP                    regs.RdMem(EA_IND_ZP)
 
-#define READ_IMM_WB(v)         uint16 addr = EA_IMM;      v = regs.RdMem(addr)
-#define READ_ZP_WB(v)          uint16 addr = EA_ZP;       v = regs.RdMem(addr)
-#define READ_ZP_X_WB(v)                uint16 addr = EA_ZP_X;     v = regs.RdMem(addr)
-#define READ_ABS_WB(v)         uint16 addr = EA_ABS;      v = regs.RdMem(addr); regs.pc += 2
-#define READ_ABS_X_WB(v)       uint16 addr = EA_ABS_X;    v = regs.RdMem(addr); regs.pc += 2
-#define READ_ABS_Y_WB(v)       uint16 addr = EA_ABS_Y;    v = regs.RdMem(addr); regs.pc += 2
-#define READ_IND_ZP_X_WB(v)    uint16 addr = EA_IND_ZP_X; v = regs.RdMem(addr)
-#define READ_IND_ZP_Y_WB(v)    uint16 addr = EA_IND_ZP_Y; v = regs.RdMem(addr)
-#define READ_IND_ZP_WB(v)      uint16 addr = EA_IND_ZP;   v = regs.RdMem(addr)
+#define READ_IMM_WB(v)         uint16_t addr = EA_IMM;      v = regs.RdMem(addr)
+#define READ_ZP_WB(v)          uint16_t addr = EA_ZP;       v = regs.RdMem(addr)
+#define READ_ZP_X_WB(v)                uint16_t addr = EA_ZP_X;     v = regs.RdMem(addr)
+#define READ_ABS_WB(v)         uint16_t addr = EA_ABS;      v = regs.RdMem(addr); regs.pc += 2
+#define READ_ABS_X_WB(v)       uint16_t addr = EA_ABS_X;    v = regs.RdMem(addr); regs.pc += 2
+#define READ_ABS_Y_WB(v)       uint16_t addr = EA_ABS_Y;    v = regs.RdMem(addr); regs.pc += 2
+#define READ_IND_ZP_X_WB(v)    uint16_t addr = EA_IND_ZP_X; v = regs.RdMem(addr)
+#define READ_IND_ZP_Y_WB(v)    uint16_t addr = EA_IND_ZP_Y; v = regs.RdMem(addr)
+#define READ_IND_ZP_WB(v)      uint16_t addr = EA_IND_ZP;   v = regs.RdMem(addr)
 
 #define WRITE_BACK(d)          regs.WrMem(addr, (d))
 
 
 static V6809REGS regs;
 //Let's see if we can nuke this shit.
-static uint16 addr;                                                            // Temporary variables common to all funcs...
-static uint8 tmp;
+static uint16_t addr;                                                          // Temporary variables common to all funcs...
+static uint8_t tmp;
 
 // Private function prototypes
 
-static uint16 FetchW(void);
-static uint16 RdMemW(uint16 addr);
-static void WrMemW(uint16 addr, uint16 w);
-static uint16 ReadEXG(uint8);                                  // Read TFR/EXG post byte
-static void WriteEXG(uint8, uint16);                   // Set TFR/EXG data
-static uint16 DecodeReg(uint8);                                        // Decode register data
-static uint16 DecodeIDX(uint8);                                        // Decode IDX data
+static uint16_t FetchW(void);
+static uint16_t RdMemW(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
 
 //static void (* exec_op1[256])();
 //static void (* exec_op2[256])();
@@ -213,9 +213,9 @@ static void (* exec_op2[256])() = {
 // Fetch a word out of 6809 memory (little endian format)
 // This is a leftover from when fetches were separated from garden variety reads...
 //
-static uint16 FetchW()
+static uint16_t FetchW()
 {
-       uint16 w = RdMemW(regs.pc);
+       uint16_t w = RdMemW(regs.pc);
        regs.pc += 2;
        return w;
 }
@@ -223,15 +223,15 @@ static uint16 FetchW()
 //
 // Read word from memory function
 //
-uint16 RdMemW(uint16 addr)
+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);
 }
 
 //
 // Write word to memory function
 //
-void WrMemW(uint16 addr, uint16 w)
+void WrMemW(uint16_t addr, uint16_t w)
 {
        regs.WrMem(addr + 0, w >> 8);
        regs.WrMem(addr + 1, w & 0xFF);
@@ -240,9 +240,9 @@ void WrMemW(uint16 addr, uint16 w)
 //
 // Function to read TFR/EXG post byte
 //
-uint16 ReadEXG(uint8 code)
+uint16_t ReadEXG(uint8_t code)
 {
-       uint16 retval;
+       uint16_t retval;
 
        switch (code)
        {
@@ -286,7 +286,7 @@ uint16 ReadEXG(uint8 code)
 //
 // Function to set TFR/EXG data
 //
-void WriteEXG(uint8 code, uint16 data)
+void WriteEXG(uint8_t code, uint16_t data)
 {
        switch (code)
        {
@@ -316,9 +316,9 @@ void WriteEXG(uint8 code, uint16 data)
 //
 // Function to decode register data
 //
-uint16 DecodeReg(uint8 reg)
+uint16_t DecodeReg(uint8_t reg)
 {
-       uint16 retval;
+       uint16_t retval;
 
        switch (reg)
        {
@@ -338,10 +338,10 @@ uint16 DecodeReg(uint8 reg)
 //
 // Function to decode IDX data
 //
-uint16 DecodeIDX(uint8 code)
+uint16_t DecodeIDX(uint8_t code)
 {
-       uint16 addr, woff;
-       uint8 reg = (code & 0x60) >> 5, idxind = (code & 0x10) >> 4, lo_nyb = code & 0x0F;
+       uint16_t addr, woff;
+       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);
@@ -378,15 +378,15 @@ uint16 DecodeIDX(uint8 code)
                                addr = RdMemW(woff);
                                break;
                        case 5:
-                               woff = DecodeReg(reg) + (int16)(int8)regs.b;
+                               woff = DecodeReg(reg) + (int16_t)(int8_t)regs.b;
                                addr = RdMemW(woff);
                                break;
                        case 6:
-                               woff = DecodeReg(reg) + (int16)(int8)regs.a;
+                               woff = DecodeReg(reg) + (int16_t)(int8_t)regs.a;
                                addr = RdMemW(woff);
                                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);
                                break;
                        case 9:
@@ -398,7 +398,7 @@ uint16 DecodeIDX(uint8 code)
                                addr = RdMemW(woff);
                                break;
                        case 12:
-                               woff = regs.pc + (int16)(int8)regs.RdMem(regs.pc++);
+                               woff = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc++);
                                addr = RdMemW(woff);
                                break;
                        case 13:
@@ -452,12 +452,12 @@ uint16 DecodeIDX(uint8 code)
                    }
                    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 5:  { addr = DecodeReg(reg) + (int16_t)(int8_t)regs.b;  break; }
+        case 6:  { addr = DecodeReg(reg) + (int16_t)(int8_t)regs.a;  break; }
+        case 8:  { addr = DecodeReg(reg) + (int16_t)(int8_t)regs.RdMem(regs.pc++);  break; }
         case 9:  { addr = DecodeReg(reg) + FetchW();  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 12: { addr = regs.pc + (int16_t)(int8_t)regs.RdMem(regs.pc++);  break; }
         case 13: { addr = regs.pc + FetchW();  break; }
                        }
                }
@@ -514,7 +514,7 @@ static void Op04(void)  // LSR DP
 }
 static void Op06(void)  // ROR DP
 {
-  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8 tmp2 = regs.RdMem(addr);
+  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8_t tmp2 = regs.RdMem(addr);
   tmp = (tmp2>>1) + (regs.cc&0x01)*128;
   regs.WrMem(addr, tmp);
   (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -546,7 +546,7 @@ static void Op08(void)  // LSL DP
 }
 static void Op09(void)  // ROL DP
 {
-  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8 tmp2 = regs.RdMem(addr);
+  addr = (regs.dp<<8) | regs.RdMem(regs.pc++);  uint8_t tmp2 = regs.RdMem(addr);
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -626,7 +626,7 @@ static void Op16(void)                                                      // LBRA
 
 static void Op17(void)                                                 // LBSR
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
        regs.WrMem(--regs.s, regs.pc & 0xFF);
        regs.WrMem(--regs.s, regs.pc >> 8);
 //     regs.pc += SignedW(addr);
@@ -638,7 +638,7 @@ static void Op17(void)                                                      // LBSR
 static void Op19(void)  // DAA
 {
 #if 0
-       uint8 result = regs.a;
+       uint8_t result = regs.a;
 
        if ((regs.cc&0x20) || ((regs.a&0x0F) > 0x09))    // H set or lo nyb too big?
        {
@@ -660,7 +660,7 @@ static void Op19(void)  // DAA
        if (regs.a == 0)  regs.cc |= 0x04;               // Adjust Zero flag
        if (regs.a&0x80)  regs.cc |= 0x08;               // Adjust Negative flag
 #else
-       uint16 result = (uint16)regs.a;
+       uint16_t result = (uint16_t)regs.a;
 
        if ((regs.a & 0x0F) > 0x09 || (regs.cc & FLAG_H))
                result += 0x06;
@@ -668,7 +668,7 @@ static void Op19(void)  // DAA
        if ((regs.a & 0xF0) > 0x90 || (regs.cc & FLAG_C) || ((regs.a & 0xF0) > 0x80 && (regs.a & 0x0F) > 0x09))
                result += 0x60;
 
-       regs.a = (uint8)result;
+       regs.a = (uint8_t)result;
 //     SET_ZN(result);
 //     CLR_V;                                                                          // Not sure this is correct...
        regs.cc &= 0xF1;                             // CL NZV
@@ -724,7 +724,7 @@ static void Op1F(void)  // TFR
 static void Op20(void)                                                 // BRA
 {
 //     regs.pc += SignedB(regs.RdMem(regs.pc++));  // Branch always
-       regs.pc += (int16)(int8)regs.RdMem(regs.pc) + 1;        // Branch always
+       regs.pc += (int16_t)(int8_t)regs.RdMem(regs.pc) + 1;    // Branch always
 
        regs.clock += 3;
 }
@@ -738,7 +738,7 @@ static void Op21(void)                                                      // BRN
 
 static void Op22(void)                                                 // BHI
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(regs.cc & 0x05))
                regs.pc += word;
@@ -748,7 +748,7 @@ static void Op22(void)                                                      // BHI
 
 static void Op23(void)                                                 // BLS
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (regs.cc & 0x05)
                regs.pc += word;
@@ -758,7 +758,7 @@ static void Op23(void)                                                      // BLS
 
 static void Op24(void)                                                 // BCC (BHS)
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(regs.cc & 0x01))
                regs.pc += word;
@@ -768,7 +768,7 @@ static void Op24(void)                                                      // BCC (BHS)
 
 static void Op25(void)                                                 // BCS (BLO)
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (regs.cc & 0x01)
                regs.pc += word;
@@ -778,7 +778,7 @@ static void Op25(void)                                                      // BCS (BLO)
 
 static void Op26(void)                                                 // BNE
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(regs.cc & 0x04))
                regs.pc += word;
@@ -788,7 +788,7 @@ static void Op26(void)                                                      // BNE
 
 static void Op27(void)                                                 // BEQ
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (regs.cc & 0x04)
                regs.pc += word;
@@ -798,7 +798,7 @@ static void Op27(void)                                                      // BEQ
 
 static void Op28(void)                                                 // BVC
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(regs.cc & 0x02))
                regs.pc += word;
@@ -808,7 +808,7 @@ static void Op28(void)                                                      // BVC
 
 static void Op29(void)                                                 // BVS
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (regs.cc & 0x02)
                regs.pc += word;
@@ -818,7 +818,7 @@ static void Op29(void)                                                      // BVS
 
 static void Op2A(void)                                                 // BPL
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(regs.cc & 0x08))
                regs.pc += word;
@@ -828,7 +828,7 @@ static void Op2A(void)                                                      // BPL
 
 static void Op2B(void)                                                 // BMI
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (regs.cc & 0x08)
                regs.pc += word;
@@ -838,7 +838,7 @@ static void Op2B(void)                                                      // BMI
 
 static void Op2C(void)                                                 // BGE
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!(((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02)))
                regs.pc += word;
@@ -848,7 +848,7 @@ static void Op2C(void)                                                      // BGE
 
 static void Op2D(void)                                                 // BLT
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02))
                regs.pc += word;
@@ -858,7 +858,7 @@ static void Op2D(void)                                                      // BLT
 
 static void Op2E(void)                                                 // BGT
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if (!((regs.cc & 0x04) | (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02))))
                regs.pc += word;
@@ -868,7 +868,7 @@ static void Op2E(void)                                                      // BGT
 
 static void Op2F(void)                                                 // BLE
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
 
        if ((regs.cc & 0x04) | (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02)))
                regs.pc += word;
@@ -1180,7 +1180,7 @@ static void Op5F(void)  // CLRB
 static void Op60(void)  // NEG IDX
       {
         addr = DecodeIDX(regs.RdMem(regs.pc++));
-        tmp = regs.RdMem(addr);  uint8 res = 256 - tmp;
+        tmp = regs.RdMem(addr);  uint8_t res = 256 - tmp;
         regs.WrMem(addr, res);
 //        ((res^tmp)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF); // Adjust H carry
         (res == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1212,7 +1212,7 @@ static void Op64(void)  // LSR IDX
 static void Op66(void)  // ROR IDX
       {
         addr = DecodeIDX(regs.RdMem(regs.pc++));
-        tmp = regs.RdMem(addr);  uint8 tmp2 = tmp;
+        tmp = regs.RdMem(addr);  uint8_t tmp2 = tmp;
         tmp = (tmp >> 1) + (regs.cc&0x01)*128;
         regs.WrMem(addr, tmp);
         (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -1245,7 +1245,7 @@ static void Op68(void)  // LSL IDX
       }
 static void Op69(void)  // ROL IDX
 {
-  uint8 tmp2 = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
+  uint8_t tmp2 = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -1255,7 +1255,7 @@ static void Op69(void)  // ROL IDX
 }
 static void Op6A(void)  // DEC IDX
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = DecodeIDX(regs.RdMem(regs.pc++));
         tmp = regs.RdMem(addr) - 1;
         regs.WrMem(addr, tmp);
@@ -1296,7 +1296,7 @@ static void Op6F(void)  // CLR IDX
 static void Op70(void)  // NEG ABS
       {
         addr = FetchW();
-        tmp = regs.RdMem(addr);  uint8 res = 256 - tmp;
+        tmp = regs.RdMem(addr);  uint8_t res = 256 - tmp;
         regs.WrMem(addr, res);
         (res == 0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
         (res == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
@@ -1326,9 +1326,9 @@ static void Op74(void)  // LSR ABS
       }
 static void Op76(void)  // ROR ABS
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = FetchW();
-        tmp = regs.RdMem(addr);  uint8 tmp2 = tmp;
+        tmp = regs.RdMem(addr);  uint8_t tmp2 = tmp;
         tmp = (tmp >> 1) + (regs.cc&0x01)*128;
         regs.WrMem(addr, tmp);
         (tmp2&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift bit into carry
@@ -1338,7 +1338,7 @@ static void Op76(void)  // ROR ABS
       }
 static void Op77(void)  // ASR ABS
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = FetchW();
         tmp = regs.RdMem(addr);
         (tmp&0x01 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Shift bit into carry
@@ -1351,7 +1351,7 @@ static void Op77(void)  // ASR ABS
       }
 static void Op78(void)  // LSL ABS
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = FetchW();
         tmp = regs.RdMem(addr);
         (tmp&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Shift hi bit into carry
@@ -1363,7 +1363,7 @@ static void Op78(void)  // LSL ABS
       }
 static void Op79(void)  // ROL ABS
 {
-  uint8 tmp2 = regs.RdMem(FetchW());
+  uint8_t tmp2 = regs.RdMem(FetchW());
   tmp = (tmp2<<1) + (regs.cc&0x01);
   regs.WrMem(addr, tmp);
   (tmp2&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE); // Shift hi bit into carry
@@ -1373,7 +1373,7 @@ static void Op79(void)  // ROL ABS
 }
 static void Op7A(void)  // DEC ABS
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = FetchW();
         tmp = regs.RdMem(addr) - 1;
         regs.WrMem(addr, tmp);
@@ -1384,7 +1384,7 @@ static void Op7A(void)  // DEC ABS
       }
 static void Op7C(void)  // INC ABS
       {
-  uint8 tmp;  uint16 addr;
+  uint8_t tmp;  uint16_t addr;
         addr = FetchW();
         tmp = regs.RdMem(addr) + 1;
         regs.WrMem(addr, tmp);
@@ -1396,7 +1396,7 @@ static void Op7C(void)  // INC ABS
 
 static void Op7D(void)  // TST ABS
 {
-       uint8 tmp = regs.RdMem(FetchW());
+       uint8_t tmp = regs.RdMem(FetchW());
 
        (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);   // Adjust Zero flag
        (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);   // Adjust Negative flag
@@ -1417,7 +1417,7 @@ static void Op7F(void)  // CLR ABS
       }
 static void Op80(void)  // SUBA #
 {
-  uint8 tmp = regs.RdMem(regs.pc++);  uint8 as = regs.a;
+  uint8_t tmp = regs.RdMem(regs.pc++);  uint8_t as = regs.a;
   regs.a -= tmp;
   (as < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1428,7 +1428,7 @@ static void Op80(void)  // SUBA #
 static void Op81(void)  // CMPA #
 {
   tmp = regs.RdMem(regs.pc++);
-  uint8 db = regs.a - tmp;
+  uint8_t db = regs.a - tmp;
   (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((regs.a^tmp^db^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -1437,7 +1437,7 @@ static void Op81(void)  // CMPA #
 }
 static void Op82(void)  // SBCA #
 {
-  tmp = regs.RdMem(regs.pc++);  uint8 as = regs.a;
+  tmp = regs.RdMem(regs.pc++);  uint8_t as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1447,7 +1447,7 @@ static void Op82(void)  // SBCA #
 }
 static void Op83(void)  // SUBD #
 {
-  addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
+  addr = FetchW();  uint16_t dr = (regs.a<<8)|regs.b, ds = dr;
   dr -= addr;
   (ds < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^addr^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1491,7 +1491,7 @@ static void Op88(void)  // EORA #
 static void Op89(void)  // ADCA #
 {
   tmp = regs.RdMem(regs.pc++);
-  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.a + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1522,7 +1522,7 @@ static void Op8B(void)  // ADDA #
 static void Op8C(void)  // CMPX #
 {
         addr = FetchW();
-        uint16 dw = regs.x - addr;
+        uint16_t dw = regs.x - addr;
         (regs.x < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
         ((regs.x^addr^dw^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
         (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -1532,7 +1532,7 @@ static void Op8C(void)  // CMPX #
 
 static void Op8D(void)                                                 // Bregs.s
 {
-       uint16 word = (int16)(int8)regs.RdMem(regs.pc++);
+       uint16_t word = (int16_t)(int8_t)regs.RdMem(regs.pc++);
        regs.WrMem(--regs.s, regs.pc & 0xFF);
        regs.WrMem(--regs.s, regs.pc >> 8);
        regs.pc += word;
@@ -1550,7 +1550,7 @@ static void Op8E(void)  // LDX #
       }
 static void Op90(void)  // SUBA DP
       {
-        tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 as = regs.a;
+        tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8_t as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1561,7 +1561,7 @@ static void Op90(void)  // SUBA DP
 static void Op91(void)  // CMPA DP
       {
         tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-        uint8 db = regs.a - tmp;
+        uint8_t db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1570,7 +1570,7 @@ static void Op91(void)  // CMPA DP
       }
 static void Op92(void)  // SBCA DP
 {
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 as = regs.a;
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8_t as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1580,8 +1580,8 @@ static void Op92(void)  // SBCA DP
 }
 static void Op93(void)  // SUBD DP
 {
-  addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  uint16_t dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16_t adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1633,7 +1633,7 @@ static void Op98(void)  // EORA DP
 static void Op99(void)  // ADCA DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.a + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1653,7 +1653,7 @@ static void Op9A(void)  // ORA DP
 static void Op9B(void)  // ADDA DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (uint16)regs.a + (uint16)tmp;
+  addr = (uint16_t)regs.a + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -1665,8 +1665,8 @@ static void Op9B(void)  // ADDA DP
 static void Op9C(void)  // CMPX DP
       {
         addr = (regs.dp<<8)|regs.RdMem(regs.pc++);
-        uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-        uint16 dw = regs.x - adr2;
+        uint16_t adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+        uint16_t dw = regs.x - adr2;
         (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.x < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1700,7 +1700,7 @@ static void Op9F(void)  // STX DP
       }
 static void OpA0(void)  // SUBA IDX
       {
-        tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 as = regs.a;
+        tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8_t as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1711,7 +1711,7 @@ static void OpA0(void)  // SUBA IDX
 static void OpA1(void)  // CMPA IDX
       {
         tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-        uint8 db = regs.a - tmp;
+        uint8_t db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1720,7 +1720,7 @@ static void OpA1(void)  // CMPA IDX
       }
 static void OpA2(void)  // SBCA IDX
 {
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 as = regs.a;
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8_t as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1730,8 +1730,8 @@ static void OpA2(void)  // SBCA IDX
 }
 static void OpA3(void)  // SUBD IDX
 {
-  addr = DecodeIDX(regs.RdMem(regs.pc++));  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = DecodeIDX(regs.RdMem(regs.pc++));  uint16_t dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16_t adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1783,7 +1783,7 @@ static void OpA8(void)  // EORA IDX
 static void OpA9(void)  // ADCA IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.a + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -1803,7 +1803,7 @@ static void OpAA(void)  // ORA IDX
 static void OpAB(void)  // ADDA IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (uint16)regs.a + (uint16)tmp;
+  addr = (uint16_t)regs.a + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -1815,8 +1815,8 @@ static void OpAB(void)  // ADDA IDX
 static void OpAC(void)  // CMPX IDX
 {
   addr = DecodeIDX(regs.RdMem(regs.pc++));
-  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-  uint16 dw = regs.x - addr2;
+  uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  uint16_t dw = regs.x - addr2;
   (dw == 0    ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (dw&0x8000  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.x < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1850,7 +1850,7 @@ static void OpAF(void)  // STX IDX
 }
 static void OpB0(void)  // SUBA ABS
       {
-        tmp = regs.RdMem(FetchW());  uint8 as = regs.a;
+        tmp = regs.RdMem(FetchW());  uint8_t as = regs.a;
         regs.a -= tmp;
         (regs.a == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.a&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -1861,7 +1861,7 @@ static void OpB0(void)  // SUBA ABS
 static void OpB1(void)  // CMPA ABS
       {
         tmp = regs.RdMem(FetchW());
-        uint8 db = regs.a - tmp;
+        uint8_t db = regs.a - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.a < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -1870,7 +1870,7 @@ static void OpB1(void)  // CMPA ABS
       }
 static void OpB2(void)  // SBCA ABS
 {
-  tmp = regs.RdMem(FetchW());  uint8 as = regs.a;
+  tmp = regs.RdMem(FetchW());  uint8_t as = regs.a;
   regs.a = regs.a - tmp - (regs.cc&0x01);
   (as < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((as^tmp^regs.a^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1880,8 +1880,8 @@ static void OpB2(void)  // SBCA ABS
 }
 static void OpB3(void)  // SUBD ABS
 {
-  addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  addr = FetchW();  uint16_t dr = (regs.a<<8)|regs.b, ds = dr;
+  uint16_t adr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
   dr -= adr2;
   (ds < adr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((ds^adr2^dr^(regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
@@ -1933,7 +1933,7 @@ static void OpB8(void)  // EORA ABS
 static void OpB9(void)  // ADCA ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (uint16)regs.a + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.a + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -1953,7 +1953,7 @@ static void OpBA(void)  // ORA ABS
 static void OpBB(void)  // ADDA ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (uint16)regs.a + (uint16)tmp;
+  addr = (uint16_t)regs.a + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.a^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.a^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -1964,8 +1964,8 @@ static void OpBB(void)  // ADDA ABS
 }
 static void OpBC(void)  // CMPX ABS
 {
-  addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-  uint16 dw = regs.x - addr2;
+  addr = FetchW();  uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+  uint16_t dw = regs.x - addr2;
   (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.x < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2008,7 +2008,7 @@ static void OpBF(void)                                                                    // STX ABS
 
 static void OpC0(void)  // SUBB #
       {
-        tmp = regs.RdMem(regs.pc++);  uint8 bs = regs.b;
+        tmp = regs.RdMem(regs.pc++);  uint8_t bs = regs.b;
         regs.b -= tmp;
         (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2019,7 +2019,7 @@ static void OpC0(void)  // SUBB #
 static void OpC1(void)  // CMPB #
       {
         tmp = regs.RdMem(regs.pc++);
-        uint8 db = regs.b - tmp;
+        uint8_t db = regs.b - tmp;
         (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
         ((regs.b^tmp^db^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
@@ -2028,7 +2028,7 @@ static void OpC1(void)  // CMPB #
       }
 static void OpC2(void)  // SBCB #
 {
-  tmp = regs.RdMem(regs.pc++);  uint8 bs = regs.b;
+  tmp = regs.RdMem(regs.pc++);  uint8_t bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2083,7 +2083,7 @@ static void OpC8(void)  // EORB #
 static void OpC9(void)  // ADCB #
 {
   tmp = regs.RdMem(regs.pc++);
-  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.b + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -2129,7 +2129,7 @@ static void OpCE(void)  // LDU #
 }
 static void OpD0(void)  // SUBB DP
 {
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 bs = regs.b;
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8_t bs = regs.b;
   regs.b -= tmp;
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2140,7 +2140,7 @@ static void OpD0(void)  // SUBB DP
 static void OpD1(void)  // CMPB DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  uint8 db = regs.b - tmp;
+  uint8_t db = regs.b - tmp;
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2149,7 +2149,7 @@ static void OpD1(void)  // CMPB DP
 }
 static void OpD2(void)  // SBCB DP
 {
-  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8 bs = regs.b;
+  tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));  uint8_t bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2160,7 +2160,7 @@ static void OpD2(void)  // SBCB DP
 static void OpD3(void)  // ADDD DP
 {
   addr = (regs.dp<<8)|regs.RdMem(regs.pc++);  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16_t adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2213,7 +2213,7 @@ static void OpD8(void)  // EORB DP
 static void OpD9(void)  // ADCB DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.b + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2233,7 +2233,7 @@ static void OpDA(void)  // ORB DP
 static void OpDB(void)  // ADDB DP
 {
   tmp = regs.RdMem((regs.dp<<8)|regs.RdMem(regs.pc++));
-  addr = (uint16)regs.b + (uint16)tmp;
+  addr = (uint16_t)regs.b + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2280,7 +2280,7 @@ static void OpDF(void)  // STU DP
 }
 static void OpE0(void)  // SUBB IDX
 {
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 bs = regs.b;
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8_t bs = regs.b;
   regs.b -= tmp;
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2291,7 +2291,7 @@ static void OpE0(void)  // SUBB IDX
 static void OpE1(void)  // CMPB IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  uint8 db = regs.b - tmp;
+  uint8_t db = regs.b - tmp;
   (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
   (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2300,7 +2300,7 @@ static void OpE1(void)  // CMPB IDX
 }
 static void OpE2(void)  // SBCB IDX
 {
-  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8 bs = regs.b;
+  tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));  uint8_t bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (bs < (tmp+(regs.cc&0x01)) ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   ((bs^tmp^regs.b^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2311,7 +2311,7 @@ static void OpE2(void)  // SBCB IDX
 static void OpE3(void)  // ADDD IDX
 {
   addr = DecodeIDX(regs.RdMem(regs.pc++));  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16_t adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2364,7 +2364,7 @@ static void OpE8(void)  // EORB IDX
 static void OpE9(void)  // ADCB IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.b + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2384,7 +2384,7 @@ static void OpEA(void)  // ORB IDX
 static void OpEB(void)  // ADDB IDX
 {
   tmp = regs.RdMem(DecodeIDX(regs.RdMem(regs.pc++)));
-  addr = (uint16)regs.b + (uint16)tmp;
+  addr = (uint16_t)regs.b + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflow
@@ -2431,7 +2431,7 @@ static void OpEF(void)  // STU IDX
 }
 static void OpF0(void)  // SUBB ABS
       {
-        tmp = regs.RdMem(FetchW());  uint8 bs = regs.b;
+        tmp = regs.RdMem(FetchW());  uint8_t bs = regs.b;
         regs.b -= tmp;
         (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2441,7 +2441,7 @@ static void OpF0(void)  // SUBB ABS
 static void OpF1(void)  // CMPB ABS
       {
         tmp = regs.RdMem(FetchW());
-        uint8 db = regs.b - tmp;
+        uint8_t db = regs.b - tmp;
         (db == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
         (db&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
         (regs.b < tmp ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2450,7 +2450,7 @@ static void OpF1(void)  // CMPB ABS
       }
 static void OpF2(void)  // SBCB ABS
 {
-  tmp = regs.RdMem(FetchW());  uint8 bs = regs.b;
+  tmp = regs.RdMem(FetchW());  uint8_t bs = regs.b;
   regs.b = regs.b - tmp - (regs.cc&0x01);
   (regs.b == 0  ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
   (regs.b&0x80  ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
@@ -2461,7 +2461,7 @@ static void OpF2(void)  // SBCB ABS
 static void OpF3(void)  // ADDD ABS
 {
   addr = FetchW();  long dr = ((regs.a<<8)|regs.b)&0xFFFF, ds = dr;
-  uint16 adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
+  uint16_t adr2 = (regs.RdMem(addr)<<8)|regs.RdMem(addr+1);
   dr += adr2;
   (dr > 0xFFFF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
   dr &= 0xFFFF;
@@ -2514,7 +2514,7 @@ static void OpF8(void)  // EORB ABS
 static void OpF9(void)  // ADCB ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (uint16)regs.b + (uint16)tmp + (uint16)(regs.cc&0x01);
+  addr = (uint16_t)regs.b + (uint16_t)tmp + (uint16_t)(regs.cc&0x01);
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -2534,7 +2534,7 @@ static void OpFA(void)  // ORB ABS
 static void OpFB(void)  // ADDB ABS
 {
   tmp = regs.RdMem(FetchW());
-  addr = (uint16)regs.b + (uint16)tmp;
+  addr = (uint16_t)regs.b + (uint16_t)tmp;
   (addr > 0x00FF ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Set Carry flag
   ((regs.b^tmp^addr)&0x10 ? regs.cc |= 0x20 : regs.cc &= 0xDF);  // Set Half carry
   ((regs.b^tmp^addr^(regs.cc<<7))&0x80 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerflo
@@ -2593,7 +2593,7 @@ static void Op1021(void)                                          // LBRN
 
 static void Op1022(void)                                               // LBHI
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!((regs.cc & 0x01) | (regs.cc & 0x04)))
                regs.pc += word;
@@ -2603,7 +2603,7 @@ static void Op1022(void)                                          // LBHI
 
 static void Op1023(void)                                               // LBLS
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if ((regs.cc & 0x01) | (regs.cc & 0x04))
                regs.pc += word;
@@ -2613,7 +2613,7 @@ static void Op1023(void)                                          // LBLS
 
 static void Op1024(void)                                               // LBCC (LBHS)
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!(regs.cc & 0x01))
                regs.pc += word;
@@ -2623,7 +2623,7 @@ static void Op1024(void)                                          // LBCC (LBHS)
 
 static void Op1025(void)                                               // LBCS (LBLO)
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (regs.cc & 0x01)
                regs.pc += word;
@@ -2633,7 +2633,7 @@ static void Op1025(void)                                          // LBCS (LBLO)
 
 static void Op1026(void)                                               // LBNE
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!(regs.cc & 0x04))
                regs.pc += word;
@@ -2643,7 +2643,7 @@ static void Op1026(void)                                          // LBNE
 
 static void Op1027(void)                                               // LBEQ
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (regs.cc & 0x04)
                regs.pc += word;
@@ -2653,7 +2653,7 @@ static void Op1027(void)                                          // LBEQ
 
 static void Op1028(void)                                               // LBVC
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!(regs.cc & 0x02))
                regs.pc += word;
@@ -2663,7 +2663,7 @@ static void Op1028(void)                                          // LBVC
 
 static void Op1029(void)                                               // LBVS
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (regs.cc & 0x02)
                regs.pc += word;
@@ -2673,7 +2673,7 @@ static void Op1029(void)                                          // LBVS
 
 static void Op102A(void)                                               // LBPL
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!(regs.cc & 0x08))
                regs.pc += word;
@@ -2683,7 +2683,7 @@ static void Op102A(void)                                          // LBPL
 
 static void Op102B(void)                                               // LBMI
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (regs.cc & 0x08)
                regs.pc += word;
@@ -2693,7 +2693,7 @@ static void Op102B(void)                                          // LBMI
 
 static void Op102C(void)                                               // LBGE
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!(((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02)))
                regs.pc += word;
@@ -2703,7 +2703,7 @@ static void Op102C(void)                                          // LBGE
 
 static void Op102D(void)                                               // LBLT
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02))
                regs.pc += word;
@@ -2713,7 +2713,7 @@ static void Op102D(void)                                          // LBLT
 
 static void Op102E(void)                                               // LBGT
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if (!((regs.cc & 0x04) | (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02))))
                regs.pc += word;
@@ -2723,7 +2723,7 @@ static void Op102E(void)                                          // LBGT
 
 static void Op102F(void)                                               // LBLE
 {
-       uint16 word = FetchW();
+       uint16_t word = FetchW();
 
        if ((regs.cc & 0x04) | (((regs.cc & 0x08) >> 2) ^ (regs.cc & 0x02)))
                regs.pc += word;
@@ -2737,18 +2737,18 @@ static void Op103F(void)  // SWI2 (Not yet implemented)
 }
 static void Op1083(void)  // CMPD #
     {
-      addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b;
-      uint16 dw = dr - addr;
+      addr = FetchW();  uint16_t dr = (regs.a<<8)|regs.b;
+      uint16_t dw = dr - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
-      ((dr^addr^dw^((uint16)regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
+      ((dr^addr^dw^((uint16_t)regs.cc<<15))&0x8000 ? regs.cc |= 0x02 : regs.cc &= 0xFD); // oVerfl
       regs.clock += 5;
     }
 static void Op108C(void)  // CMPY #
     {
       addr = FetchW();
-      uint16 dw = regs.y - addr;
+      uint16_t dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2765,9 +2765,9 @@ static void Op108E(void)  // LDY #
     }
 static void Op1093(void)  // CMPD DP
     {
-      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++), dr = (regs.a<<8)|regs.b;
+      uint16_t adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++), dr = (regs.a<<8)|regs.b;
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      uint16 dw = dr - addr;
+      uint16_t dw = dr - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2776,9 +2776,9 @@ static void Op1093(void)  // CMPD DP
     }
 static void Op109C(void)  // CMPY DP
     {
-      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16_t adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      uint16 dw = regs.y - addr;
+      uint16_t dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2807,9 +2807,9 @@ static void Op109F(void)  // STY DP
     }
 static void Op10A3(void)  // CMPD IDX
 {
-  uint16 adr2 = DecodeIDX(regs.RdMem(regs.pc++)), dr = (regs.a<<8)|regs.b;
+  uint16_t adr2 = DecodeIDX(regs.RdMem(regs.pc++)), dr = (regs.a<<8)|regs.b;
   addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-  uint16 dw = dr - addr;
+  uint16_t dw = dr - addr;
   regs.cc &= 0xF0;                              // CLC CLV CLZ CLN
   if (dr < addr)  regs.cc |= 0x01;              // Set Carry flag
   if ((dr^addr^dw^(regs.cc<<15))&0x8000)  regs.cc |= 0x02; // Set oVerflow
@@ -2819,9 +2819,9 @@ static void Op10A3(void)  // CMPD IDX
 }
 static void Op10AC(void)  // CMPY IDX
     {
-      uint16 adr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16_t adr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      uint16 dw = regs.y - addr;
+      uint16_t dw = regs.y - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2848,9 +2848,9 @@ static void Op10AF(void)  // STY IDX
     }
 static void Op10B3(void)  // CMPD ABS
     {
-      addr = FetchW();  uint16 dr = (regs.a<<8)|regs.b;
-      uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      uint16 dw = dr - addr2;
+      addr = FetchW();  uint16_t dr = (regs.a<<8)|regs.b;
+      uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16_t dw = dr - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (dr < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2859,8 +2859,8 @@ static void Op10B3(void)  // CMPD ABS
     }
 static void Op10BC(void)  // CMPY ABS
     {
-      addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      uint16 dw = regs.y - addr2;
+      addr = FetchW();  uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16_t dw = regs.y - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.y < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2959,7 +2959,7 @@ static void Op113F(void)  // SWI3
 static void Op1183(void)  // CMPU #
     {
       addr = FetchW();
-      uint16 dw = regs.u - addr;
+      uint16_t dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2969,7 +2969,7 @@ static void Op1183(void)  // CMPU #
 static void Op118C(void)  // CMPS #
     {
       addr = FetchW();
-      uint16 dw = regs.s - addr;
+      uint16_t dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2978,9 +2978,9 @@ static void Op118C(void)  // CMPS #
     }
 static void Op1193(void)  // CMPU DP
     {
-      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16_t adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      uint16 dw = regs.u - addr;
+      uint16_t dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -2989,9 +2989,9 @@ static void Op1193(void)  // CMPU DP
     }
 static void Op119C(void)  // CMPS DP
     {
-      uint16 adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
+      uint16_t adr2 = (regs.dp<<8)|regs.RdMem(regs.pc++);
       addr = (regs.RdMem(adr2)<<8) | regs.RdMem(adr2+1);
-      uint16 dw = regs.s - addr;
+      uint16_t dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -3000,9 +3000,9 @@ static void Op119C(void)  // CMPS DP
     }
 static void Op11A3(void)  // CMPU IDX
     {
-      uint16 addr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16_t addr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(addr2)<<8) | regs.RdMem(addr2+1);
-      uint16 dw = regs.u - addr;
+      uint16_t dw = regs.u - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -3011,9 +3011,9 @@ static void Op11A3(void)  // CMPU IDX
     }
 static void Op11AC(void)  // CMPS IDX
     {
-      uint16 addr2 = DecodeIDX(regs.RdMem(regs.pc++));
+      uint16_t addr2 = DecodeIDX(regs.RdMem(regs.pc++));
       addr = (regs.RdMem(addr2)<<8) | regs.RdMem(addr2+1);
-      uint16 dw = regs.s - addr;
+      uint16_t dw = regs.s - addr;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.s < addr ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -3022,8 +3022,8 @@ static void Op11AC(void)  // CMPS IDX
     }
 static void Op11B3(void)  // CMPU ABS
     {
-      addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-      uint16 dw = regs.u - addr2;
+      addr = FetchW();  uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+      uint16_t dw = regs.u - addr2;
       (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
       (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
       (regs.u < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -3033,8 +3033,8 @@ static void Op11B3(void)  // CMPU ABS
 
 static void Op11BC(void)  // CMPS ABS
 {
-       addr = FetchW();  uint16 addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
-       uint16 dw = regs.s - addr2;
+       addr = FetchW();  uint16_t addr2 = (regs.RdMem(addr)<<8) | regs.RdMem(addr+1);
+       uint16_t dw = regs.s - addr2;
        (dw == 0   ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag
        (dw&0x8000 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag
        (regs.s < addr2 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Adjust Carry flag
@@ -3044,8 +3044,8 @@ static void Op11BC(void)  // CMPS ABS
 
 //temp, for testing...
 #ifdef __DEBUG__
-static uint8 backTrace[256];
-static uint16 btPC[256];
+static uint8_t backTrace[256];
+static uint16_t btPC[256];
 static int btPtr = 0;//*/
 #endif
 static void Op__(void)                                                                 // Illegal opcode
@@ -3067,11 +3067,11 @@ for(int i=0; i<256; i++)
 //
 // Internal "memcpy" (so we don't have to link with any external libraries!)
 //
-static void myMemcpy(void * dst, void * src, 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];
 }
 
@@ -3082,8 +3082,8 @@ static void myMemcpy(void * dst, void * src, uint32 size)
 #ifdef DEBUG_ILLEGAL
 #include "log.h"
 #include "dis6809.h"
-uint8 btPtr = 0;
-uint8 backTrace[256];
+uint8_t btPtr = 0;
+uint8_t backTrace[256];
 V6809REGS btRegs[256];
 bool tripped = false;
 #endif
@@ -3092,7 +3092,7 @@ bool tripped = false;
 bool disasm = false;
 //bool disasm = true;
 #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.
@@ -3109,7 +3109,7 @@ void Execute6809(V6809REGS * context, uint32 cycles)
        // 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);
+       uint64_t endCycles = regs.clock + (uint64_t)(cycles - regs.clockOverrun);
 
        while (regs.clock < endCycles)
        {
@@ -3125,7 +3125,7 @@ if (!tripped)
                WriteLog("V6809: Executed illegal instruction!!!!\n\nBacktrace:\n\n");
                regs.cpuFlags &= ~V6809_STATE_ILLEGAL_INST;
 
-               for(uint16 i=btPtr; i<btPtr+256; i++)
+               for(uint16_t i=btPtr; i<btPtr+256; i++)
                {
                        Decode6809(btRegs[i & 0xFF].pc);
 // Note that these values are *before* execution, so stale...
@@ -3156,8 +3156,8 @@ btPtr = (btPtr + 1) & 0xFF;//*/
                // 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 ***
                {
@@ -3264,7 +3264,7 @@ if (disasm) WriteLog("\tCC=%s%s%s%s%s%s%s%s A=%02X B=%02X DP=%02X X=%04X Y=%04X
 #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);
 
        myMemcpy(context, &regs, sizeof(V6809REGS));
 
@@ -3277,7 +3277,7 @@ if (disasm) WriteLog("\tCC=%s%s%s%s%s%s%s%s A=%02X B=%02X DP=%02X X=%04X Y=%04X
 //
 // Get the clock of the currently executing CPU
 //
-uint64 GetCurrentV6809Clock(void)
+uint64_t GetCurrentV6809Clock(void)
 {
        return regs.clock;
 }
@@ -3285,19 +3285,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)
index 39fc3f84638e86545644c4a2319f5f2d1af7c96e..380318c243bce63d9363873a1221efc19592262c 100644 (file)
@@ -1,26 +1,26 @@
 //
 // Virtual 6809 Header file
 //
-// by James L. Hammons
+// by James Hammons
 //
-// (C) 1997, 2004 Underground Software
+// (C) 1997, 2014 Underground Software
 //
 
 #ifndef __V6809_H__
 #define __V6809_H__
 
-#include "types.h"
+#include <stdint.h>
 
 // Useful defines
 
-#define FLAG_E         0x80            // Entire
-#define FLAG_F         0x40            // Fast IRQ
-#define FLAG_H         0x20            // Half carry
-#define FLAG_I         0x10            // IRQ
-#define FLAG_N         0x08            // Negative
-#define FLAG_Z         0x04            // Zero
-#define FLAG_V         0x02            // oVerflow
-#define FLAG_C         0x01            // Carry
+#define FLAG_E 0x80            // Entire
+#define FLAG_F 0x40            // Fast IRQ
+#define FLAG_H 0x20            // Half carry
+#define FLAG_I 0x10            // IRQ
+#define FLAG_N 0x08            // Negative
+#define FLAG_Z 0x04            // Zero
+#define FLAG_V 0x02            // oVerflow
+#define FLAG_C 0x01            // Carry
 
 #define V6809_ASSERT_LINE_RESET                0x0001          // v6809 RESET line
 #define V6809_ASSERT_LINE_IRQ          0x0002          // v6809 IRQ line
 #define V6809_ASSERT_LINE_NMI          0x0008          // v6809 NMI line
 #define V6809_STATE_SYNC                       0x0010          // v6809 SYNC line
 #define V6809_STATE_ILLEGAL_INST       0x0020          // Illegal instruction executed flag
-
 //#define V6809_START_DEBUG_LOG        EQU     0020h           // Debug log go (temporary!)
 
 // Useful structs
 
 struct V6809REGS
 {
-       uint16 pc;                                              // 6809 PC register
-       uint16 x;                                               // 6809 X index register
-       uint16 y;                                               // 6809 Y index register
-       uint16 s;                                               // 6809 System stack pointer
-       uint16 u;                                               // 6809 User stack pointer
-       uint8 cc;                                               // 6809 Condition Code register
-       uint8 a;                                                // 6809 A register
-       uint8 b;                                                // 6809 B register
-       uint8 dp;                                               // 6809 Direct Page register
-//     uint32 clock;                                   // 6809 clock (@ 1 MHz, wraps at 71.5 minutes)
-       uint64 clock;                                   // 6809 clock (@ 1 MHz, wraps at 570842 years)
-       uint8 (* RdMem)(uint16);                // Address of uint8 read routine
-       void (* WrMem)(uint16, uint8);  // Address of uint8 write routine
-       uint32 cpuFlags;                                // v6809 IRQ/RESET flags
-       uint32 clockOverrun;
+       uint16_t pc;                                    // 6809 PC register
+       uint16_t x;                                             // 6809 X index register
+       uint16_t y;                                             // 6809 Y index register
+       uint16_t s;                                             // 6809 System stack pointer
+       uint16_t u;                                             // 6809 User stack pointer
+       uint8_t cc;                                             // 6809 Condition Code register
+       uint8_t a;                                              // 6809 A register
+       uint8_t b;                                              // 6809 B register
+       uint8_t dp;                                             // 6809 Direct Page register
+//     uint32_t clock;                                 // 6809 clock (@ 1 MHz, wraps at 71.5 minutes)
+       uint64_t clock;                                 // 6809 clock (@ 1 MHz, wraps at 570842 years)
+       uint8_t (* RdMem)(uint16_t);            // Address of uint8_t read routine
+       void (* WrMem)(uint16_t, uint8_t);      // Address of uint8_t write routine
+       uint32_t cpuFlags;                              // v6809 IRQ/RESET flags
+       uint32_t clockOverrun;
 };
 
 // Function prototypes
 
-void Execute6809(V6809REGS *, uint32);                 // Function to execute 6809 instructions
-uint64 GetCurrentV6809Clock(void);                             // Get the clock of the currently executing CPU
-uint16 GetCurrentV6809PC(void);                                        // Get the PC of the currently executing CPU
-void SetLineOfCurrentV6809(uint32 line);               // Set a line of the currently executing CPU
-void ClearLineOfCurrentV6809(uint32 line);             // Clear a line of the currently executing CPU
+void Execute6809(V6809REGS *, uint32_t);               // Function to execute 6809 instructions
+uint64_t GetCurrentV6809Clock(void);                   // Get the clock of the currently executing CPU
+uint16_t GetCurrentV6809PC(void);                              // Get the PC of the currently executing CPU
+void SetLineOfCurrentV6809(uint32_t line);             // Set a line of the currently executing CPU
+void ClearLineOfCurrentV6809(uint32_t line);   // Clear a line of the currently executing CPU
 
 #endif // __V6809_H__
+