From c474907d722808fca6f179b06f0c434dd8efe502 Mon Sep 17 00:00:00 2001 From: David Bowerman Date: Wed, 3 Jun 2026 15:51:30 -0400 Subject: [PATCH] Added Hex Conversions to allow for loading programs into memory from Hex Files. --- CPU.cs | 23 ++- MC.cs | 2 +- Utils.cs | 141 ++++++++++++++++++ bin/Debug/net10.0/CPUSimulation.dll | Bin 12800 -> 17408 bytes bin/Debug/net10.0/CPUSimulation.exe | Bin 162304 -> 162304 bytes bin/Debug/net10.0/CPUSimulation.pdb | Bin 15580 -> 16604 bytes .../net10.0/CPUSimulation.AssemblyInfo.cs | 2 +- .../CPUSimulation.AssemblyInfoInputs.cache | 2 +- obj/Debug/net10.0/CPUSimulation.dll | Bin 12800 -> 17408 bytes obj/Debug/net10.0/CPUSimulation.pdb | Bin 15580 -> 16604 bytes obj/Debug/net10.0/apphost.exe | Bin 162304 -> 162304 bytes obj/Debug/net10.0/ref/CPUSimulation.dll | Bin 6656 -> 7168 bytes obj/Debug/net10.0/refint/CPUSimulation.dll | Bin 6656 -> 7168 bytes 13 files changed, 163 insertions(+), 7 deletions(-) diff --git a/CPU.cs b/CPU.cs index 64b461d..4984b41 100644 --- a/CPU.cs +++ b/CPU.cs @@ -4,21 +4,36 @@ namespace CPUSimulation { public class CPU { + static string _program = "D8;58;A0;7F;8C;12;D0;A9;A7;8D;11;D0;8D;13;D0;C9;DF;F0;13;C9;9B;F0;03;C8;10;0F;A9;DC;20;EF;FF;A9;8D;20;EF;FF;A0;01;88;30;F6;AD;11;D0;10;FB;AD;10;D0;99;00;02;20;EF;FF;C9;8D;D0;D4;A0;FF;A9;00;AA;0A;85;2B;C8;B9;00;02;C9;8D;F0;D4;C9;AE;90;F4;F0;F0;C9;BA;F0;EB;C9;D2;F0;3B;86;28;86;29;84;2A;B9;00;02;49;B0;C9;0A;90;06;69;88;C9;FA;90;11;0A;0A;0A;0A;A2;04;0A;26;28;26;29;CA;D0;F8;C8;D0;E0;C4;2A;F0;97;24;2B;50;10;A5;28;81;26;E6;26;D0;B5;E6;27;4C;44;FF;6C;24;00;30;2B;A2;02;B5;27;95;25;95;23;CA;D0;F7;D0;14;A9;8D;20;EF;FF;A5;25;20;DC;FF;A5;24;20;DC;FF;A9;BA;20;EF;FF;A9;A0;20;EF;FF;A1;24;20;DC;FF;86;2B;A5;24;C5;28;A5;25;E5;29;B0;C1;E6;24;D0;02;E6;25;A5;24;29;07;10;C8;48;4A;4A;4A;4A;20;E5;FF;68;29;0F;09;B0;C9;BA;90;02;69;06;2C;12;D0;30;FB;8D;12;D0;60;00;00;00;0F;00;FF;00;00"; public static int numberOfMemoryBanks = 2; - static int memoryBankSize = 1024; + static int memoryBankSize = 65536; static MC _memoryController; public static void Main(string[] args) { InitilizeMemoryController(); - + string[] strings = _program.Split(';'); + Int16 startAddress = Utils.HexStringToInt16("7F00"); + for (int i = 0; i < strings.Length; i++) + { + Int16 currentAddress = (Int16)(startAddress + i); + string byteString = strings[i]; + if (byteString.Length != 2) + { + throw new ArgumentException($"Byte string length must be 2. Invalid byte string: {byteString}"); + } + Byte byteToWrite = new Byte(Utils.HexStringToBinaryString(byteString)); + Word wordToWrite = new Word(new Byte[2] { new Byte("00000000"), byteToWrite }); + _memoryController.Write(currentAddress, wordToWrite); + } _memoryController.Write("0000000000000001","0000000011110000"); _memoryController.Write("0000000000000010","1111000000001111"); for (int i = 0; i < 16; i++) { - string dataRead = _memoryController.Read((Int16)i); - Console.WriteLine($"Data read from address {new Address((Int16)i).ToString()}: {dataRead}"); + Int16 currentAddress = (Int16)(startAddress + i); + string dataRead = Utils.BinaryStringToHexString(_memoryController.Read(currentAddress)); + Console.WriteLine($"Data read from address {Utils.BinaryStringToHexString(new Address(currentAddress).ToString())}: {dataRead}"); } } diff --git a/MC.cs b/MC.cs index 00d52e0..af83c9f 100644 --- a/MC.cs +++ b/MC.cs @@ -113,7 +113,7 @@ namespace CPUSimulation { if (address < 0 || address >= _memoryBankSize) { - throw new ArgumentOutOfRangeException(nameof(address), $"Address must be between 0 and {_memoryBankSize - 1}."); + throw new ArgumentOutOfRangeException(nameof(address), $"Received {address}. Address must be between 0 and {_memoryBankSize - 1}."); } } diff --git a/Utils.cs b/Utils.cs index 00da09d..f31f4e5 100644 --- a/Utils.cs +++ b/Utils.cs @@ -48,5 +48,146 @@ namespace CPUSimulation { return Convert.ToString(value & 0xFFFF, 2).PadLeft(16, '0'); } + + + public static string BinaryStringToHexString(string binaryString) + { + if (binaryString.Length % 4 != 0) + { + throw new ArgumentException("Binary string length must be a multiple of 4."); + } + string hexString = ""; + for (int i = 0; i < binaryString.Length; i += 4) + { + string fourBits = binaryString.Substring(i, 4); + switch (fourBits) + { + case "0000": + hexString += "0"; + break; + case "0001": + hexString += "1"; + break; + case "0010": + hexString += "2"; + break; + case "0011": + hexString += "3"; + break; + case "0100": + hexString += "4"; + break; + case "0101": + hexString += "5"; + break; + case "0110": + hexString += "6"; + break; + case "0111": + hexString += "7"; + break; + case "1000": + hexString += "8"; + break; + case "1001": + hexString += "9"; + break; + case "1010": + hexString += "A"; + break; + case "1011": + hexString += "B"; + break; + case "1100": + hexString += "C"; + break; + case "1101": + hexString += "D"; + break; + case "1110": + hexString += "E"; + break; + case "1111": + hexString += "F"; + break; + } + } + return hexString; + } + + public static string HexStringToBinaryString(string hexString) + { + string binaryString = ""; + foreach (char hexChar in hexString) + { + switch (hexChar) + { + case '0': + binaryString += "0000"; + break; + case '1': + binaryString += "0001"; + break; + case '2': + binaryString += "0010"; + break; + case '3': + binaryString += "0011"; + break; + case '4': + binaryString += "0100"; + break; + case '5': + binaryString += "0101"; + break; + case '6': + binaryString += "0110"; + break; + case '7': + binaryString += "0111"; + break; + case '8': + binaryString += "1000"; + break; + case '9': + binaryString += "1001"; + break; + case 'A': + case 'a': + binaryString += "1010"; + break; + case 'B': + case 'b': + binaryString += "1011"; + break; + case 'C': + case 'c': + binaryString += "1100"; + break; + case 'D': + case 'd': + binaryString += "1101"; + break; + case 'E': + case 'e': + binaryString += "1110"; + break; + case 'F': + case 'f': + binaryString += "1111"; + break; + } + } + return binaryString; + } + + public static Int16 HexStringToInt16(string hexString) + { + if (hexString.Length > 4) + { + throw new ArgumentException("Hex string length must be 4 or less."); + } + return Convert.ToInt16(hexString, 16); + } } } \ No newline at end of file diff --git a/bin/Debug/net10.0/CPUSimulation.dll b/bin/Debug/net10.0/CPUSimulation.dll index a299f516f780282f536a6144c199d3552dba0007..2cb10151f53bb6b980f0d180cb10874f0daec120 100644 GIT binary patch literal 17408 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 delta 5407 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 delta 99 zcmZqp!r1^sEsR^349fk}7!rZdoWX*@fWeT#7|1eXNMW!9@-2YkMhrn+a diff --git a/bin/Debug/net10.0/CPUSimulation.pdb b/bin/Debug/net10.0/CPUSimulation.pdb index 2fd964ea8dada8811cd4d256093b3ac92009cc37..8fef99e768fcc5d6dd7af00adef712db473e3bbd 100644 GIT binary patch delta 3349 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 Nb=x)LNc}eS{SSnU52XMA diff --git a/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs b/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs index bcf6372..00577ee 100644 --- a/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs +++ b/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("CPUSimulation")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+faa7801376d988a2b7b81332c9df3db882f08224")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+eae5314e3b7572a343c4caa2d16fb0b1c62c28a0")] [assembly: System.Reflection.AssemblyProductAttribute("CPUSimulation")] [assembly: System.Reflection.AssemblyTitleAttribute("CPUSimulation")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache b/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache index f3f5d59..7e1b0bd 100644 --- a/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache +++ b/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache @@ -1 +1 @@ -0093ec249d1fba7433aea9a209b4614dc995df5d3b8e509911d9d959d0697898 +798170df39efaf27b92d72c4185cce11e4e39a47cca7daccb922366ffee2735d diff --git a/obj/Debug/net10.0/CPUSimulation.dll b/obj/Debug/net10.0/CPUSimulation.dll index a299f516f780282f536a6144c199d3552dba0007..2cb10151f53bb6b980f0d180cb10874f0daec120 100644 GIT binary patch literal 17408 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 delta 5407 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 Nb=x)LNc}eS{SSnU52XMA diff --git a/obj/Debug/net10.0/apphost.exe b/obj/Debug/net10.0/apphost.exe index e5a074b672d649392f7ddd721d00260192476373..aae7d0d62f45f87f990b2af819f9710127ae2878 100644 GIT binary patch delta 99 zcmWNH(G7qg5JM|}ZUdfzTR4LvuE3|5IFgBrIe;&@UfS2TuW#JlJ%fyQ8_%+I71wzG>mSa}rS5t`9V@87e!%l#p06Ab_W delta 99 zcmZqp!r1^sEsR^349fk}7!rZdoWX*@fWeT#7|1eXNMW!9@-2YkMhrn+a diff --git a/obj/Debug/net10.0/ref/CPUSimulation.dll b/obj/Debug/net10.0/ref/CPUSimulation.dll index c9afc7b4247586eefc553cd375483c72d677f723..5359233753ea9d75e596a834ee4e61265f0c8b70 100644 GIT binary patch delta 2158 zcmZWqZEqA+6n^H;vO=lb+0r6VDlC;y1aV*bvH~To#n7geR$Gh&O*-8Ubi;Ow?bd*z zTWKUJB(@ns3<;6M_!2ROQ2C-Ue5f&)kmwI62IYeZUoa*ZLNxl^GqW$~Z0@Gwp793l6zvBjuye>OH5YvzOMzF|F|N>|PPncDqU{p{HG*7hCq z;lLduf<-3KR~LuE5)8HjNoF>vIfBd`b^C*jZ8w(y4Q~RyL11fud>}WG&K{a%9FB6a zG@)VN0FIMen(x`yy_@&b)L*z)f}8STD*a?Sbt6ZFql!auG;sJO?o=>Q3|H`w)-j|Dj3j_3QI-pRi0Wds>bwG2zj0KS6_z3dD2f)E9!u+ zR*SNIRVQlEpI0y2RL5oNf{*cqS$LU?*J>kH;+pw5`rGwmoJG=nf^$7}a#beJCsifM z?JZXcKA9hiZal@r1$7R)xY;H344<=@)a+rSmXw9%1%(0C&lWBD@`DdZi_Ka{`iFUd zoly$4ONxsbWtS8p&mqevE=5l9rIpkhs3}txYJK%R&ZrZ4Zci!HE-BOmPU4Y*4_}$@ z6_rdZDsG}VTU4HJbzvTTAE2N-U!CteizDo@d`TwNCss2(jU z16Q!lS9&o)toM}*Wqw^$o-a~}L`5KoNWLgvQWpPwg)JRWC-~jbeYL6uM`F$k-j_&^e_Nd8#per?pJb>)&wo-I@FpB$0fiYUvsd_w z!Xx~^6pG!IxmU~ZZz<-eWyr9x!^9w8M#ikbX5lfg|1I`)hS(w4E%=<^enDF>O*HTd zu@=V!-z5gw^TfY-6`y#Wt+KHDVopBR1f7;uhQ`CeX~79q1xX;y6I;#9^EvPU4)A5}p!1BYZ~qg75|5w}jskZW?;7Y3RA@g*W)9EuF$U#hcPR zZ=^)bh+{_hN5<=1?}G5awBF$ItBsrLA46hZgHv)3@ms;G%Q@aFy2p-WoG~YxvvcY3rPjdB?~+ozB`5#|qhtg)mwu38^?ZULIJ!pa<;3W!az$Pvsmhcb7dmI{#s) z{{P3Ld%fyX6+iEx5Fw~xS;#$ZU2Jr0r#TU8auUO>&8=}e(UeFvrEEJs5^Fg)9376O zTH>jA(vG@);f?NOI9&acf5Pf5yRCWqTx6wM>~+5k54lmbI3KExn|%&!IA~_i#Lz^R zz%W{=TM?%xL0f`7*TiA-7sm+WT5yn2QH~hxEwrXMlJrOC->*HU)L%R0l%I<}^e=)& Ba)tl^ delta 1862 zcmZWqTTEP46kX?B7yR+E|^KwEi|Be3*XtVfbiF8?;{<|NU~EeeW=1y_2)fT6^!a_j%p9 z%g*w^r3>9hTQ+}!|J+44YE>AhqoKw#{+e9-W~$+Q5*Rav8Q|y2wXWv6WiM)$j=gS| ze!@MW#%k`=G9*^9RuKdk>__`C1#4}Y=v@?4>*;&0W3 z8%$uH=h-wWF_{2bm_|{v1(-YRjt6?5S*Qd;?*Mn$U$Dq0&MeN&zjm5&$W{Xt>_f*V zFiUP5{@n4=BkbRz{?z?3(33aTdNz}KKU*hT1Dj^+X7fu*54^37<_wTf_jCXof(y8< z8=+V~fRDv;4NuW~O?^$Q7Tkd0+k!J562UEGt*VPXif9fOQETf;$&vgSoGl}=DFfh zm z)+^zS>+sb&68Ib?^_Thzd&S54>v%<9^(7}G=hRu2G{ASlpEq(=xoXmOnXif~e3;8o zc!Y0);!W_-wl((ghA2EM7K57mB$m7{Y+IpSf?g7wl2DJg?F{o$6bJv#cagylq*n0a z<1C;tA!W?8Gq2HV!;C}*@Fz$R6nofb@ZbdH;EnCB8G4e{dx4^K1B?VG3X$Mh$A>cOyU@E zLhRGT5xkD~h^O&^$_UR0UlG0{{Fd-r!ncKQ3%8URYbi5!pYV{6Ib#|TF(U4a@Qm;k z;VZ(w6s%Y_r&j)4;r9Dq1u?f{TKamv&U~JJ;Z*kQ8?U-sb+d)(`af0k==_<;;N+>{ zx%t%MlJ{?2C^UBd|5M=JwXeIMHC^q^rBZPx9ErsTvqO%Pil*afClZTAGeg;2ESq+m zXfEtTqXX_@@KN`2&<=jE_ diff --git a/obj/Debug/net10.0/refint/CPUSimulation.dll b/obj/Debug/net10.0/refint/CPUSimulation.dll index c9afc7b4247586eefc553cd375483c72d677f723..5359233753ea9d75e596a834ee4e61265f0c8b70 100644 GIT binary patch delta 2158 zcmZWqZEqA+6n^H;vO=lb+0r6VDlC;y1aV*bvH~To#n7geR$Gh&O*-8Ubi;Ow?bd*z zTWKUJB(@ns3<;6M_!2ROQ2C-Ue5f&)kmwI62IYeZUoa*ZLNxl^GqW$~Z0@Gwp793l6zvBjuye>OH5YvzOMzF|F|N>|PPncDqU{p{HG*7hCq z;lLduf<-3KR~LuE5)8HjNoF>vIfBd`b^C*jZ8w(y4Q~RyL11fud>}WG&K{a%9FB6a zG@)VN0FIMen(x`yy_@&b)L*z)f}8STD*a?Sbt6ZFql!auG;sJO?o=>Q3|H`w)-j|Dj3j_3QI-pRi0Wds>bwG2zj0KS6_z3dD2f)E9!u+ zR*SNIRVQlEpI0y2RL5oNf{*cqS$LU?*J>kH;+pw5`rGwmoJG=nf^$7}a#beJCsifM z?JZXcKA9hiZal@r1$7R)xY;H344<=@)a+rSmXw9%1%(0C&lWBD@`DdZi_Ka{`iFUd zoly$4ONxsbWtS8p&mqevE=5l9rIpkhs3}txYJK%R&ZrZ4Zci!HE-BOmPU4Y*4_}$@ z6_rdZDsG}VTU4HJbzvTTAE2N-U!CteizDo@d`TwNCss2(jU z16Q!lS9&o)toM}*Wqw^$o-a~}L`5KoNWLgvQWpPwg)JRWC-~jbeYL6uM`F$k-j_&^e_Nd8#per?pJb>)&wo-I@FpB$0fiYUvsd_w z!Xx~^6pG!IxmU~ZZz<-eWyr9x!^9w8M#ikbX5lfg|1I`)hS(w4E%=<^enDF>O*HTd zu@=V!-z5gw^TfY-6`y#Wt+KHDVopBR1f7;uhQ`CeX~79q1xX;y6I;#9^EvPU4)A5}p!1BYZ~qg75|5w}jskZW?;7Y3RA@g*W)9EuF$U#hcPR zZ=^)bh+{_hN5<=1?}G5awBF$ItBsrLA46hZgHv)3@ms;G%Q@aFy2p-WoG~YxvvcY3rPjdB?~+ozB`5#|qhtg)mwu38^?ZULIJ!pa<;3W!az$Pvsmhcb7dmI{#s) z{{P3Ld%fyX6+iEx5Fw~xS;#$ZU2Jr0r#TU8auUO>&8=}e(UeFvrEEJs5^Fg)9376O zTH>jA(vG@);f?NOI9&acf5Pf5yRCWqTx6wM>~+5k54lmbI3KExn|%&!IA~_i#Lz^R zz%W{=TM?%xL0f`7*TiA-7sm+WT5yn2QH~hxEwrXMlJrOC->*HU)L%R0l%I<}^e=)& Ba)tl^ delta 1862 zcmZWqTTEP46kX?B7yR+E|^KwEi|Be3*XtVfbiF8?;{<|NU~EeeW=1y_2)fT6^!a_j%p9 z%g*w^r3>9hTQ+}!|J+44YE>AhqoKw#{+e9-W~$+Q5*Rav8Q|y2wXWv6WiM)$j=gS| ze!@MW#%k`=G9*^9RuKdk>__`C1#4}Y=v@?4>*;&0W3 z8%$uH=h-wWF_{2bm_|{v1(-YRjt6?5S*Qd;?*Mn$U$Dq0&MeN&zjm5&$W{Xt>_f*V zFiUP5{@n4=BkbRz{?z?3(33aTdNz}KKU*hT1Dj^+X7fu*54^37<_wTf_jCXof(y8< z8=+V~fRDv;4NuW~O?^$Q7Tkd0+k!J562UEGt*VPXif9fOQETf;$&vgSoGl}=DFfh zm z)+^zS>+sb&68Ib?^_Thzd&S54>v%<9^(7}G=hRu2G{ASlpEq(=xoXmOnXif~e3;8o zc!Y0);!W_-wl((ghA2EM7K57mB$m7{Y+IpSf?g7wl2DJg?F{o$6bJv#cagylq*n0a z<1C;tA!W?8Gq2HV!;C}*@Fz$R6nofb@ZbdH;EnCB8G4e{dx4^K1B?VG3X$Mh$A>cOyU@E zLhRGT5xkD~h^O&^$_UR0UlG0{{Fd-r!ncKQ3%8URYbi5!pYV{6Ib#|TF(U4a@Qm;k z;VZ(w6s%Y_r&j)4;r9Dq1u?f{TKamv&U~JJ;Z*kQ8?U-sb+d)(`af0k==_<;;N+>{ zx%t%MlJ{?2C^UBd|5M=JwXeIMHC^q^rBZPx9ErsTvqO%Pil*afClZTAGeg;2ESq+m zXfEtTqXX_@@KN`2&<=jE_