public void IOManagerTests_WriteToIODevice_Success() { IOManager io = new IOManager(100); Device d1 = new Device() { Id = 1 }; Device d2 = new Device() { Id = 2 }; io.AddIODevice(80, d1); io.AddIODevice(82, d2); MicroSimulator micro = new MicroSimulator( new VirtualMemory(new string[] { }), io ); micro.WriteToMemory(80, "F3"); micro.WriteToMemory(82, "08"); Console.WriteLine(d1); Console.WriteLine(d2); Assert.AreEqual("Device[Id: 1, Data: 243]", d1.ToString()); Assert.AreEqual("Device[Id: 2, Data: 8]", d2.ToString()); Console.WriteLine(micro.ReadFromMemory(80)); Console.WriteLine(micro.ReadFromMemory(82)); }
public IOBinSemaforoUI(IOManager ioManager, ushort port) { InitializeComponent(); //initialize colors Red = IR.Fill; Yello = IA.Fill; Green = IV.Fill; Black = new SolidColorBrush(Color.FromRgb(0, 0, 0)); _active = true; _ioManager = ioManager; LightsOff(); portNumber.Content = "0x" + UnitConverter.IntToHex(port, defaultWidth: 3); // initialize IO Device semaforo = new IOBinSemaforo(port); //add function to delegate semaforo.GotBinContent += UpdateSemaforo; // try to add to IO Manager // exception wil be thrown if invalid port is selected _ioManager.AddIODevice(port, semaforo); try { MouseDown += delegate { DragMove(); }; } catch (Exception) { } }
public void ASCIIDisplayTests_TestPorts_Write() { VirtualMemory vm = new VirtualMemory(new string[] { "0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Starting State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); ushort start_port = 5; ASCII_Display display = new ASCII_Display(start_port, true); manager.AddIODevice(start_port, display); Console.WriteLine("\nAfter adding ASCII Display:"); Console.WriteLine(manager); Console.WriteLine($"\nIO Device: {display}"); Assert.AreEqual("00", display.ReadFromPort(5)); //Write To Valid port range Assert.IsTrue(display.WriteInPort(5, "48")); Assert.IsTrue(display.WriteInPort(6, "6F")); Assert.IsTrue(display.WriteInPort(7, "6C")); Assert.IsTrue(display.WriteInPort(8, "61")); Console.WriteLine(display); //Writing into invalid Ports //Positive before valid range Assert.AreEqual(display.WriteInPort(4, "X"), false); //Positive after valid range Assert.AreEqual(display.WriteInPort(13, "X"), false); //Maximum Port Number Assert.AreEqual(display.WriteInPort(short.MaxValue, "X"), false); //Negative Port Number Assert.AreEqual(display.WriteInPort(short.MinValue, "X"), false); }
public void IOManagerTests_AddAnIODevice_Success() { IOManager io = new IOManager(100); io.AddIODevice(80, new Device() { Id = 1 }); io.AddIODevice(82, new Device() { Id = 2 }); Console.WriteLine(io); Assert.AreEqual(2, io.ConnectedDevices); Assert.IsTrue(io.RemoveIODevice(80)); Assert.AreEqual(1, io.ConnectedDevices); }
public void ASCIIDisplayTests_ReadFromMicro_Success() { VirtualMemory vm = new VirtualMemory(new string[] { "0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Starting State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); ASCII_Display display = new ASCII_Display(5, true); manager.AddIODevice(5, display); Console.WriteLine("\nAfter adding ASCII Display:"); Console.WriteLine(manager); Console.WriteLine($"\nIO Device: {display}"); Assert.AreEqual("00", display.ReadFromPort(5)); display.WriteInPort(5, "48"); display.WriteInPort(6, "6F"); display.WriteInPort(7, "6C"); display.WriteInPort(8, "61"); Console.WriteLine(display); string h = micro.ReadFromMemory(5); string o = micro.ReadFromMemory(6); string l = micro.ReadFromMemory(7); string a = micro.ReadFromMemory(8); Assert.AreEqual("48", h); Assert.AreEqual("6F", o); Assert.AreEqual("6C", l); Assert.AreEqual("61", a); Console.WriteLine($"\nContent read in Hex: {h} {o} {l} {a}"); }
public void IOHexKeyboardTests_ReadFromMicro_Success() { VirtualMemory vm = new VirtualMemory(new string[] { "0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Initial State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); IOHexKeyboard kb = new IOHexKeyboard(5); manager.AddIODevice(5, kb); Console.WriteLine("\nAfter adding IO Hex Keyboard:"); Console.WriteLine(manager); Console.WriteLine($"\nIO Device: {kb}"); Assert.AreEqual("00", kb.ReadFromPort(5)); kb.KeyPress("A"); kb.KeyPress("A"); kb.KeyPress("A"); kb.KeyPress("F"); kb.KeyPress("A"); Console.WriteLine(kb); string contentHex = micro.ReadFromMemory(5); Assert.AreEqual("A1", contentHex); Console.WriteLine($"\nContent read in Hex: {contentHex}"); }
public void IOBinSemaforoTests_WriteFromMicro_Success() { VirtualMemory vm = new VirtualMemory(new string[] { "a806", "ff07", "0000", "0102", "0203", "c940", "a812", "1a04", "a816", "1904", "0b08", "a816" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Initial State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); IOBinSemaforo semaforo = new IOBinSemaforo(4, "#Debug"); manager.AddIODevice(4, semaforo); Console.WriteLine("\nAfter adding IO Hex Keyboard:"); Console.WriteLine(manager); for (int i = 0; i < 7; i++) { micro.NextInstruction(); } foreach (char c in semaforo.BitContent) { Assert.AreEqual('1', c); } Console.WriteLine(semaforo); }
public void SevenSegmentTestsTests_WriteFromMicro_Success() { VirtualMemory vm = new VirtualMemory(new string[] { "a806", "ff07", "0000", "0102", "0203", "c940", "a812", "1a04", "a816", "1904", "0b08", "a816" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Initial State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); IOSevenSegmentDisplay segment = new IOSevenSegmentDisplay(9); manager.AddIODevice(9, segment); Console.WriteLine("\nAfter adding IO Hex Keyboard:"); Console.WriteLine(manager); for (int i = 0; i < 7; i++) { micro.NextInstruction(); } foreach (char c in segment.Data) { Assert.AreEqual("11110110", segment.Data); } Console.WriteLine(segment); }
public IOHexKeyboardUI(IOManager ioManager, ushort port) { InitializeComponent(); _ioManager = ioManager; // initialize IO Device Keyboard = new IOHexKeyboard(port); portNumber.Content = "0x" + UnitConverter.IntToHex(port, defaultWidth: 3); // try to add to IO Manager // exception wil be thrown if invalid port is selected _ioManager.AddIODevice(port, Keyboard); try { MouseDown += delegate { DragMove(); }; } catch (Exception) { } }
public SevenSegmentWindow(IOManager ioManager, ushort port) { InitializeComponent(); _ioManager = ioManager; portNumber.Content = "0x" + UnitConverter.IntToHex(port, defaultWidth: 3); // initialize IO Device SegmentDisplay = new IOSevenSegmentDisplay(port); SegmentDisplay.UpdateGui += UpdateDisplay; // try to add to IO Manager // exception wil be thrown if invalid port is selected _ioManager.AddIODevice(port, SegmentDisplay); try { MouseDown += delegate { DragMove(); }; } catch (Exception) { } }
public Display_GUI(IOManager ioManager, ushort port) { InitializeComponent(); _ioManager = ioManager; _active = true; // initialize IO Device display = new ASCII_Display(port); portNumber.Content = "0x" + UnitConverter.IntToHex(port, defaultWidth: 3); display.GotHexData += UpdateAsciiDisplay; // try to add to IO Manager // exception wil be thrown if invalid port is selected _ioManager.AddIODevice(port, display); try { MouseDown += delegate { DragMove(); }; } catch (Exception) { } boxes = new TextBox[8]; boxes[0] = box_a; boxes[1] = box_b; boxes[2] = box_c; boxes[3] = box_d; boxes[4] = box_e; boxes[5] = box_f; boxes[6] = box_g; boxes[7] = box_h; }
public void ASCIIDisplayTests_TestPorts_Read_Write() { VirtualMemory vm = new VirtualMemory(new string[] { "0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Starting State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); ushort start_port = 5; ASCII_Display display = new ASCII_Display(start_port, true);//Starting port manager.AddIODevice(start_port, display); Console.WriteLine("\nAfter adding ASCII Display:"); Console.WriteLine(manager); Console.WriteLine($"\nIO Device: {display}"); Assert.AreEqual("00", display.ReadFromPort(5)); //Write To Valid port range Assert.IsTrue(display.WriteInPort(5, "48")); Assert.IsTrue(display.WriteInPort(6, "6F")); Assert.IsTrue(display.WriteInPort(7, "6C")); Assert.IsTrue(display.WriteInPort(8, "61")); Console.WriteLine(display); //Verify that it wrote to memory correctly Assert.AreEqual(display.ReadFromPort(5), micro.ReadFromMemory(5)); //Reading from invalid before Port Range var ex = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(4)); Assert.AreEqual(ex.Message, "Invalid port \n"); var ex3 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(13)); Assert.AreEqual(ex3.Message, "Invalid port \n"); //Maximum Port Number var ex1 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(short.MaxValue)); Assert.AreEqual(ex1.Message, "Invalid port \n"); //Minimum Port Number var ex2 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(short.MinValue)); Assert.AreEqual(ex2.Message, "Invalid port \n"); //Writing into invalid Ports //Positive before valid range Assert.AreEqual(display.WriteInPort(4, "X"), false); //Positive after valid range Assert.AreEqual(display.WriteInPort(13, "X"), false); //Maximum Port Number Assert.AreEqual(display.WriteInPort(short.MaxValue, "X"), false); //Negative Port Number Assert.AreEqual(display.WriteInPort(short.MinValue, "X"), false); }
public void ASCIIDisplayTests_TestPorts_Read() { VirtualMemory vm = new VirtualMemory(new string[] { "0000", "0000", "0000", "0000", "0000", "0000", "0000", "0000" }); IOManager manager = new IOManager(100); MicroSimulator micro = new MicroSimulator(vm, manager); Console.WriteLine("Starting State:"); Console.Write(vm); Console.WriteLine(manager); Console.WriteLine(micro); ASCII_Display display = new ASCII_Display(5, true); manager.AddIODevice(5, display); Console.WriteLine("\nAfter adding ASCII Display:"); Console.WriteLine(manager); Console.WriteLine($"\nIO Device: {display}"); display.WriteInPort(5, "48"); display.WriteInPort(6, "6F"); display.WriteInPort(7, "6C"); display.WriteInPort(8, "61"); Console.WriteLine(display); string h = micro.ReadFromMemory(5); string o = micro.ReadFromMemory(6); string l = micro.ReadFromMemory(7); string a = micro.ReadFromMemory(8); Assert.AreEqual("48", h); Assert.AreEqual("6F", o); Assert.AreEqual("6C", l); Assert.AreEqual("61", a); Console.WriteLine($"\nContent read in Hex: {h} {o} {l} {a}"); //Verify that it wrote to memory correctly Assert.AreEqual(display.ReadFromPort(5), micro.ReadFromMemory(5)); //Reading from invalid before Port Range var ex = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(4)); Assert.AreEqual(ex.Message, "Invalid port \n"); var ex3 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(15)); Assert.AreEqual(ex3.Message, "Invalid port \n"); //Maximum Port Number var ex1 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(short.MaxValue)); Assert.AreEqual(ex1.Message, "Invalid port \n"); //Minimum Port Number var ex2 = Assert.ThrowsException <ArgumentException>(() => display.ReadFromPort(short.MinValue)); Assert.AreEqual(ex2.Message, "Invalid port \n"); }