mirror of
https://github.com/trudnai/Steve2.git
synced 2024-12-30 14:29:56 +00:00
88 lines
1.5 KiB
C
88 lines
1.5 KiB
C
//
|
|
// common.h
|
|
// 6502
|
|
//
|
|
// Created by Tamas Rudnai on 7/14/19.
|
|
// Copyright © 2019 GameAlloy. All rights reserved.
|
|
//
|
|
|
|
#ifndef __COMMON_H__
|
|
#define __COMMON_H__
|
|
|
|
#include "6502.h"
|
|
|
|
|
|
#define K 1000ULL
|
|
#define M (K * K)
|
|
#define G (M * K)
|
|
#define T (G * K)
|
|
|
|
#define KB 1024ULL
|
|
#define MB (KB * KB)
|
|
#define GB (MB * KB)
|
|
#define TB (GB * KB)
|
|
|
|
|
|
typedef
|
|
union {
|
|
uint8_t bits;
|
|
struct {
|
|
uint8_t b0:1;
|
|
uint8_t b1:1;
|
|
uint8_t b2:1;
|
|
uint8_t b3:1;
|
|
uint8_t b4:1;
|
|
uint8_t b5:1;
|
|
uint8_t b6:1;
|
|
uint8_t b7:1;
|
|
};
|
|
} bits_t;
|
|
|
|
|
|
#define BITTEST(n,x) ((bits_t)(n)).b##x
|
|
|
|
static inline void set_flags_N( uint8_t test ) {
|
|
m6502.flags.N = BITTEST(test, 7);
|
|
dbgPrintf("%c", m6502.flags.N ? 'N' : 'n');
|
|
}
|
|
|
|
static inline void set_flags_V( uint8_t test ) {
|
|
m6502.flags.V = BITTEST(test, 6);
|
|
dbgPrintf("%c", m6502.flags.V ? 'V' : 'v');
|
|
}
|
|
|
|
static inline void set_flags_Z( uint8_t test ) {
|
|
m6502.flags.Z = test == 0;
|
|
dbgPrintf("%c", m6502.flags.Z ? 'Z' : 'z');
|
|
}
|
|
|
|
static inline void set_flags_C( int test ) {
|
|
m6502.flags.C = test >= 0;
|
|
dbgPrintf("%c", m6502.flags.C ? 'C' : 'c');
|
|
}
|
|
|
|
static inline void set_flags_NZ( uint8_t test ) {
|
|
set_flags_N(test);
|
|
set_flags_Z(test);
|
|
}
|
|
|
|
static inline void set_flags_NVZ( uint8_t test ) {
|
|
set_flags_NZ(test);
|
|
set_flags_V(test);
|
|
}
|
|
|
|
static inline void set_flags_NZC( int test ) {
|
|
set_flags_NZ(test);
|
|
set_flags_C(test);
|
|
}
|
|
|
|
static inline void set_flags_NZCV( int test ) {
|
|
set_flags_NZC(test);
|
|
set_flags_V(test);
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif // __COMMON_H__
|