Sei sulla pagina 1di 15

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WindowsFormsApp2 //main function of the program

public partial class Form1 : Form //function for creating the


display of the program

bool address_pass = false; //Boolean value that is set to


enable the Start…

bool data_pass = false; //…button

public Form1()

InitializeComponent();

clear_form();

private void clear_form() //to make everything to default


settings

address_input.Enabled = false;

data_input.Enabled = false;

IO_Data.Enabled = false;

startbutton.Enabled = false;

ctrlbus_io.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_io.ForeColor = System.Drawing.Color.Maroon;
ctrlbus_mm.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_mm.ForeColor = System.Drawing.Color.Maroon;

addbus_mm.ForeColor = System.Drawing.Color.Maroon;

addbusline_mm.ForeColor = System.Drawing.Color.Maroon;

addbusline_mm1.ForeColor = System.Drawing.Color.Maroon;

addbusline_mm2.ForeColor = System.Drawing.Color.Maroon;

addbusline_mm3.ForeColor = System.Drawing.Color.Maroon;

databus_io.ForeColor = System.Drawing.Color.Maroon;

databus_io1.ForeColor = System.Drawing.Color.Maroon;

databusline_io.ForeColor = System.Drawing.Color.Maroon;

databusline_io.ForeColor = System.Drawing.Color.Maroon;

databusline_io2.ForeColor = System.Drawing.Color.Maroon;

databusline_io1.ForeColor = System.Drawing.Color.Maroon;

databus_mm.ForeColor = System.Drawing.Color.Maroon;

databusline_mm.ForeColor = System.Drawing.Color.Maroon;

databusline_mm1.ForeColor = System.Drawing.Color.Maroon;

databusline_mm2.ForeColor = System.Drawing.Color.Maroon;

IO_module.BackColor = System.Drawing.Color.Khaki;

address_buffer.BackColor = System.Drawing.Color.Khaki;

data_buffer.BackColor = System.Drawing.Color.Khaki;

row_decoder.BackColor = System.Drawing.Color.Khaki;

cs_cas.Text = "1";

cs_ras.Text = "1";

cs_we.Text = "1";

cs_re.Text = "1";

cs_cas.BackColor = System.Drawing.SystemColors.Control;

cs_ras.BackColor = System.Drawing.SystemColors.Control;

cs_we.BackColor = System.Drawing.SystemColors.Control;

cs_re.BackColor = System.Drawing.SystemColors.Control;

address_input.Text = "";

data_input.Text = "";

CPU_status.Text = "";

IO_status.Text = "";
MM_status.Text = "";

operation_sel.Text = "";

private void readbutton_CheckedChanged(object sender, EventArgs e)

