annotate Examples/multiply/multi @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2 /* multipiler by Ben Moszkowski */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 mux(Switch,In1,In2,Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 if Switch = 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 then Out = In2
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 else Out = In1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9 reg(In,Out) :- @Out = In.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 flipflop(In,Out) :- @Out = In.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 dec(In,Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 if In = 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 then Out = 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 else Out = In-1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 adder(In1,In2,Out) :- Out = In1+In2.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 zero_test(In,Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 if In = 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 then Out = 1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 else Out = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 or_gate(In1,In2,Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 Out1 is In1 \/ In2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 Out = Out1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 mult_imp(In1,In2,M,N,Done) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 % exists,(B1,B2,B3,B4,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 #zero_test(In1,B4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 #(L10 = 0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 #mux(B4,L10,In2,L9),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 #zero_test(In2,B2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 #dec(In1,L6),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 #adder(L9,M,L8),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 #dec(N,L3),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 #mux(Done,L9,L8,L7),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 #reg(L7,M),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 #mux(Done,In1,L3,L1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 #reg(L1,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 #dec(L3,L4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 #mux(Done,L6,L4,L5),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 #zero_test(L5,B1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 #or_gate(B1,B2,B3),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 #flipflop(B3,Done).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 main :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 read((In1,In2)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 Done = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 M = 39,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 N = 83,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 In1 <-- In1,In2 <-- In2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 mult_imp(In1,In2,M,N,Done),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 @(halt(Done=1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 #write((Done,M,N)).