This is Adder.m in view mode; [Download] [Up]
// // Adder // // An Objective-C class for simulating digital logic which // simulates a two-input, n-stage full adder with carry-in // and carry-out. // #import "Adder.h" @implementation Adder - initNumBits:(int)nbits a:anode b:bnode cin:cinnode cout:coutnode out:outnode { [super initNumBits:nbits]; INITDEVTYPE("Adder"); TESTNODE("A", anode, numbits); TESTNODE("B", bnode, numbits); TESTNODE("CIN", cinnode, 1); TESTNODE("COUT", coutnode, 1); TESTNODE("OUT", outnode, numbits); A = anode; B = bnode; CIN = cinnode; COUT = coutnode; OUT = outnode; return self; } - cycle { int i; int sum; bit carry = *([CIN getBits]); bit *abits = [A getBits]; bit *bbits = [B getBits]; for(i = 0; i < numbits; i++) { sum = abits[i] + bbits[i] + carry; carry = (sum > 1); sum = sum - (2 * carry); data[i] = sum; } [COUT setBits:&carry]; [OUT setBits:data]; 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.