{ //function when Read


is selected

address_input.Enabled = false; //address input is disabled

data_input.Enabled = false; //data input is


disabled

IO_Data.Enabled = false; //I/O input is disabled

startbutton.Enabled = false; //start button is


disabled

operation_sel.Enabled = true; //operation selection


is enabled

operation_sel.Items.Clear();

operation_sel.Items.Add("Main Memory to CPU");

operation_sel.Items.Add("I/O to CPU");

clear_form();

private void writebutton_CheckedChanged(object sender, EventArgs e)

{ //function when Write is


selected

address_input.Enabled = false;

data_input.Enabled = false;

IO_Data.Enabled = false;

startbutton.Enabled = false;

operation_sel.Enabled = true;

operation_sel.Items.Clear();

operation_sel.Items.Add("CPU to Main Memory");

operation_sel.Items.Add("CPU to I/O");

clear_form();

}
private void operation_sel_SelectedIndexChanged(object sender,
EventArgs e)

{ //function for operation


selection

if (operation_sel.Text == "Main Memory to CPU")

address_input.Enabled = true;

data_input.Enabled = false;

IO_Data.Enabled = false;

startbutton.Enabled = false;

else if (operation_sel.Text == "I/O to CPU")

address_input.Enabled = false;

data_input.Enabled = false;

IO_Data.Enabled = true;

startbutton.Enabled = false;

else if (operation_sel.Text == "CPU to Main Memory")

address_input.Enabled = true;

data_input.Enabled = true;

IO_Data.Enabled = false;

startbutton.Enabled = false;

else if (operation_sel.Text == "CPU to I/O")

address_input.Enabled = false;

data_input.Enabled = true;

IO_Data.Enabled = false;

startbutton.Enabled = false;

}
private void address_input_TextChanged(object sender, EventArgs e)

{ //function for user input for


address

int address_no = 0;

if (Int32.TryParse(address_input.Text, out address_no))

if ((address_no < 0) || (address_no > 9))

address_pass = false;

address_exe.Text = "";

CPU_status.Text = "Invalid Address";

startbutton.Enabled = false;

else

address_pass = true;

address_exe.Text = address_input.Text;

CPU_status.Text = "";

if (operation_sel.Text == "CPU to Main Memory")

if (address_pass && data_pass)

startbutton.Enabled = true;

else if (operation_sel.Text == "Main Memory to CPU")

startbutton.Enabled = true;

}
else

address_exe.Text = "";

startbutton.Enabled = false;

address_pass = false;

private void data_input_TextChanged(object sender, EventArgs e)

{ //function for user input for data

int data_no = 0;

if (Int32.TryParse(data_input.Text, out data_no))

if ((data_no < 0) || (data_no > 255))

data_pass = false;

data_exe.Text = "";

CPU_status.Text = "Invalid Data";

startbutton.Enabled = false;

else

data_pass = true;

data_exe.Text = data_input.Text;

CPU_status.Text = "";

if (data_pass && (address_pass || operation_sel.Text ==


"CPU to I/O"))

startbutton.Enabled = true;

else
{

data_exe.Text = "";

startbutton.Enabled = false;

data_pass = false;

private void IO_Data_TextChanged(object sender, EventArgs e)

{ //function for user input of I/O


data

int data_no = 0;

if (Int32.TryParse(IO_Data.Text, out data_no))

if ((data_no < 0) || (data_no > 255))

IO_status.Text = "Invalid Data";

startbutton.Enabled = false;

else

startbutton.Enabled = true;

else

startbutton.Enabled = false;

private void startbutton_Click(object sender, EventArgs e)

{ //function for enabling the usage of the start button


for execution

Label[] database = new Label[10] { data0, data1, data2, data3,


data4, data5, data6, data7, data8, data9 };
if (operation_sel.Text == "Main Memory to CPU")

CPU_status.Text = "Sending request to Main Memory";

Task.Delay(1000).Wait();

ctrlbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.Text = "> > > > > > ";

Task.Delay(1000).Wait();

CPU_status.Text = "";

ctrlbus_mm.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_mm.ForeColor = System.Drawing.Color.Maroon;

MM_status.Text = "Sending acknowledgement to CPU";

Task.Delay(1000).Wait();

ctrlbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.Text = "< < < < < < ";

Task.Delay(1000).Wait();

MM_status.Text = "";

ctrlbus_mm.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_mm.ForeColor = System.Drawing.Color.Maroon;

cs_re.Text = "0";

cs_re.BackColor = System.Drawing.Color.Orange;

Task.Delay(1000).Wait();

addbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

addbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

Task.Delay(1000).Wait();

MM_status.Text = "Decoding Address";

addbusline_mm1.ForeColor = System.Drawing.Color.LimeGreen;

address_buffer.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

cs_cas.Text = "0";

cs_ras.Text = "0";
cs_ras.BackColor = System.Drawing.Color.Orange;

cs_cas.BackColor = System.Drawing.Color.Orange;

addbusline_mm2.ForeColor = System.Drawing.Color.LimeGreen;

addbusline_mm3.ForeColor = System.Drawing.Color.LimeGreen;

row_decoder.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

int address = Convert.ToInt32(address_input.Text);

for (int add = 0; add < 10; add++)

if (add == address)

if (database[add].Text == "")

MessageBox.Show("No Data Available", "Message");

clear_form();

else

MM_status.Text = "";

CPU_status.Text = "Receiving data from Main


Memory";

databusline_mm2.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_mm2.Text = "vvvvvvvv";

Task.Delay(1000).Wait();

data_buffer.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

databusline_mm1.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_mm1.Text = "< < < < < < <";

Task.Delay(1000).Wait();

databus_mm.ForeColor =
System.Drawing.Color.LimeGreen;
databusline_mm.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_mm.Text = "< < < < < < ";

Task.Delay(1000).Wait();

data_exe.Text = database[add].Text;

MessageBox.Show("Data received from Main Memory",


"Message");

clear_form();

else if (operation_sel.Text == "CPU to Main Memory")

CPU_status.Text = "Sending request to Main Memory";

Task.Delay(1000).Wait();

ctrlbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.Text = "> > > > > > ";

Task.Delay(1000).Wait();

CPU_status.Text = "";

ctrlbus_mm.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_mm.ForeColor = System.Drawing.Color.Maroon;

MM_status.Text = "Sending acknowledgement to CPU";

Task.Delay(1000).Wait();

ctrlbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_mm.Text = "< < < < < < ";

Task.Delay(1000).Wait();

MM_status.Text = "";

ctrlbus_mm.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_mm.ForeColor = System.Drawing.Color.Maroon;
cs_we.Text = "0";

cs_we.BackColor = System.Drawing.Color.Orange;

Task.Delay(1000).Wait();

addbus_mm.ForeColor = System.Drawing.Color.LimeGreen;

addbusline_mm.ForeColor = System.Drawing.Color.LimeGreen;

Task.Delay(1000).Wait();

MM_status.Text = "Decoding Address";

addbusline_mm1.ForeColor = System.Drawing.Color.LimeGreen;

address_buffer.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

cs_cas.Text = "0";

cs_ras.Text = "0";

cs_ras.BackColor = System.Drawing.Color.Orange;

cs_cas.BackColor = System.Drawing.Color.Orange;

addbusline_mm2.ForeColor = System.Drawing.Color.LimeGreen;

addbusline_mm3.ForeColor = System.Drawing.Color.LimeGreen;

row_decoder.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

int address = Convert.ToInt32(address_input.Text);

for (int add = 0; add < 10; add++)

if (add == address)

MM_status.Text = "";

CPU_status.Text = "Sending data to Main Memory";

databus_mm.ForeColor = System.Drawing.Color.LimeGreen;

databusline_mm.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_mm.Text = "> > > > > >";

Task.Delay(1000).Wait();

databusline_mm1.ForeColor =
System.Drawing.Color.LimeGreen;
databusline_mm1.Text = "> > > > > > >";

Task.Delay(1000).Wait();

data_buffer.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

databusline_mm2.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_mm2.Text = "^^^^^^^^";

Task.Delay(1000).Wait();

database[add].Text = data_input.Text ;

MessageBox.Show("Data sent to Main Memory",


"Message");

clear_form();

else if (operation_sel.Text == "I/O to CPU")

CPU_status.Text = "Sending request to I/O Device";

Task.Delay(1000).Wait();

ctrlbus_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.Text = "< < < < < <";

Task.Delay(1000).Wait();

CPU_status.Text = "";

ctrlbus_io.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_io.ForeColor = System.Drawing.Color.Maroon;

IO_status.Text = "Sending acknowledgement to CPU";

Task.Delay(1000).Wait();

ctrlbus_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.Text = "> > > > > >";

Task.Delay(1000).Wait();
IO_status.Text = "";

ctrlbus_io.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_io.ForeColor = System.Drawing.Color.Maroon;

if (IO_Data.Text == "")

MessageBox.Show("No Data Available", "Message");

clear_form();

else

CPU_status.Text = "Receiving data from I/O Device";

databusline_io2.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_io2.Text = "vvvvv";

databus_io1.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io1.ForeColor =
System.Drawing.Color.LimeGreen;

databusline_io1.Text = "vvvvv";

Task.Delay(1000).Wait();

IO_module.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

databus_io.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io.Text = "> > > > > >";

Task.Delay(1000).Wait();

data_exe.Text = IO_Data.Text;

MessageBox.Show("Data received from I/O Device",


"Message");

clear_form();

else if (operation_sel.Text == "CPU to I/O")


{

CPU_status.Text = "Sending request to I/O Device";

Task.Delay(1000).Wait();

ctrlbus_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.Text = "< < < < < <";

Task.Delay(1000).Wait();

CPU_status.Text = "";

ctrlbus_io.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_io.ForeColor = System.Drawing.Color.Maroon;

IO_status.Text = "Sending acknowledgement to CPU";

Task.Delay(1000).Wait();

ctrlbus_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.ForeColor = System.Drawing.Color.LimeGreen;

ctrlbusline_io.Text = "> > > > > >";

Task.Delay(1000).Wait();

IO_status.Text = "";

ctrlbus_io.ForeColor = System.Drawing.Color.Maroon;

ctrlbusline_io.ForeColor = System.Drawing.Color.Maroon;

CPU_status.Text = "Sending data to I/O Device";

databus_io.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io.Text = "< < < < < <";

Task.Delay(1000).Wait();

IO_module.BackColor = System.Drawing.Color.Gold;

Task.Delay(1000).Wait();

databusline_io2.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io2.Text = "^^^^^";

databus_io1.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io1.ForeColor = System.Drawing.Color.LimeGreen;

databusline_io1.Text = "^^^^^";
Task.Delay(1000).Wait();

IO_Data.Text = data_input.Text;

MessageBox.Show("Data sent to I/O Device", "Message");

clear_form();

Potrebbero piacerti anche