github.com/jflude/taocp@v0.0.0-20240210234939-99f2a91af3c2/mix/load.go (about) 1 package mix 2 3 func (c *Computer) lda(aa Word, i, f, op, m int) (int64, error) { 4 c.checkInterlock(m, m) 5 v := c.Contents[mBase+m].Field(f) 6 r := op - LDA 7 if r >= I1 && r <= I6 { 8 if x := v.Int(); x < MinIndex || x > MaxIndex { 9 panic(ErrInvalidIndex) 10 } 11 } 12 c.Reg[r] = v 13 return 2, nil 14 } 15 16 func (c *Computer) ldan(aa Word, i, f, op, m int) (int64, error) { 17 c.checkInterlock(m, m) 18 v := c.Contents[mBase+m].Field(f).Negate() 19 r := op - LDAN 20 if r >= I1 && r <= I6 { 21 if x := v.Int(); x < MinIndex || x > MaxIndex { 22 panic(ErrInvalidIndex) 23 } 24 } 25 c.Reg[r] = v 26 return 2, nil 27 } 28 29 func (c *Computer) sta(aa Word, i, f, op, m int) (int64, error) { 30 c.checkInterlock(m, m) 31 c.Contents[mBase+m].SetField(f, c.Reg[op-STA]) 32 return 2, nil 33 }