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  }