All pastes #286847 Raw Edit

Stuff

public text v1 · immutable
#286847 ·published 2006-12-20 23:17 UTC
rendered paste body
%Made by Mahmoud Elsaftawy
%Date: December 11, 2006
%Class: Tombs-TEE2O0






% A and B inputs
var a, b : int
var A, B : boolean
get a, b

if a = 1 then
    A := true
else
    A := false
end if

if b = 1 then
    B := true
else
    B := false
end if


% C and D inputs

var c, d : int
var C, D : boolean
get c, d

if c = 1 then
    C := true
else
    C := false
end if

if d = 1 then
    D := true
else
    D := false
end if

%Y output
var Y : boolean

cls

% variables:
var font : int
font := Font.New ("Comic Sans MS:15")

if C then
    Draw.Text ("C", 20, 215, font, green)
else
    Draw.Text ("C", 20, 215, font, red)
end if

if D then
    Draw.Text ("D", 20, 175, font, green)
else
    Draw.Text ("D", 20, 175, font, red)
end if



%logic

%OR gate (1)
var or1 : boolean
if A or B then
    or1 := true
else
    or1 := false
end if

if or1 then
    %OR gate(1):
    drawfilloval (60, 350, 100, 50, green) %or1
    drawfilloval (50, 350, 100, 50, green) %or1
    drawoval (20, 350, 100, 60, green)     %or1
    drawfilloval (20, 350, 90, 64, white)  %or1
    drawline (30, 365, 109, 365, black)    %Input A
    drawline (30, 335, 109, 335, black)    %Input B
    drawline (220, 350, 160, 350, black)   %Output or1
else
    %OR gate(1):
    drawfilloval (60, 350, 100, 50, red)   %or1
    drawfilloval (50, 350, 100, 50, red)   %or1
    drawoval (20, 350, 100, 60, red)       %or1
    drawfilloval (20, 350, 90, 64, white)  %or1
    drawline (30, 365, 109, 365, black)    %Input A
    drawline (30, 335, 109, 335, black)    %Input B
    drawline (220, 350, 160, 350, black)   %Output or1
end if


%NOT gate (2)
var not2 : boolean
if not or1 then
    not2 := true
    %NOT gate (2):
    drawline (220, 370, 220, 330, green) %not2
    drawline (220, 370, 250, 350, green) %not2
    drawline (220, 330, 250, 350, green) %not2
    drawfill (225, 350, green, green)    %fill gate (not2)
    drawfilloval (258, 350, 6, 6, green) %not2
    drawline (280, 350, 264, 350, black) %Output
else
    not2 := false
    %NOT gate (2):
    drawline (220, 370, 220, 330, red)   %not2
    drawline (220, 370, 250, 350, red)   %not2
    drawline (220, 330, 250, 350, red)   %not2
    drawfill (225, 350, red, red)        %fill gate (not2)
    drawfilloval (258, 350, 6, 6, red)   %not2
    drawline (280, 350, 264, 350, black) %Output
end if


%AND gate (3)
var and3 : boolean
if C = true and D = true then
    and3 := true
else
    and3 := false
end if

if and3 then
    %AND gate(3):
    drawfilloval (100, 200, 50, 40, green) %and3
    drawfillbox (100, 250, 50, 100, white) %and3
    drawline (100, 240, 100, 160, green)   %and3
    drawline (100, 220, 35, 220, black)    %Input C
    drawline (100, 180, 35, 180, black)    %Input D
    drawline (150, 200, 200, 200, black)   %Output and3
else
    %AND gate(3):
    drawfilloval (100, 200, 50, 40, red)   %and3
    drawfillbox (100, 250, 50, 100, white) %and3
    drawline (100, 240, 100, 160, red)     %and3
    drawline (100, 220, 35, 220, black)    %input C
    drawline (100, 180, 35, 180, black)    %input D
    drawline (150, 200, 200, 200, black)   %output CD
end if


%NOT gate (4)
var not4 : boolean
if not and3 then
    not4 := true
    %NOT gate (4):
    drawline (200, 220, 200, 180, green)  %not4
    drawline (200, 220, 230, 200, green)  %not4
    drawline (200, 180, 230, 200, green)  %not4
    drawfill (215, 200, green, green)     %fill gate (not4)
    drawfilloval (238, 200, 6, 6, green)  %not4
    drawline (245, 200, 280, 200, black)  %output not4
else
    not4 := false
    %NOT gate (4):
    drawline (200, 220, 200, 180, red)    %not4
    drawline (200, 220, 230, 200, red)    %not4
    drawline (200, 180, 230, 200, red)    %not4
    drawfill (215, 200, red, red)         %fill gate
    drawfilloval (238, 200, 6, 6, red)    %not4
    drawline (245, 200, 280, 200, black)  %output not4
end if


%AND gate (5)
var and5 : boolean
if not2 and not4 = true then
    and5 := true
    %AND gate(5):
    drawfilloval (360, 270, 60, 40, green)  %and5
    drawfillbox (370, 220, 250, 320, white) %and5
    drawline (370, 230, 370, 310, green)    %and5
    drawline (280, 350, 280, 300, black)    %between output not2 and input and5
    drawline (280, 300, 370, 300, black)    %first input and5
    drawline (280, 200, 280, 250, black)    %between output not4 and input and5
    drawline (280, 250, 370, 250, black)    %second input and5
    drawline (525, 270, 420, 270, black)    %output and5
