izapple2/registers.go

41 lines
1.1 KiB
Go
Raw Normal View History

2019-01-26 15:59:36 +00:00
package main
const (
2019-01-27 18:57:17 +00:00
regA = 0
regX = 1
regY = 2
regP = 4
regSP = 5
regPC = 6 // 2 bytes
2019-01-26 15:59:36 +00:00
)
type registers struct {
data [8]uint8
}
2019-01-26 17:57:03 +00:00
func (r *registers) getRegister(i int) uint8 { return r.data[i] }
2019-01-26 15:59:36 +00:00
2019-01-27 18:57:17 +00:00
func (r *registers) getA() uint8 { return r.data[regA] }
func (r *registers) getX() uint8 { return r.data[regX] }
func (r *registers) getY() uint8 { return r.data[regY] }
func (r *registers) getP() uint8 { return r.data[regP] }
func (r *registers) getSP() uint8 { return r.data[regSP] }
2019-01-26 17:57:03 +00:00
func (r *registers) setRegister(i int, v uint8) {
2019-01-26 15:59:36 +00:00
r.data[i] = v
}
2019-01-27 18:57:17 +00:00
func (r *registers) setA(v uint8) { r.setRegister(regA, v) }
func (r *registers) setX(v uint8) { r.setRegister(regX, v) }
func (r *registers) setY(v uint8) { r.setRegister(regY, v) }
func (r *registers) setP(v uint8) { r.setRegister(regP, v) }
func (r *registers) setSP(v uint8) { r.setRegister(regSP, v) }
2019-01-26 15:59:36 +00:00
2019-01-26 17:57:03 +00:00
func (r *registers) getPC() uint16 {
2019-01-26 15:59:36 +00:00
return uint16(r.data[regPC])*256 + uint16(r.data[regPC+1])
}
2019-01-26 17:57:03 +00:00
func (r *registers) setPC(v uint16) {
2019-01-26 15:59:36 +00:00
r.data[regPC] = uint8(v >> 8)
r.data[regPC+1] = uint8(v)
}