//
// Register
//
// An Objective-C class for simulating computer registers.
//


#import "Register.h"


@implementation Register


- initNumBits:(int)nbits
	in:innode				// Where it gets its data.
	out:outnode				// Where it puts its data.
	load:loadnode				// Load signal.
{
    [super initNumBits:nbits];			// Call Node method.
    
    INITDEVTYPE("Register");
    
    TESTNODE("IN", innode, numbits);		// Test the interface nodes to make sure 
    TESTNODE("OUT", outnode, numbits);		//   they are the right sizes.
    TESTNODE("LOAD", loadnode, 1);
    
    IN = innode;				// Remember our interface nodes.
    OUT = outnode;
    LOAD = loadnode;
    
    return self;
}


- cycle
{
    int i;
    bit *inbits = [IN getBits];
    
    if(*([LOAD getBits]))			// If we are supposed to load,
        for(i = 0; i < numbits; i++)
	    data[i] = inbits[i];
	    
    [OUT setBits:data];				// Set out output node's bits to register value.
    
    return self;
}


@end


//
// End of file.
//