else
    and5 := false
    %AND gate(5):
    drawfilloval (360, 270, 60, 40, red)     %and5
    drawfillbox (370, 220, 250, 320, white)  %and5
    drawline (370, 230, 370, 310, red)       %and5
    drawline (280, 350, 280, 300, black)     %between output not2 and input and5
    drawline (280, 300, 370, 300, black)     %first input and5
    drawline (280, 200, 280, 250, black)     %between output not4 and input and5
    drawline (280, 250, 370, 250, black)     %second input and5
    drawline (525, 270, 420, 270, black)     %output and5
end if


%NOT gate (6)
var not6 : boolean
if not and5 then
    not6 := true
    %NOT gate (6):
    drawline (510, 200, 540, 200, green) %not6
    drawline (510, 200, 525, 170, green) %not6
    drawline (540, 200, 525, 170, green) %not6
    drawfill (520, 185, green, green)    %fill gate (not6)
    drawfilloval (525, 164, 6, 6, green) %not6
    drawline (525, 270, 525, 200, black) %input not6
    drawline (525, 158, 525, 30, black)  %Output not6
else
    not6 := false
    %NOT gate (6):
    drawline (510, 200, 540, 200, red)   %not6
    drawline (510, 200, 525, 170, red)   %not6
    drawline (540, 200, 525, 170, red)   %not6
    drawfill (520, 185, red, red)        %fill gate (not6)
    drawfilloval (525, 164, 6, 6, red)   %not6
    drawline (525, 270, 525, 200, black) %input not6
    drawline (525, 158, 525, 30, black)  %Output not6
end if


%NOT gate (7)
var not7 : boolean
if not D then
    not7 := true
    %NOT gate (7):
    drawline (200, 145, 200, 115, green)  %not7
    drawline (200, 145, 230, 130, green)  %not7
    drawline (200, 115, 230, 130, green)  %not7
    drawfill (215, 130, green, green)     %fill gate (not7)
    drawfilloval (236, 130, 6, 6, green)  %not7
    drawfilloval (70, 180, 2, 2, black)   %fill oval on D
    drawline (70, 180, 70, 130, black)    %between D and not7
    drawline (70, 130, 200, 130, black)   %input not7
    drawline (242, 130, 490, 130, black)  %Output not7
else
    not7 := false
    %NOT gate (7):
    drawline (200, 145, 200, 115, red)    %not7
    drawline (200, 145, 230, 130, red)    %not7
    drawline (200, 115, 230, 130, red)    %not7
    drawfill (215, 130, red, red)         %fill gate (not7)
    drawfilloval (236, 130, 6, 6, red)    %not7
    drawfilloval (70, 180, 2, 2, black)   %fill oval on D
    drawline (70, 180, 70, 130, black)    %between D and not7
    drawline (70, 130, 200, 130, black)   %input not7
    drawline (242, 130, 490, 130, black)  %Output not7
end if


%OR gate (8)
var or8 : boolean
if not6 or not7 then
    or8 := true
    %OR gate (8):
    drawfilloval (450, 50, 60, 40, green)  %or8
    drawfilloval (480, 50, 40, 50, white)  %or8
    drawoval (450, 50, 30, 40, green)      %or8
    drawfilloval (470, 50, 40, 50, white)  %or8
    drawline (490, 130, 490, 75, black)    %between not7 and first Input of or8
    drawline (490, 75, 435, 75, black)     %first Input
    drawline (525, 30, 433, 30, black)     %second Input (not6)
    drawline (390, 50, 320, 50, black)     %output
else
    or8 := false
    %OR gate (8):
    drawfilloval (450, 50, 60, 40, red)    %or8
    drawfilloval (480, 50, 40, 50, white)  %or8
    drawoval (450, 50, 30, 40, red)        %or8
    drawfilloval (470, 50, 40, 50, white)  %or8
    drawline (490, 130, 490, 75, black)    %between not7 and first Input of or8
    drawline (490, 75, 435, 75, black)     %first Input
    drawline (525, 30, 433, 30, black)     %second Input (not6)
    drawline (390, 50, 320, 50, black)     %output
end if


%NOT gate (9)
if not or8 then
    Y := true
    %Last NOT gate (9):
    drawline (320, 65, 320, 35, green)  %not9
    drawline (320, 65, 290, 50, green)  %not9
    drawline (320, 35, 290, 50, green)  %not9
    drawfill (305, 55, green, green)    %fill gate not9
    drawfilloval (284, 50, 6, 6, green) %not9
    drawline (278, 50, 210, 50, black)  %output not9
else
    Y := false
    %Last NOT gate (9):
    drawline (320, 65, 320, 35, red)    %not9
    drawline (320, 65, 290, 50, red)    %not9
    drawline (320, 35, 290, 50, red)    %not9
    drawfill (305, 55, red, red)        %fill gate not9
    drawfilloval (284, 50, 6, 6, red)   %not9
    drawline (278, 50, 210, 50, black)  %output
end if


%variables
if Y then
    Draw.Text ("Y", 197, 45, font, green)
else
    Draw.Text ("Y", 197, 45, font, red)
end if

if A then
    Draw.Text ("A", 15, 360, font, green)
else
    Draw.Text ("A", 15, 360, font, red)
end if

if B then
    Draw.Text ("B", 15, 330, font, green)
else
    Draw.Text ("B", 15, 330, font, red)
end if