@% = 2 PRINT "1100 + 1100 = "; PROC4bitadd(1,1,0,0, 1,1,0,0, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1100 + 1101 = "; PROC4bitadd(1,1,0,0, 1,1,0,1, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1100 + 1110 = "; PROC4bitadd(1,1,0,0, 1,1,1,0, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1100 + 1111 = "; PROC4bitadd(1,1,0,0, 1,1,1,1, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1101 + 0000 = "; PROC4bitadd(1,1,0,1, 0,0,0,0, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1101 + 0001 = "; PROC4bitadd(1,1,0,1, 0,0,0,1, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1101 + 0010 = "; PROC4bitadd(1,1,0,1, 0,0,1,0, e,d,c,b,a) : PRINT e,d,c,b,a PRINT "1101 + 0011 = "; PROC4bitadd(1,1,0,1, 0,0,1,1, e,d,c,b,a) : PRINT e,d,c,b,a END DEF PROC4bitadd(a3&, a2&, a1&, a0&, b3&, b2&, b1&, b0&, \ \ RETURN c3&, RETURN s3&, RETURN s2&, RETURN s1&, RETURN s0&) LOCAL c0&, c1&, c2& PROCfulladder(a0&, b0&, 0, s0&, c0&) PROCfulladder(a1&, b1&, c0&, s1&, c1&) PROCfulladder(a2&, b2&, c1&, s2&, c2&) PROCfulladder(a3&, b3&, c2&, s3&, c3&) ENDPROC DEF PROCfulladder(a&, b&, c&, RETURN s&, RETURN c1&) LOCAL x&, y&, z& PROChalfadder(a&, c&, x&, y&) PROChalfadder(x&, b&, s&, z&) c1& = y& OR z& ENDPROC DEF PROChalfadder(a&, b&, RETURN s&, RETURN c&) s& = FNxorgate(a&, b&) c& = a& AND b& ENDPROC DEF FNxorgate(a&, b&) LOCAL c&, d& c& = a& AND NOT b& d& = b& AND NOT a& = c& OR d&