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)
}
|