aboutsummaryrefslogtreecommitdiff
path: root/cpu/flags.go
blob: b6ede68cdd65843098d8a2bd7a3fb7d94b06101d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package cpu

const (
	FlagC uint8 = 1 << 0
	FlagZ uint8 = 1 << 1
	FlagI uint8 = 1 << 2
	FlagD uint8 = 1 << 3 // no-op on the NES's 2A03
	FlagB uint8 = 1 << 4 // only meaningful in the byte pushed by brk/irq
	FlagU uint8 = 1 << 5
	FlagV uint8 = 1 << 6
	FlagN uint8 = 1 << 7
)

func (c *CPU) setFlag(flag uint8, set bool) {
	if set {
		c.Status |= flag
	} else {
		c.Status &^= flag
	}
}

func (c *CPU) flag(flag uint8) bool {
	return c.Status&flag != 0
}

func (c *CPU) setZN(v uint8) {
	c.setFlag(FlagZ, v == 0)
	c.setFlag(FlagN, v&0x80 != 0)
}