1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-29 13:31:59 +00:00

Merge pull request #2569 from sidneycadot/fix-cpu-register-types

sim65: tighten 6502 register types
This commit is contained in:
Sidney Cadot 2024-12-22 18:00:16 +01:00 committed by GitHub
commit 075514c60c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 14 deletions

View File

@ -664,15 +664,12 @@ static unsigned HaveIRQRequest;
/* ADC, binary mode (6502 and 65C02) */
/* TODO: once the Regs fields are properly sized, get rid of the
* "& 0xff" in the Regs.AC asignment.
*/
#define ADC_BINARY_MODE(v) \
do { \
const uint8_t op = v; \
const uint8_t OldAC = Regs.AC; \
bool carry = GET_CF(); \
Regs.AC = (OldAC + op + carry) & 0xff; \
Regs.AC = (OldAC + op + carry); \
const bool NV = Regs.AC >= 0x80; \
carry = OldAC + op + carry >= 0x100; \
SET_SF(NV); \
@ -1033,15 +1030,12 @@ static unsigned HaveIRQRequest;
TEST_ZF (Val)
/* SBC, binary mode (6502 and 65C02) */
/* TODO: once the Regs fields are properly sized, get rid of the
* "& 0xff" in the Regs.AC asignment.
*/
#define SBC_BINARY_MODE(v) \
do { \
const uint8_t op = v; \
const uint8_t OldAC = Regs.AC; \
const bool borrow = !GET_CF(); \
Regs.AC = (OldAC - op - borrow) & 0xff; \
Regs.AC = (OldAC - op - borrow); \
const bool NV = Regs.AC >= 0x80; \
SET_SF(NV); \
SET_OF(((OldAC >= 0x80) ^ NV) & ((op < 0x80) ^ NV)); \

View File

@ -37,6 +37,8 @@
#define _6502_H
#include <stdint.h>
/*****************************************************************************/
/* Data */
@ -57,12 +59,12 @@ extern CPUType CPU;
/* 6502 CPU registers */
typedef struct CPURegs CPURegs;
struct CPURegs {
unsigned AC; /* Accumulator */
unsigned XR; /* X register */
unsigned YR; /* Y register */
unsigned SR; /* Status register */
unsigned SP; /* Stackpointer */
unsigned PC; /* Program counter */
uint8_t AC; /* Accumulator */
uint8_t XR; /* X register */
uint8_t YR; /* Y register */
uint8_t SR; /* Status register */
uint8_t SP; /* Stackpointer */
uint16_t PC; /* Program counter */
};
/* Current CPU registers */