This is Timer.m in view mode; [Download] [Up]
//
// Timer
//
// An Objective-C class for simulating a timer circuit.
//
#import "Timer.h"
@implementation Timer
- initNumBits:(int)nbits max:(bit *)maxval out:outnode
{
id xnorinputs[2];
id muxsources[2];
[super init];
numbits = nbits;
INITDEVTYPE("Timer");
TESTNODE("OUT", outnode, 1);
OUT = outnode;
one = [[Node alloc] initNumBits:1 fill:1];
max = [[Node alloc] initNumBits:numbits contents:maxval];
zero16 = [[Node alloc] initNumBits:numbits];
// fprintf(stderr, "Timer: zero16 node = %p.\n", zero16);
reg_out = [[Node alloc] initNumBits:nbits];
inc_out = [[Node alloc] initNumBits:nbits];
xnor_out = [[Node alloc] initNumBits:nbits];
mux_out = [[Node alloc] initNumBits:nbits];
//
// Allocate and Initialize Internal Functional Units:
//
fprintf(stderr, "Timer: Allocating Internal Functional Units.\n");
reg = [[Register alloc] initNumBits:numbits in:mux_out out:reg_out load:one];
inc = [[Incrementor alloc] initNumBits:numbits in:reg_out out:inc_out];
xnorinputs[0] = max;
xnorinputs[1] = inc_out;
xnor = [[XNORGate alloc] initNumInputs:2 inputs:xnorinputs
numBits:numbits
out:xnor_out];
and = [[ANDGate alloc] initNumBits:numbits in:xnor_out out:OUT];
muxsources[0] = inc_out;
muxsources[1] = zero16;
mux = [[MUX alloc] initNumBits:numbits numselectbits:1 select:OUT
sources:muxsources out:mux_out];
return self;
}
- free
{
[one free];
[max free];
[zero16 free];
[reg_out free];
[inc_out free];
[xnor_out free];
[mux_out free];
[reg free];
[inc free];
[xnor free];
[and free];
[mux free];
return [super free];
}
- cycle
{
[inc cycle];
[xnor cycle];
[and cycle];
[mux cycle];
[reg cycle];
return self;
}
@end
//
// End of file.
//These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.