From 9efadc3b4a2f776b2177e2873a3b46b0d1af54c3 Mon Sep 17 00:00:00 2001 From: David Bowerman Date: Sun, 31 May 2026 15:29:49 -0400 Subject: [PATCH] Converted address to 16-bit binary string rather than byte. --- CPU.cs | 12 +-- MC.cs | 10 +-- Models.cs | 72 +++++++++++++++++- bin/Debug/net10.0/CPUSimulation.dll | Bin 7680 -> 8704 bytes bin/Debug/net10.0/CPUSimulation.exe | Bin 162304 -> 162304 bytes bin/Debug/net10.0/CPUSimulation.pdb | Bin 13104 -> 13692 bytes .../net10.0/CPUSimulation.AssemblyInfo.cs | 2 +- .../CPUSimulation.AssemblyInfoInputs.cache | 2 +- obj/Debug/net10.0/CPUSimulation.dll | Bin 7680 -> 8704 bytes obj/Debug/net10.0/CPUSimulation.pdb | Bin 13104 -> 13692 bytes obj/Debug/net10.0/apphost.exe | Bin 162304 -> 162304 bytes obj/Debug/net10.0/ref/CPUSimulation.dll | Bin 6144 -> 6144 bytes obj/Debug/net10.0/refint/CPUSimulation.dll | Bin 6144 -> 6144 bytes 13 files changed, 81 insertions(+), 17 deletions(-) diff --git a/CPU.cs b/CPU.cs index 5fd43a5..28917ec 100644 --- a/CPU.cs +++ b/CPU.cs @@ -8,13 +8,13 @@ namespace CPUSimulation static MC _memoryController; public static void Main(string[] args) { - _memoryController = new MC(8, 2048); - for (int i = 0; i < 2049; i++) + _memoryController = new MC(4, 32768); + for (int i = 0; i < 32768; i++) { - Word dataToWrite = GenerateRandomWord(_random.Next(1, 9)); - _memoryController.Write(i, dataToWrite); - Word dataRead = _memoryController.Read(i); - Console.WriteLine($"Data read from address {i}: {dataRead.ToString()}"); + Word dataToWrite = GenerateRandomWord(_random.Next(1, 5)); + _memoryController.Write((Int16)i, dataToWrite); + Word dataRead = _memoryController.Read((Int16)i); + Console.WriteLine($"Data read from address {new Address((Int16)i).ToString()}: {dataRead.ToString()}"); } } diff --git a/MC.cs b/MC.cs index afbc1d7..1dd2f4a 100644 --- a/MC.cs +++ b/MC.cs @@ -27,18 +27,18 @@ namespace CPUSimulation } } - public Word Read(int address) + public Word Read(Int16 address) { AddressOkay(address); Byte[] byteData = new Byte[_numberOfMemoryBanks]; for (int i = 0; i < _numberOfMemoryBanks; i++) { - byteData[i] = _memoryBanks[i].Read((byte)address); + byteData[i] = _memoryBanks[i].Read(new Address(address).ToString()); } return new Word(byteData); } - public void Write(int address, Word data) + public void Write(Int16 address, Word data) { AddressOkay(address); Byte[] byteData = data.GetBytes(); @@ -72,11 +72,11 @@ namespace CPUSimulation for (int i = 0; i < _numberOfMemoryBanks; i++) { - _memoryBanks[i].Write((byte)address, bytesToWrite[i]); + _memoryBanks[i].Write(new Address(address).ToString(), bytesToWrite[i]); } } - private void AddressOkay(int address) + private void AddressOkay(Int16 address) { if (address < 0 || address >= _memoryBankSize) { diff --git a/Models.cs b/Models.cs index cc830c5..f75ae6f 100644 --- a/Models.cs +++ b/Models.cs @@ -34,23 +34,87 @@ namespace CPUSimulation public class MemoryBank { - Byte[] _bytes; + Dictionary _bytes; public MemoryBank(Byte[] bytes) { - _bytes = bytes; + _bytes = new Dictionary(); + for (int i = 0; i < bytes.Length; i++) + { + _bytes[new Address((Int16)i).ToString()] = bytes[i]; + } } - public Byte Read(byte address) + public Byte Read(string address) { return _bytes[address]; } - public void Write(byte address, Byte data) + public void Write(string address, Byte data) { _bytes[address] = data; } } + public class Address + { + Byte _highByte; + Byte _lowByte; + public Address(Byte highByte, Byte lowByte) + { + _highByte = highByte; + _lowByte = lowByte; + } + + public Address (Int16 address) + { + byte highByteValue = (byte)(address / 256); + byte lowByteValue = (byte)(address % 256); + _highByte = new Byte(GetBitsFromByte(highByteValue)); + _lowByte = new Byte(GetBitsFromByte(lowByteValue)); + } + + public Address(string address) + { + if (address.Length != 16) + { + throw new ArgumentException("Address string must be exactly 16 characters long."); + } + Bit[] highByteBits = new Bit[8]; + Bit[] lowByteBits = new Bit[8]; + for (int i = 0; i < 8; i++) + { + highByteBits[i] = new Bit(address[i] == '1'); + lowByteBits[i] = new Bit(address[i + 8] == '1'); + } + _highByte = new Byte(highByteBits); + _lowByte = new Byte(lowByteBits); + } + + private Bit[] GetBitsFromByte(byte value) + { + Bit[] bits = new Bit[8]; + for (int i = 0; i < 8; i++) + { + bits[7 - i] = new Bit((value & (1 << i)) != 0); + } + return bits; + } + + public override string ToString() + { + string addressString = ""; + foreach (Bit bit in _highByte.GetBits()) + { + addressString += bit.GetValue() ? "1" : "0"; + } + foreach (Bit bit in _lowByte.GetBits()) + { + addressString += bit.GetValue() ? "1" : "0"; + } + return addressString; + } + } + public class Word { Byte[] _bytes; diff --git a/bin/Debug/net10.0/CPUSimulation.dll b/bin/Debug/net10.0/CPUSimulation.dll index fc3b6a2fa53dc5964a1404721c13fe121d3f7be7..daf8142bc9276746940435b19990c0446ee2ac36 100644 GIT binary patch delta 3324 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 diff --git a/bin/Debug/net10.0/CPUSimulation.pdb b/bin/Debug/net10.0/CPUSimulation.pdb index 0791f4ddabbf5385cca7c967aebe92e22fa71688..c66b74fe8d47f69f15ae19af52a5c55aa13a3dc5 100644 GIT binary patch delta 1733 zcmY*aZA@EL7=F*`Exi{Q6iN#e2E|HYr5`ZmYm19Q_vKJFk>Lke3T42kG*XaMob9q7 z65WrntBK5*v1A&Z%Vq*5eq}=g$sjQ?8HzDZ3F`LCXyQyvl<9MBOYE9F?|q-=eeZeC zIrp5m9~}AT=&5^SPY{v)V6X=dS^*X$@Rx|*&=Xx0v9{5X!QuXhi2Krr5GH$j8|{PN zE&RRh`+a!63%=q3ZwiIQV3Vsae0J#Jx|X-y@v@&Tuw2rM@R%9ahWFc}= zI-Cr^3YdTrfCKq}5fF(2x~V05j!1F>r9uEKQycqZYugx=3l(_-+EYhir;h#xnyYl= zc1hF<^Z`-eJn$iK8_>HYvH&%}bHMvRg-4y2$;pCd9H4Gb1LpK-4sXTavlC;5jK= zRLo7`VyjFkyf=j#;CBLfh!-Tst4;DkaD0jwRX{K!!J15%O7bG`0{CS~UJQO1emP)4 z{?=r^m{5KS&jK$<;hErtDLjB*!-fqL!L-LQ8T>jKx2D4C{N zBJsI(+F6F8)=2i4)!B`x-`NYjfv>^8=_Hm$JF0B3nXU(654f6{j_P1+R9JacB{?9uNm6SK>P9~|}NTsD%z z)6pw%^Y}QU9bC?(N={qIDNai_CkFyiT;8!d372n3!8cNW^t_Uh&RSS}k{!?D&9h_P zolNp^xk#O>zAo+Ka*6tC&DB^Vl1m+m0VCi9R&qJx?qY5(A)qJlsAy$XyEY4$xojX4Cs8k2mqE=`?Awgl#Y)B4 zVkUk;s-&nQ7O7AzM<=*X7`!L5_}5}l#zx!~c1WG~nqyurqpc+7iGHT1h+d49DF-AW z_isVw)0mc(%V}f~6--o#`zxk0BvQhRT-cq&7`RY;;vOW*eukQrn3t9)rkzMcix9t2LQ)bz(7m|tP8yb`b)?kP)EAeF(U$!vOEek`N%gh#AfJ`H*vk^=Qdy=6E*$~Dd SWZ|zv2t6pvUR39|hyMfgO9D^; delta 1166 zcmZWoSxA&o6h8OPKQsUDGS1Q{8P>??l;gOzs+GB*nFfa0M$}*~S?W|{nq`h{QuLtl zM@5ucAW;+ zM9%W+DlGIG_@IOCAi60L9T&NZ=6&@|b$*dg*Au}eXJrK~0{04DTv<|x^(^$I6zKd0 zpEzv))c29mmNi9p-XB~r(SBkq=X&E9BQk7^BkXp337Cvsrl6Yytw2WwPw}ePc^b=9 zNBH)D896g@_F&EgZ3)rg(AE$w>TMxf)Xxgh;)(1bx*@2ealQ?_IH+TwT|@y&gdslp zz|4=}+B*}~YmV@Vd?CD9|J-cu{$;T;k~L?;oEMN#vSTy|Jb$h+Ty+@+tF{MTZYEvaaTbCm(8T`F#HKHX1tYA zHkWO*fKw#7MXy$KT8%^-26g`;36s}|$21Z%Z8lW2`I~DRV^wCdsn+z}5#g+qb#}2M z5ybO{PNwHDDU-`q^=ZaCX$hC@YH#MlfSBWXE(HgOsgB~ZU~Ogv?er*&Vz?Zx87N~J tGln7zv2S+PfBSG3mWwj`zkQf!RtUqyWo=&-MwXS#9AqG)8ojud(O(Bpw{-vj diff --git a/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs b/obj/Debug/net10.0/CPUSimulation.AssemblyInfo.cs index a26071a..0e68f54 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+0be1f139ef3c991f2a1945aef3e923154744c8a7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8cf9e2c5f5ac52e9ad7b40d2f046e9d08850a297")] [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 d1e680a..71f1110 100644 --- a/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache +++ b/obj/Debug/net10.0/CPUSimulation.AssemblyInfoInputs.cache @@ -1 +1 @@ -06ad3fa32c2a2b0302e0bbe519d5f080612e42cca4243f7546cf9621bf5b5d3c +f5b5f51936326916e2fb5d1d37c6294b5a3a803b598c90e6e30bc1bd1c0e6dc7 diff --git a/obj/Debug/net10.0/CPUSimulation.dll b/obj/Debug/net10.0/CPUSimulation.dll index fc3b6a2fa53dc5964a1404721c13fe121d3f7be7..daf8142bc9276746940435b19990c0446ee2ac36 100644 GIT binary patch delta 3324 zcmZWseQZwaL6oJ5Wgn!CRzr5M|bcSfX z6s#n=>azRmf>lJ-;4h?!zHGPfCH7X0Ggos7PbQZHl zPHzl54w>VyK|1UlkY}CJGb~`guJ@N^76#zJ?PNg)K)kd7^Ia~tY}rkCCCr{*V6Qtk;=B^Hq0WNZ~-W8uQ#(c#dnC?O*K zIWodqs*L7Yt=jDR-CR4U(@(<(c0y#k5tIifmgg$qO6XOg>ck?$JX1ruyMTT4u0=+% z0IP(nSi%%KV;%051}HlO+z$=5a5_%Yc{Q2h51SFkKkPp z8yGK)N@EPL?7k*$y5$S&Q+7L{nXz0>vb$ts5Gqb+4MN_eeVK6Clw)ZqA6#NJ6Ftl& zkDSv^RuVd0SNJX3E^5h!nNGi;)m*0^v!4T#3jacq_9*&>h*36$J#l&%^n^wSTykNK%z1R0~N zA_9C}GyyYQ;%z(%^k^~Qc@YPG!j=M?xWw}!%{D~kQNBs#i+njmzgFxtZKjosQ?NxU zr%}SyOwcyP9ghqlX@atjF0xhJ4c*>bbcg1-{jh9nm0pfhKdomjdZfZl(Rn=-`~Utw-KBo|NoG(=d_G3F z&Y-K*f(!FDj{ThF-sDO#(TjS9Ca z904-Q1M6s?!lTru#qf(jX5|_3X`_5tsA7lO*FV+6Jh`Lp|}?<0P?l8_-L*dKeiz^1pz}z=c;IQ2Bn@2i?Ai z{k34L@8r7&E^fRlbIsJgxw|$bx%?=1$(5T+E+svQ(l#v;HEo=-U>JvS7|7^g1v}D?qcDPhm~m=t{k*rA zj=r1y?DzBi^}gTt-tOMq#<_uGUu%E++>hTwb(}*xYD5uepu!21hf4D&zYtwr0=8(y zI^d1ad|RS+6sXm_7r4c5ldJt5BI_PaP?h1;;6E(#BI%zJS#gd3o@mdEGJ_sB^O6YR z(kfshGYE2Cw*QZGu{%*z_+Fs!(2~(L%!Fy2lYo_U^9OKAb?~JR~73o|( z;KtQ74f}F2%7`mFN0z5B-SaPF6LCMHu45zpDtlc@`*s&*(!9^N=OMA5=`dA9(MYX9r%DKX@CS*_7D z?690wG=-m3Z}~f|RN<^W!&>aRJR;pD*2X9^h8PQ}a=Ii~Q>@T-t*L~6+{=ufZoU~oA)c!%`F$uO z-|qG=g^G1%5yiA0Bq`h1q=FE59GnzXMMDgU^={tiv`lCa|YxpY?0iA0ng zMNB8NTCJXR^RT-MoZ3+9`zFzHBt03KC<+tDY+Qlai2t$Ekgcf_dYBZ6qQoSV^VoQp z?hx4L8sB`RP`8RKADZssE!X5vM7mhyvB>JmGhDHbLyY0tE^-e#wtjhf?>%?TFb&SJ z9?px7ZCerJ%xoDQpWZgKk@pOFCy!mnhRLa2+L?n?Y;Tr`Fb)?*3CZC6@(}5U%|#Ws zm}uff{|dBGKPj9?E6g3}mzwKszELEVjgtnapj17sXPGvBgntVg^I}@sa16c*E&tiz zPNR9;$XOG6ufZeG*`8KI^c;~xvSQA4Na0O!6BR^?m z&FTzOEJri9%EE>{tF)($8pD1kGz&9Ad$vf;9Mo3~9Wa3r#0@)W0$r}2hwbtW;(7Td zEmLZdc$<2M_<_)PUi^{xP4y?@W_7-bBN<)xx3E+Gl^V2ZHje^6;`$C$+3Vt;P&m?7 z(Z&bUOYBzc6iV* zoux)Za4cXrD`LXM4?DU4!SoHJ=c>ksRgd+f7 zPSGanv9W49sn&=XMyqU-DwEx7*lTE%1Kfm<$vA(|p+4IJ+jz7Des1t~6^luHD75CQ zMx#-hm%rA;VgeV8)i>5HSA7EiWzQ`tf+Zejk7%=jCF!Dz7()-1D!i2qS#NO2;O7nQ zFgQjO*h_50mkb`pX|)OuQO*;)nBgI`Fxh>kFD+}$PuSx;c48g3;! z$a%R$`Dl8zYph>_12`HYd@*K$R^Z-^2)KnWeN5}Wujy_2u9IXr@6 zJjvg|)A#|bx#fqEdu7HRKA?OLT^+x|h>`zax8CSFur}};7@pd*e{%d&7#_r+KUH6| z@Ob_6!r$yA{rkPU7cP2bv9LL@UsMEC5m5X@a-16e<%OSac7ig6C-()ev&SAt#=RXS_|4-w(%eh{AE~q7b45$~93@3-phKt>$>zk@1X?8Yrci z!*S}u;kaLEZ1taSOeqmh`*q2tPzW*_^|Q&YtYtGS#0F_AB!Qi^^Eb1 ze>BRHp*-`BT$?HIq6 zA^p13$l(Ych2?R>b6*e`dm}z<3qvgze zTT+ge{Fl?eSctCdRl`N>!Z@FT30@^WQ{$9MJYr@3w6+&xyqD33HIxGDIC(FLke3T42kG*XaMob9q7 z65WrntBK5*v1A&Z%Vq*5eq}=g$sjQ?8HzDZ3F`LCXyQyvl<9MBOYE9F?|q-=eeZeC zIrp5m9~}AT=&5^SPY{v)V6X=dS^*X$@Rx|*&=Xx0v9{5X!QuXhi2Krr5GH$j8|{PN zE&RRh`+a!63%=q3ZwiIQV3Vsae0J#Jx|X-y@v@&Tuw2rM@R%9ahWFc}= zI-Cr^3YdTrfCKq}5fF(2x~V05j!1F>r9uEKQycqZYugx=3l(_-+EYhir;h#xnyYl= zc1hF<^Z`-eJn$iK8_>HYvH&%}bHMvRg-4y2$;pCd9H4Gb1LpK-4sXTavlC;5jK= zRLo7`VyjFkyf=j#;CBLfh!-Tst4;DkaD0jwRX{K!!J15%O7bG`0{CS~UJQO1emP)4 z{?=r^m{5KS&jK$<;hErtDLjB*!-fqL!L-LQ8T>jKx2D4C{N zBJsI(+F6F8)=2i4)!B`x-`NYjfv>^8=_Hm$JF0B3nXU(654f6{j_P1+R9JacB{?9uNm6SK>P9~|}NTsD%z z)6pw%^Y}QU9bC?(N={qIDNai_CkFyiT;8!d372n3!8cNW^t_Uh&RSS}k{!?D&9h_P zolNp^xk#O>zAo+Ka*6tC&DB^Vl1m+m0VCi9R&qJx?qY5(A)qJlsAy$XyEY4$xojX4Cs8k2mqE=`?Awgl#Y)B4 zVkUk;s-&nQ7O7AzM<=*X7`!L5_}5}l#zx!~c1WG~nqyurqpc+7iGHT1h+d49DF-AW z_isVw)0mc(%V}f~6--o#`zxk0BvQhRT-cq&7`RY;;vOW*eukQrn3t9)rkzMcix9t2LQ)bz(7m|tP8yb`b)?kP)EAeF(U$!vOEek`N%gh#AfJ`H*vk^=Qdy=6E*$~Dd SWZ|zv2t6pvUR39|hyMfgO9D^; delta 1166 zcmZWoSxA&o6h8OPKQsUDGS1Q{8P>??l;gOzs+GB*nFfa0M$}*~S?W|{nq`h{QuLtl zM@5ucAW;+ zM9%W+DlGIG_@IOCAi60L9T&NZ=6&@|b$*dg*Au}eXJrK~0{04DTv<|x^(^$I6zKd0 zpEzv))c29mmNi9p-XB~r(SBkq=X&E9BQk7^BkXp337Cvsrl6Yytw2WwPw}ePc^b=9 zNBH)D896g@_F&EgZ3)rg(AE$w>TMxf)Xxgh;)(1bx*@2ealQ?_IH+TwT|@y&gdslp zz|4=}+B*}~YmV@Vd?CD9|J-cu{$;T;k~L?;oEMN#vSTy|Jb$h+Ty+@+tF{MTZYEvaaTbCm(8T`F#HKHX1tYA zHkWO*fKw#7MXy$KT8%^-26g`;36s}|$21Z%Z8lW2`I~DRV^wCdsn+z}5#g+qb#}2M z5ybO{PNwHDDU-`q^=ZaCX$hC@YH#MlfSBWXE(HgOsgB~ZU~Ogv?er*&Vz?Zx87N~J tGln7zv2S+PfBSG3mWwj`zkQf!RtUqyWo=&-MwXS#9AqG)8ojud(O(Bpw{-vj diff --git a/obj/Debug/net10.0/apphost.exe b/obj/Debug/net10.0/apphost.exe index 98da06d357316b64a55cd084c4510784e8f7fbb1..9543b2355083c83ea00ebc9689833b6f2a70be25 100644 GIT binary patch delta 97 zcmZqp!r1^sEsR^349a~i7?K&%7%Ul58H|7|Qy|-vArZ_n0*YAz*(nU>3`q`y5^ewh diff --git a/obj/Debug/net10.0/ref/CPUSimulation.dll b/obj/Debug/net10.0/ref/CPUSimulation.dll index 6fff91d79d04eaa90a07db3a0ace9ff755e1059f..4121ef5b49e6f1f7c5259385497af99aff878695 100644 GIT binary patch delta 1350 zcmZ`(Uu;uV9RAK}ciV35<+gKL9gvMK=_Z6+%gTCHl8s`@!U&i`aFCFewSz@PWh`bP z&?Zyk1ES4Mj3&kxpU8MIm52#E5eN_X;Dd>Oo(RFjCzqfPz7W6j>)mQ%JSXQn-}n1| z=TCn(Jx#aie)3_s|BJQXTbDPhORcNN>>bm+4(d&4GTp*)i7eq)WnoF>nezh-UJ+as9F_P<;cGDa zOqo>;%!v3!51NzZSc9fJ>{&gvp%Q@#iPsybu&4*RlNk|pLv>V4)RRE26rew6rU8!l6W9JA~ib2P4Zwg@s~DDm=1qJ?LPy%-bz z0?~mdI3+kO_^M!IR;H@p0#V@|;sBNfqpVGaM{U6Af(KK zjPQ)`aMRS{-!02pn7`M0dk&fQp5C^KpIJD4X7BR(I^KBe-S%2vkFus}wR81F|8YG3 zpC`dDBwmb-M6DsMqNx%8LSoxi+Xy?Aj&Mq)Q|ZtUY>sHp5VoY!emk+6EzHe(_1s*3 zK3|>7=jvXyHgRg)t>xz3@!fT=<`xQhx0>_(_w9+)k>Is4_dIL(WNY|oU77ZOvv0I* zCl@+cV6o@<)#}KR<;nA?3d=F(k=HPRQy7O!mZR^I?-s8{USQ92uF~_`AN60*y6MSV I*K#BO0LhNdzyJUM delta 1226 zcmZ{k-Afcv7{;G-c6XdrcO2IeOO3U?(9Mwj5}g)7F-S?#vK0HGP1cI&!&D-KR!}0) zq-`KC6S@ddFJuWSx+sLMiW2$*0=8g}%JLGf7#bbpIxtZR}d}RUCvdEK{>4!r_O#7U922;zDGtrOUR<(ggD3=Fl zC{K4Q60}qKKe9u5$V$j|6l_;uRdhh#CYs&#m+(UN!TWd2p3y_;gdC)I@2rM(d6iCK zo2KN*4!y;exV1z1eW~*jct|f!U|yQ0#A`Y#fmO~ZmDmN-6nM$`H=Li{8Kug!Q>3QN zN-q*ppp;a@9@0XD*hffBSgdWVovg=L2U(M>mq`UiNO$8lt4@y>q>WUg4z(D<8PR|u zOrQZ}m`1t*m3TrB#4>3;R!L*{PMUz5O50IFdK6WpeVji{+Kwye73~;BznEe_#eR+b z8v70Q8|+;|)w_hMcTcK^bsBvK)GFm%urmScz(im@w z$A_Ae_D`e9zv+DKYA3&yZ_U({%Up-uU-H}z%Ntq4jJmqRxPTNQ7^aBPS)|Ct=zUsr qscaNU>Mg|4NG?B`B92m3gmQ5-QN(FRGm_c+WfM}G7XNQD;etQZZ@&-# diff --git a/obj/Debug/net10.0/refint/CPUSimulation.dll b/obj/Debug/net10.0/refint/CPUSimulation.dll index 6fff91d79d04eaa90a07db3a0ace9ff755e1059f..4121ef5b49e6f1f7c5259385497af99aff878695 100644 GIT binary patch delta 1350 zcmZ`(Uu;uV9RAK}ciV35<+gKL9gvMK=_Z6+%gTCHl8s`@!U&i`aFCFewSz@PWh`bP z&?Zyk1ES4Mj3&kxpU8MIm52#E5eN_X;Dd>Oo(RFjCzqfPz7W6j>)mQ%JSXQn-}n1| z=TCn(Jx#aie)3_s|BJQXTbDPhORcNN>>bm+4(d&4GTp*)i7eq)WnoF>nezh-UJ+as9F_P<;cGDa zOqo>;%!v3!51NzZSc9fJ>{&gvp%Q@#iPsybu&4*RlNk|pLv>V4)RRE26rew6rU8!l6W9JA~ib2P4Zwg@s~DDm=1qJ?LPy%-bz z0?~mdI3+kO_^M!IR;H@p0#V@|;sBNfqpVGaM{U6Af(KK zjPQ)`aMRS{-!02pn7`M0dk&fQp5C^KpIJD4X7BR(I^KBe-S%2vkFus}wR81F|8YG3 zpC`dDBwmb-M6DsMqNx%8LSoxi+Xy?Aj&Mq)Q|ZtUY>sHp5VoY!emk+6EzHe(_1s*3 zK3|>7=jvXyHgRg)t>xz3@!fT=<`xQhx0>_(_w9+)k>Is4_dIL(WNY|oU77ZOvv0I* zCl@+cV6o@<)#}KR<;nA?3d=F(k=HPRQy7O!mZR^I?-s8{USQ92uF~_`AN60*y6MSV I*K#BO0LhNdzyJUM delta 1226 zcmZ{k-Afcv7{;G-c6XdrcO2IeOO3U?(9Mwj5}g)7F-S?#vK0HGP1cI&!&D-KR!}0) zq-`KC6S@ddFJuWSx+sLMiW2$*0=8g}%JLGf7#bbpIxtZR}d}RUCvdEK{>4!r_O#7U922;zDGtrOUR<(ggD3=Fl zC{K4Q60}qKKe9u5$V$j|6l_;uRdhh#CYs&#m+(UN!TWd2p3y_;gdC)I@2rM(d6iCK zo2KN*4!y;exV1z1eW~*jct|f!U|yQ0#A`Y#fmO~ZmDmN-6nM$`H=Li{8Kug!Q>3QN zN-q*ppp;a@9@0XD*hffBSgdWVovg=L2U(M>mq`UiNO$8lt4@y>q>WUg4z(D<8PR|u zOrQZ}m`1t*m3TrB#4>3;R!L*{PMUz5O50IFdK6WpeVji{+Kwye73~;BznEe_#eR+b z8v70Q8|+;|)w_hMcTcK^bsBvK)GFm%urmScz(im@w z$A_Ae_D`e9zv+DKYA3&yZ_U({%Up-uU-H}z%Ntq4jJmqRxPTNQ7^aBPS)|Ct=zUsr qscaNU>Mg|4NG?B`B92m3gmQ5-QN(FRGm_c+WfM}G7XNQD;etQZZ@&-#