]> Shamusworld >> Repos - stargem2/blobdiff - src/v6808.h
Finally fixed problems with demo mode.
[stargem2] / src / v6808.h
old mode 100755 (executable)
new mode 100644 (file)
index a3d6d90..dda455f
@@ -1,21 +1,19 @@
 //
 // Virtual 6808 Header file
 //
-// by James L. Hammons
+// by James Hammons
 //
-// (c) 2004 Underground Software
+// (C) 2006 Underground Software
 //
-
 #ifndef __V6808_H__
 #define __V6808_H__
 
-#include "types.h"
+#include <stdint.h>
 
 // Useful defines
 
-#define FLAG_E         0x80            // ??? Entire ???
-#define FLAG_F         0x40            // ??? Fast IRQ ???
-
+#define FLAG_E         0x80            // ??? Entire ??? [No.]
+#define FLAG_F         0x40            // ??? Fast IRQ ??? [No.]
 #define FLAG_H         0x20            // Half carry
 #define FLAG_I         0x10            // IRQ
 #define FLAG_N         0x08            // Negative
 #define FLAG_V         0x02            // oVerflow
 #define FLAG_C         0x01            // Carry
 
-#define V6808_ASSERT_LINE_RESET                0x0001          // v6808 RESET line
-#define V6808_ASSERT_LINE_IRQ          0x0002          // v6808 IRQ line
-#define V6808_ASSERT_LINE_NMI          0x0004          // v6808 NMI line
-#define V6808_STATE_SYNC                       0x0008          // ??? v6808 SYNC line ???
-#define V6808_STATE_ILLEGAL_INST       0x0010          // Illegal instruction executed flag
-//#define V6809_START_DEBUG_LOG                0x0020          // Debug log go (temporary!)
+#define V6808_LINE_RESET                       0x0001  // v6808 RESET line
+#define V6808_LINE_IRQ                         0x0002  // v6808 IRQ line
+#define V6808_LINE_NMI                         0x0004  // v6808 NMI line
+#define V6808_STATE_WAI                                0x0008  // v6808 wait for IRQ line
+#define V6808_STATE_ILLEGAL_INST       0x0010  // Illegal instruction executed flag
+//#define V6809_START_DEBUG_LOG                0x0020  // Debug log go (temporary!)
 
 // Useful structs
 
 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
-       uint32 clock;                                   // 6808 clock
-//uint32 _reserved;//  uint8 (* Fetch)(uint16&);               // Address of uint8 fetch routine
-       uint8 (* RdMem)(uint16);                // Address of uint8 read routine
-       void (* WrMem)(uint16, uint8);  // Address of uint8 write routine
-       uint32 cpuFlags;                                // v6808 IRQ/RESET flags
+       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 read routine
+       void (* WrMem)(uint16_t, uint8_t);      // Address of uint8 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
-uint32 GetCurrentV6808Clock(void);             // Get the clock of the currently executing CPU
+void Execute6808(V6808REGS *, uint32_t);       // Function to execute 6808 instructions
+uint64_t GetCurrentV6808Clock(void);           // Get the clock of the currently executing CPU
+//uint8 GetCCRegister(void);                           // Hmm.
 
 #endif // __V6808_H__
+