]> Shamusworld >> Repos - apple2/blobdiff - src/v65c02.h
Created new MMU based code for R/W handling. Should be much faster now.
[apple2] / src / v65c02.h
index 401b9801ce44832a03c4a48add21aeb7cb58d4a5..9b71d46260c9d8119d83b7b5e137cfe9a27b2b0f 100755 (executable)
@@ -1,55 +1,57 @@
-//\r
-// Virtual 65C02 Header file\r
-//\r
-// by James L. Hammons\r
-// (c) 2005 Underground Software\r
-//\r
-\r
-#ifndef __V65C02_H__\r
-#define __V65C02_H__\r
-\r
-#include "types.h"\r
-\r
-// Useful defines\r
-\r
-#define FLAG_N         0x80                    // Negative\r
-#define FLAG_V         0x40                    // oVerflow\r
-#define FLAG_UNK       0x20                    // ??? (always set when read?)\r
-#define FLAG_B         0x10                    // Break\r
-#define FLAG_D         0x08                    // Decimal\r
-#define FLAG_I         0x04                    // Interrupt\r
-#define FLAG_Z         0x02                    // Zero\r
-#define FLAG_C         0x01                    // Carry\r
-\r
-#define V65C02_ASSERT_LINE_RESET       0x0001          // v65C02 RESET line\r
-#define V65C02_ASSERT_LINE_IRQ         0x0002          // v65C02 IRQ line\r
-#define V65C02_ASSERT_LINE_NMI         0x0004          // v65C02 NMI line\r
-#define V65C02_STATE_ILLEGAL_INST      0x0008          // Illegal instruction executed flag\r
-//#define V65C02_START_DEBUG_LOG               0x0020          // Debug log go (temporary!)\r
-\r
-// Useful structs\r
-\r
-struct V65C02REGS\r
-{\r
-       uint16 pc;                                              // 65C02 PC register\r
-       uint8 cc;                                               // 65C02 Condition Code register\r
-       uint8 sp;                                               // 65C02 System stack pointer (bound to $01xx)\r
-       uint8 a;                                                // 65C02 A register\r
-       uint8 x;                                                // 65C02 X index register\r
-       uint8 y;                                                // 65C02 Y register\r
-       uint32 clock;                                   // 65C02 clock\r
-       uint8 (* RdMem)(uint16);                // Address of BYTE read routine\r
-       void (* WrMem)(uint16, uint8);  // Address of BYTE write routine\r
-       uint16 cpuFlags;                                // v65C02 IRQ/RESET flags\r
-};\r
-\r
-// Global variables (exported)\r
-\r
-extern bool dumpDis;\r
-\r
-// Function prototypes\r
-\r
-void Execute65C02(V65C02REGS *, uint32);       // Function to execute 65C02 instructions\r
-uint32 GetCurrentV65C02Clock(void);                            // Get the clock of the currently executing CPU\r
-\r
-#endif // __V65C02_H__\r
+//
+// Virtual 65C02 Header file
+//
+// by James Hammons
+// (c) 2005 Underground Software
+//
+
+#ifndef __V65C02_H__
+#define __V65C02_H__
+
+#include <stdint.h>
+
+// Useful defines
+
+#define FLAG_N         0x80                    // Negative
+#define FLAG_V         0x40                    // oVerflow
+#define FLAG_UNK       0x20                    // ??? (always set when read?)
+#define FLAG_B         0x10                    // Break
+#define FLAG_D         0x08                    // Decimal
+#define FLAG_I         0x04                    // Interrupt
+#define FLAG_Z         0x02                    // Zero
+#define FLAG_C         0x01                    // Carry
+
+#define V65C02_ASSERT_LINE_RESET       0x0001          // v65C02 RESET line
+#define V65C02_ASSERT_LINE_IRQ         0x0002          // v65C02 IRQ line
+#define V65C02_ASSERT_LINE_NMI         0x0004          // v65C02 NMI line
+#define V65C02_STATE_ILLEGAL_INST      0x0008          // Illegal instruction executed flag
+//#define V65C02_START_DEBUG_LOG               0x0020          // Debug log go (temporary!)
+
+// Useful structs
+
+struct V65C02REGS
+{
+       uint16_t pc;                                            // 65C02 PC register
+       uint8_t cc;                                             // 65C02 Condition Code register
+       uint8_t sp;                                             // 65C02 System stack pointer (bound to $01xx)
+       uint8_t a;                                              // 65C02 A register
+       uint8_t x;                                              // 65C02 X index register
+       uint8_t y;                                              // 65C02 Y register
+//     uint32_t clock;                                 // 65C02 clock (@ 1 MHz, wraps at 71.5 minutes)
+       uint64_t clock;                                 // 65C02 clock (@ 1 MHz, wraps at 570842 years)
+       uint8_t (* RdMem)(uint16_t);            // Address of BYTE read routine
+       void (* WrMem)(uint16_t, uint8_t);      // Address of BYTE write routine
+       uint16_t cpuFlags;                              // v65C02 IRQ/RESET flags
+       uint64_t overflow;                              // # of cycles we went over last time through
+};
+
+// Global variables (exported)
+
+extern bool dumpDis;
+
+// Function prototypes
+
+void Execute65C02(V65C02REGS *, uint32_t);     // Function to execute 65C02 instructions
+uint64_t GetCurrentV65C02Clock(void);                          // Get the clock of the currently executing CPU
+
+#endif // __V65C02_H__