From a958d11c4e6ae9ceff5d9cc7e90fa8de06a1a768 Mon Sep 17 00:00:00 2001 From: David Bowerman Date: Sun, 31 May 2026 20:36:00 -0400 Subject: [PATCH] Created functions to allow for data to be written to and read from memory using bianry strings. --- CPU.cs | 8 +++ MC.cs | 65 ++++++++++++++---- Models.cs | 21 ++++++ bin/Debug/net10.0/CPUSimulation.dll | Bin 8704 -> 10240 bytes bin/Debug/net10.0/CPUSimulation.exe | Bin 162304 -> 162304 bytes bin/Debug/net10.0/CPUSimulation.pdb | Bin 13692 -> 14504 bytes .../net10.0/CPUSimulation.AssemblyInfo.cs | 2 +- .../CPUSimulation.AssemblyInfoInputs.cache | 2 +- obj/Debug/net10.0/CPUSimulation.dll | Bin 8704 -> 10240 bytes obj/Debug/net10.0/CPUSimulation.pdb | Bin 13692 -> 14504 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, 83 insertions(+), 15 deletions(-) diff --git a/CPU.cs b/CPU.cs index 28917ec..e9fe17b 100644 --- a/CPU.cs +++ b/CPU.cs @@ -13,6 +13,14 @@ namespace CPUSimulation { 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()}"); + } + + _memoryController.Write("0000000000000001","0000000011110000"); + _memoryController.Write("0000000000000010","1111000000001111"); + for (int i = 0; i < 16; i++) + { 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 1dd2f4a..87fb552 100644 --- a/MC.cs +++ b/MC.cs @@ -46,19 +46,7 @@ namespace CPUSimulation Byte[] bytesToWrite; if (byteCount < _numberOfMemoryBanks) { - int numberOfPaddingBytes = _numberOfMemoryBanks - byteCount; - bytesToWrite = new Byte[_numberOfMemoryBanks]; - for (int i = 0; i < _numberOfMemoryBanks; i++) - { - if (i < numberOfPaddingBytes) - { - bytesToWrite[i] = new Byte(new Bit[8]{ new Bit(false), new Bit(false), new Bit(false), new Bit(false), new Bit(false), new Bit(false), new Bit(false), new Bit(false) }); - } - else - { - bytesToWrite[i] = byteData[i - numberOfPaddingBytes]; - } - } + bytesToWrite = GeneratePaddingBytes(byteData, byteCount); } else if (data.GetByteCount() > _numberOfMemoryBanks) { @@ -76,6 +64,36 @@ namespace CPUSimulation } } + + + public void Write(string address, string data) + { + if(address.Length != 16) + { + throw new ArgumentException("Address must be 16 bits long."); + } + if (data.Length % 8 != 0) + { + throw new ArgumentException("Data must be a multiple of 8 bits long."); + } + int byteCount = data.Length / 8; + if (byteCount > _numberOfMemoryBanks) + { + throw new ArgumentException($"Data must consist of {_numberOfMemoryBanks} bytes or less."); + } + if (byteCount < _numberOfMemoryBanks) + { + data = data.PadLeft(_numberOfMemoryBanks * 8, '0'); + } + + for (int i = 0; i < _numberOfMemoryBanks; i++) + { + string byteString = data.Substring(i * 8, 8); + Byte byteData = new Byte(byteString); + _memoryBanks[i].Write(address, byteData); + } + } + private void AddressOkay(Int16 address) { if (address < 0 || address >= _memoryBankSize) @@ -83,5 +101,26 @@ namespace CPUSimulation throw new ArgumentOutOfRangeException(nameof(address), $"Address must be between 0 and {_memoryBankSize - 1}."); } } + + private Byte[] GeneratePaddingBytes(Byte[] byteData, int byteCount) + { + Byte[] bytesToWrite; + int numberOfPaddingBytes = _numberOfMemoryBanks - byteCount; + bytesToWrite = new Byte[_numberOfMemoryBanks]; + for (int i = 0; i < _numberOfMemoryBanks; i++) + { + if (i < numberOfPaddingBytes) + { + Bit bit = new Bit(); + bytesToWrite[i] = new Byte(new Bit[8] { bit, bit, bit, bit, bit, bit, bit, bit }); + } + else + { + bytesToWrite[i] = byteData[i - numberOfPaddingBytes]; + } + } + + return bytesToWrite; + } } } \ No newline at end of file diff --git a/Models.cs b/Models.cs index f75ae6f..e13d61e 100644 --- a/Models.cs +++ b/Models.cs @@ -9,6 +9,14 @@ namespace CPUSimulation { _value = value; } + public Bit(string bitString) + { + if (bitString.Length != 1 || (bitString != "0" && bitString != "1")) + { + throw new ArgumentException("Bit string must be '0' or '1'."); + } + _value = bitString == "1"; + } public bool GetValue() { return _value; @@ -26,6 +34,19 @@ namespace CPUSimulation _bits = bits; } + public Byte(string bitString) + { + if (bitString.Length != 8) + { + throw new ArgumentException("Bit string must be exactly 8 characters long."); + } + _bits = new Bit[8]; + for (int i = 0; i < 8; i++) + { + _bits[i] = new Bit(bitString[i] == '1'); + } + } + public Bit[] GetBits() { return _bits; diff --git a/bin/Debug/net10.0/CPUSimulation.dll b/bin/Debug/net10.0/CPUSimulation.dll index daf8142bc9276746940435b19990c0446ee2ac36..6fa2e28d47f3ddcf9a8b126d273acf6e21f3dbed 100644 GIT binary patch delta 4720 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 Y&~{1-(_gNd;QUa}v=x1q9f=$N1-H)If&c&j delta 3171 zcma)8eQZp(c%;7}gdjrR5u%!pN8qAqibHHWRx{ z<*N<_0i9Y#dfT-{Lv7KDMq!(}Y~3bNsfekQDz>%N)~(aDGBN(x)~Vg5{jsVG``v3h z&}o0{Mep~{*FERlbI!fa#D3kH1D1kRBzsl0AMZU^9SwjAvwI{B?gL>}6 z%gIB}b`mw#5i#(1O*t9Q$PL_x?X3u0YDv%pQOSaGf)g2GC;eGD&YM?R1utauh!UCw z@U|vXLGURT0A*y0V`{h4M!?&BT1G`L3(K`4+vJ1x3|Wya zJ}W+L`0eiBnWcbyMyzE%d0nJgK)S{ya-WThRvW0p`3 zGms|le4lI(HhZQBU)-iYmJyyBVtve6hKC2C>>C) zO&75SPn|*Pp2(Jv$MqnevfgLNa;-(J`_Nkohn)0W6hk1Q>zopmHutDL+u#f6Eehj0 zNX>DbYJ4N)bA8=!qVg!cLEG^)(-@cgut0d5(5}3b? zr_gD%i;IH@V^lmcJ^hx9*^w9~)U6qb6Jzmd7M^B~+2yC=uSjmRo5~eyOe$KxALfRW zCUd^ZYZ>ywG|#N(rB(zx2varh379MLmdO_8slqIsj~-^kn>Kt__q#|dl;P9>f5=tE zQ42*O2Hw@-mepiNVV2zHZSO_N39~X2TZDTYkw7bHnx|RBZ+E#=ROKor8SO6Va>$e3 zaJmt-)B|!5sT-VIshbi6M~T$5<7Obg9CZ>nK}VhTeoPeneF?4{WTI9UaQ;nS*q@$b z*{1?zdJDKx%x-^8vV3uxSmrXlQ8-J+rHhGV|8-S*SZ5E zqAGz+)+)|v7t+Fky(JZ;R#~jpS&&z!_5TKY*SGnO4LEtpM~E)sy9Vb!Iq*<%?8^_9 z5Q%IQ_-oQ37L zxx$1f2?uxaT=?7pNgeH`vwkT4t<`_vXXVB~Q~46V14imENG+r|fdz_-R5?p?aYN}$ zOqkNOam85_(A=2jY^vAX--Xh7F}uogM0@d3Saa`boga~0`aTabw@gb#BV%+$M1emP zF<_1>yp1P-j*$eO7b)OJY#}hl6`mJawjrS^`E|O;7eVqH%}vr~TEaLrwkh2teau!c zL0dI{WXIvOup?0VG)(muL9xzA?HRd%g)wojQMva3Shk%U6 zfK4>6@et*WB<?j zz{l~6q3r#1nx6wc#a|`m^nJ{NOJ0oN9I9iTw3YVr1voX&vju3yw}7qmQ(%(b0;bCp zg!*<$0vFQ);N7$sxLV5xfOpd{6@Xu)J^Zky4{Q3erY~#ynx?O5S}k1KW6whA-34={o(1K14B$3DvDzpG#;8ZoHchdsx$-mc5V8{hlobht~t9qwWzpN|}o-;Lfc?`>YkR?63-pGoD= zkt|A*r3ES-ks%Tb;f=lZ7w^;GOs_h9sqZJt+jDQqT`eu9Z5eh$hdj};G#j$~v4*IP zm)kby+`Y%-#YVJ1I}2)B`FD zI*WEIst2+>=n?9p9n?!1P(9FRK1av?CviJ@`m#4m|uO;_#{y}cao%c D0_fty diff --git a/bin/Debug/net10.0/CPUSimulation.exe b/bin/Debug/net10.0/CPUSimulation.exe index 9543b2355083c83ea00ebc9689833b6f2a70be25..a590070a3880dbaf459675d445a7a9b501e38cb0 100644 GIT binary patch delta 99 zcmZqp!r1^sEsR^349fj28B!V27!ny$7?K%`8Il-GfNUe6h&d3N0r^G@hG2FokYxd6 e83W}Z>OisvKz)Wlku(NVpiZC(+w04j8kqnw$`dI7 delta 99 zcmZqp!r1^sEsR^349fj27?K&%7%Ul58H|7|Qy|-vArZ_n0*YAz*(nU>3`qGUq*iLP>}iv8mp;6Neqc%#DpKh4~+>1L;U9MS={bs=FT@~&YUxI zX70KFZa=;2jk-;D?L=iS6HPdXCJFMo!Do7(>KTAYqfR1?b#3eD7~~F?TiTW_!IN~N z(_!GIzWy%2^}f%3vVFU7#rg9)?c<)-itF$0xq0A?B5x_ie4rU13Cag~4vbf4@xWYA z0AvFd#)McF$qWc;WfciJVm)niG+?7Zm5rVOiP<*#05maMqn4mXPk{D;MnPYI3PKtM zK)s;nLHj}PfhIu>)fyR~zd>nXjY>dagurXTGyW6-xR|8Kg3Oy_0}1YhJY8X)vJ3JG zg*D)3AXeNI7r=XC&b@ zz?n%n4cMK8D}l3;@Wv#}1;883#&~f=Ex-Ahw*YXen8=w zz}$k<6s`b%9CA6RkZchYU%YBLf+9Fb;0)m6B+MBqNy2>!S7JVAs72ub@Jz_O0RNr? z#rw!+$!JAO|Bj`P@G#LQ7KqE^mK*|?)&v_p4_Tu<;OvSiZW))kSfv%8L+M!)m!0$k zWNtM6O#=zyOvgQIG|v5>a2I#_kfmt`CpuxtAA-mCK6RtpEd4mRgP0R>W7*It|7!%@ zs^qtzA2#r-_Y4hX_$lfXv4(hG)ga1+02tGV}v9Qrx z*#Y^h*(P{h@G|%-!5iQsL6R){!QG)o@R48#_?D1q$v42i36ae~;c7qlaG(+V*J=}d zBzP>h{RgIi;F>`i&wdV97t0W|dv4p3kJZY9S;jx+wN^_drH?%HoI z8@%)6WZA{-_X_(i9Y1~Tc*pWn*YzVci(ob?-bLU1xbWO>D+|_s7OL`` z@{hbYv8LPkdDol{*Q)+4Tl)q=-2<*oLQ8S`eC7rJ>O(bcTc*|Rot#+v=j->n4u1Xq z2RW~w>$`a6MAOyE{>h9pN1PSHZ=d&%adO7^CI7EyvliSRoqpKU{ex?H<-}hH-}?CJ z$9|u4=4buKnUOw$vrTacDwn#OTrvd*fp@yxEpP~WHdRZ0BRUMc>z|#g;RU$E#mCp+ z?(|ZFM0-z}GDqqe)FZh+Bu_DLnK)<{dKLFTO1op7F)+Awr!W2pE$;7&rDnKd+2IX= zJz^{(#@-fVC&k!@V(hXQ``#^93Ui-aEQX?D=z<*DGaq{sC9&b~5-}@QTIW4;D{K?O zh~1u3oQZpfucG-<#|0scSWnHWh(|0CJ;EH7=2;otKw{`sIrOr*A9uP~iiq=hvxvo- zxJc@$RG=B?JEdu1jbAfdNDY^(Qg4)c1C?tA?jOX&Yu0j}tax2o3NCGxzF@P|(|N9o zP~FPHw!77VSIsIcgV|~Ag(BK4-O@ZEqx~d@f@0`9vA0m{-5`g)EJoTySL}LCQKScN zFR>kaepo|%A&J++l)M*9-Tq*Q9;xfJR^p1bHpTnFT2#+!OJgzHj#iC#V#VR{b>d={ zMz+WkbA>rBqfQZBBh7QU!i&aSU!uEkF>|n)QfJAiKp7OJCA3SVKI_5yk8t9AnvunJ zQo7wR6<%yULmiIH6+At!C{|HBJ+cD1EiO-Z@^R7k_WKoRA#JA1>0Efr2V&PYhM@+5s+rdM%6_NB9+Y|xg}L$K2{7UbKuv2@meQF<)3`V=mLbefg?SqZ zi5APKXFkFZ1L&H1J3imUOR@I4=bCa6Nr5?>*hS)Ovv6?>^AJKtaQJ?bMiwqFVU9qP RIKyraYmUa!>-*7_{{d1@S#AIT delta 2008 zcmYjSYfPI}7(VCpYx!EBluHYAT)HvnC~dh6%4JF>x4DfCCon{r#UZkdTYzn(;%v#5 zjKuwbeHh)G8C#~IbD1v8=*+S?gK;x4F%iTVmk`wX!yhwoCMLS+^R^%Ql|1Krp7%ZH zyyu+voR`_5zYk27cFaqR<-E$+n|j7BG4SSt!}|w%MnGAefibvQPHQuJ61j;pcohe z-UFOoi9HVN1pHVo&8q`AQ5MkXMDU)VY7ppP1#bof21x1vkE-?1GB|BQhd+br-=yjo z)xQB+55KJXW1(X-`iw@$fCpb!4JHg|1#eJwEOa|~sjB0kUjWYpWK0;Z26$T4W@y?# z31EajLG|y)#z`kZJK>|0lTL=NMtnA{8d6~Jpfl~rgbr49f==jIjkZ9?X>=TPyhi6k zn>CvJ2^w9a(aDIR+pa5^~=8HG0kF0p>JGzTF%D$38nA|e};*b#7j z#A{-`wEt*e#>&AstB+W;!S=wSV-(U5X&IwSr^7Az-@@6=e0uE;^jXYzVkuR^i7?ls z&9K;AooM~8E{v)W%i#B1j2l>0L5l;QIQM3>+ugNX$9y6Le%L*O_MH3E2wz5f-^~Qs zJJIg*gwXn3GiZ~&%Mm-%k=KFtGq3Wc!LO9YY*Hp-t~idK8nu42V61M~b7$t-%GEjB zqosl0R&w*E554>F^39G6rCola)$#uD*safvy#*I4%2U5f`RYXQ>&e>upYQqG8Vlz= zXYU$!48GXiH{$IYF?MjtWU<>rpEype{1i^Pm{<7mOWSj5ntu4@;c@>BsprwR^QXq! zD(eSs&)t`u+;REN%8jc_3vbyP-KSazjCZHxCc- z@E8vt=ixVac-F)ld1!)OEC%)$~A0al(S44Le-J_gu+5@i>{LVR5QzjjLJppjxN5x#elc5 z1GgC!($acm_M|84kF$_J$x zMO4+YWFy8?%mg753s~^fc|0~@7P65H!p5DjrKTw7%huV2uvoBAo`oLqYL7}BVRoKU zWe%!|+`RmiBAm=?i!S=4}%DgspS3#yeVpS8hjinWm%%pmj7BBjDoiBsUal=|{AeLUE6O0fKJHSI3FZ*|iDc88k6 chp`N#C~}^b1Q;!c{#DuM3g$U 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 Y&~{1-(_gNd;QUa}v=x1q9f=$N1-H)If&c&j delta 3171 zcma)8eQZp(c%;7}gdjrR5u%!pN8qAqibHHWRx{ z<*N<_0i9Y#dfT-{Lv7KDMq!(}Y~3bNsfekQDz>%N)~(aDGBN(x)~Vg5{jsVG``v3h z&}o0{Mep~{*FERlbI!fa#D3kH1D1kRBzsl0AMZU^9SwjAvwI{B?gL>}6 z%gIB}b`mw#5i#(1O*t9Q$PL_x?X3u0YDv%pQOSaGf)g2GC;eGD&YM?R1utauh!UCw z@U|vXLGURT0A*y0V`{h4M!?&BT1G`L3(K`4+vJ1x3|Wya zJ}W+L`0eiBnWcbyMyzE%d0nJgK)S{ya-WThRvW0p`3 zGms|le4lI(HhZQBU)-iYmJyyBVtve6hKC2C>>C) zO&75SPn|*Pp2(Jv$MqnevfgLNa;-(J`_Nkohn)0W6hk1Q>zopmHutDL+u#f6Eehj0 zNX>DbYJ4N)bA8=!qVg!cLEG^)(-@cgut0d5(5}3b? zr_gD%i;IH@V^lmcJ^hx9*^w9~)U6qb6Jzmd7M^B~+2yC=uSjmRo5~eyOe$KxALfRW zCUd^ZYZ>ywG|#N(rB(zx2varh379MLmdO_8slqIsj~-^kn>Kt__q#|dl;P9>f5=tE zQ42*O2Hw@-mepiNVV2zHZSO_N39~X2TZDTYkw7bHnx|RBZ+E#=ROKor8SO6Va>$e3 zaJmt-)B|!5sT-VIshbi6M~T$5<7Obg9CZ>nK}VhTeoPeneF?4{WTI9UaQ;nS*q@$b z*{1?zdJDKx%x-^8vV3uxSmrXlQ8-J+rHhGV|8-S*SZ5E zqAGz+)+)|v7t+Fky(JZ;R#~jpS&&z!_5TKY*SGnO4LEtpM~E)sy9Vb!Iq*<%?8^_9 z5Q%IQ_-oQ37L zxx$1f2?uxaT=?7pNgeH`vwkT4t<`_vXXVB~Q~46V14imENG+r|fdz_-R5?p?aYN}$ zOqkNOam85_(A=2jY^vAX--Xh7F}uogM0@d3Saa`boga~0`aTabw@gb#BV%+$M1emP zF<_1>yp1P-j*$eO7b)OJY#}hl6`mJawjrS^`E|O;7eVqH%}vr~TEaLrwkh2teau!c zL0dI{WXIvOup?0VG)(muL9xzA?HRd%g)wojQMva3Shk%U6 zfK4>6@et*WB<?j zz{l~6q3r#1nx6wc#a|`m^nJ{NOJ0oN9I9iTw3YVr1voX&vju3yw}7qmQ(%(b0;bCp zg!*<$0vFQ);N7$sxLV5xfOpd{6@Xu)J^Zky4{Q3erY~#ynx?O5S}k1KW6whA-34={o(1K14B$3DvDzpG#;8ZoHchdsx$-mc5V8{hlobht~t9qwWzpN|}o-;Lfc?`>YkR?63-pGoD= zkt|A*r3ES-ks%Tb;f=lZ7w^;GOs_h9sqZJt+jDQqT`eu9Z5eh$hdj};G#j$~v4*IP zm)kby+`Y%-#YVJ1I}2)B`FD zI*WEIst2+>=n?9p9n?!1P(9FRK1av?CviJ@`m#4m|uO;_#{y}cao%c D0_fty diff --git a/obj/Debug/net10.0/CPUSimulation.pdb b/obj/Debug/net10.0/CPUSimulation.pdb index c66b74fe8d47f69f15ae19af52a5c55aa13a3dc5..18f50917ed263cdaa763d384ae2f91d665e5f017 100644 GIT binary patch delta 2871 zcmY*bYiv|i5T0}P?(W?_x9x5p+t)%VrCWBp^npCY)GUq*iLP>}iv8mp;6Neqc%#DpKh4~+>1L;U9MS={bs=FT@~&YUxI zX70KFZa=;2jk-;D?L=iS6HPdXCJFMo!Do7(>KTAYqfR1?b#3eD7~~F?TiTW_!IN~N z(_!GIzWy%2^}f%3vVFU7#rg9)?c<)-itF$0xq0A?B5x_ie4rU13Cag~4vbf4@xWYA z0AvFd#)McF$qWc;WfciJVm)niG+?7Zm5rVOiP<*#05maMqn4mXPk{D;MnPYI3PKtM zK)s;nLHj}PfhIu>)fyR~zd>nXjY>dagurXTGyW6-xR|8Kg3Oy_0}1YhJY8X)vJ3JG zg*D)3AXeNI7r=XC&b@ zz?n%n4cMK8D}l3;@Wv#}1;883#&~f=Ex-Ahw*YXen8=w zz}$k<6s`b%9CA6RkZchYU%YBLf+9Fb;0)m6B+MBqNy2>!S7JVAs72ub@Jz_O0RNr? z#rw!+$!JAO|Bj`P@G#LQ7KqE^mK*|?)&v_p4_Tu<;OvSiZW))kSfv%8L+M!)m!0$k zWNtM6O#=zyOvgQIG|v5>a2I#_kfmt`CpuxtAA-mCK6RtpEd4mRgP0R>W7*It|7!%@ zs^qtzA2#r-_Y4hX_$lfXv4(hG)ga1+02tGV}v9Qrx z*#Y^h*(P{h@G|%-!5iQsL6R){!QG)o@R48#_?D1q$v42i36ae~;c7qlaG(+V*J=}d zBzP>h{RgIi;F>`i&wdV97t0W|dv4p3kJZY9S;jx+wN^_drH?%HoI z8@%)6WZA{-_X_(i9Y1~Tc*pWn*YzVci(ob?-bLU1xbWO>D+|_s7OL`` z@{hbYv8LPkdDol{*Q)+4Tl)q=-2<*oLQ8S`eC7rJ>O(bcTc*|Rot#+v=j->n4u1Xq z2RW~w>$`a6MAOyE{>h9pN1PSHZ=d&%adO7^CI7EyvliSRoqpKU{ex?H<-}hH-}?CJ z$9|u4=4buKnUOw$vrTacDwn#OTrvd*fp@yxEpP~WHdRZ0BRUMc>z|#g;RU$E#mCp+ z?(|ZFM0-z}GDqqe)FZh+Bu_DLnK)<{dKLFTO1op7F)+Awr!W2pE$;7&rDnKd+2IX= zJz^{(#@-fVC&k!@V(hXQ``#^93Ui-aEQX?D=z<*DGaq{sC9&b~5-}@QTIW4;D{K?O zh~1u3oQZpfucG-<#|0scSWnHWh(|0CJ;EH7=2;otKw{`sIrOr*A9uP~iiq=hvxvo- zxJc@$RG=B?JEdu1jbAfdNDY^(Qg4)c1C?tA?jOX&Yu0j}tax2o3NCGxzF@P|(|N9o zP~FPHw!77VSIsIcgV|~Ag(BK4-O@ZEqx~d@f@0`9vA0m{-5`g)EJoTySL}LCQKScN zFR>kaepo|%A&J++l)M*9-Tq*Q9;xfJR^p1bHpTnFT2#+!OJgzHj#iC#V#VR{b>d={ zMz+WkbA>rBqfQZBBh7QU!i&aSU!uEkF>|n)QfJAiKp7OJCA3SVKI_5yk8t9AnvunJ zQo7wR6<%yULmiIH6+At!C{|HBJ+cD1EiO-Z@^R7k_WKoRA#JA1>0Efr2V&PYhM@+5s+rdM%6_NB9+Y|xg}L$K2{7UbKuv2@meQF<)3`V=mLbefg?SqZ zi5APKXFkFZ1L&H1J3imUOR@I4=bCa6Nr5?>*hS)Ovv6?>^AJKtaQJ?bMiwqFVU9qP RIKyraYmUa!>-*7_{{d1@S#AIT delta 2008 zcmYjSYfPI}7(VCpYx!EBluHYAT)HvnC~dh6%4JF>x4DfCCon{r#UZkdTYzn(;%v#5 zjKuwbeHh)G8C#~IbD1v8=*+S?gK;x4F%iTVmk`wX!yhwoCMLS+^R^%Ql|1Krp7%ZH zyyu+voR`_5zYk27cFaqR<-E$+n|j7BG4SSt!}|w%MnGAefibvQPHQuJ61j;pcohe z-UFOoi9HVN1pHVo&8q`AQ5MkXMDU)VY7ppP1#bof21x1vkE-?1GB|BQhd+br-=yjo z)xQB+55KJXW1(X-`iw@$fCpb!4JHg|1#eJwEOa|~sjB0kUjWYpWK0;Z26$T4W@y?# z31EajLG|y)#z`kZJK>|0lTL=NMtnA{8d6~Jpfl~rgbr49f==jIjkZ9?X>=TPyhi6k zn>CvJ2^w9a(aDIR+pa5^~=8HG0kF0p>JGzTF%D$38nA|e};*b#7j z#A{-`wEt*e#>&AstB+W;!S=wSV-(U5X&IwSr^7Az-@@6=e0uE;^jXYzVkuR^i7?ls z&9K;AooM~8E{v)W%i#B1j2l>0L5l;QIQM3>+ugNX$9y6Le%L*O_MH3E2wz5f-^~Qs zJJIg*gwXn3GiZ~&%Mm-%k=KFtGq3Wc!LO9YY*Hp-t~idK8nu42V61M~b7$t-%GEjB zqosl0R&w*E554>F^39G6rCola)$#uD*safvy#*I4%2U5f`RYXQ>&e>upYQqG8Vlz= zXYU$!48GXiH{$IYF?MjtWU<>rpEype{1i^Pm{<7mOWSj5ntu4@;c@>BsprwR^QXq! zD(eSs&)t`u+;REN%8jc_3vbyP-KSazjCZHxCc- z@E8vt=ixVac-F)ld1!)OEC%)$~A0al(S44Le-J_gu+5@i>{LVR5QzjjLJppjxN5x#elc5 z1GgC!($acm_M|84kF$_J$x zMO4+YWFy8?%mg753s~^fc|0~@7P65H!p5DjrKTw7%huV2uvoBAo`oLqYL7}BVRoKU zWe%!|+`RmiBAm=?i!S=4}%DgspS3#yeVpS8hjinWm%%pmj7BBjDoiBsUal=|{AeLUE6O0fKJHSI3FZ*|iDc88k6 chp`N#C~}^b1QOisvKz)Wlku(NVpiZC(+w04j8kqnw$`dI7 delta 99 zcmZqp!r1^sEsR^349fj27?K&%7%Ul58H|7|Qy|-vArZ_n0*YAz*(nU>3`qJb9mFCbm;tP zZ+rUE-QlzK>cjAjZgtsJYF^Q?4xrwhr5Cw9YNPs+xuLqXJ$`F+`Gv90HJ6*-u3Y&& z`6E;5{j4;`TxC_21xo-0c`bGfxtpxuvPLfuI1Y@k{i*3Y4;~oUyK|6rxLOP_j6hc> zM(AzhS9f)+Vta>t*u7^hN!5|6`TF^C02t0qLszAZ2Q2v1E^T2*v<2O|0%urmVT(i# z;jOZ8NG)g0D;OOTy(t=$_;&GMV8&^aUhA+cMR>30nwe!u&3 z?nO+OV!rq=)kdpmn`nnL}*iWs-5m6uaH^5cSMG*7Qi+yS_&t?dVxqX*X zY-Zp-HGoIdg?L7dz{{egsHL`JHgzqQP&*~QmD-No=%o%~K%EeOLi|(lPsNXm9~bXY zrrx7WeS`RbXk9=;-n7}l!e2O(Dy`L?#K1xKT-on`z9jBQ`BJ}SHE3l`om0fd?{~+` zog#08QkGlo9}TwlC*ys+kwjzMNk*g12`3zl_B$=nNSv|eM5r$uPc}97M%-`yfLmW- zPkqcUSpN6M_!YymYSft9Rk1$fw;j*MR`m0F#?i-3j39wVdWVrHpJuXyu=swu7P<)Y f**cRAv0s>xB%0WhBV^819ntzzt9%rPL&bjpEn?by delta 1270 zcmZ`(O-NKx7(MsS^qeuBc{-U!KU5>kSYofy(HShrrkEr}V-mAKW}KgpN-A^VqGmvg z7E#HCFo-s-BwEB2733l$X;F(7LFG!sMXOvC6h!ph&zUiT-s7Hk&Ue21_r3dG&dOQ0 zuiHKMR=!N#*dne>&Gd^#C4_IC*$He>J7l985ItftKO_33d2qD(Zfx;!L@oQw!*7gF z`6~NYArV)?@Kn5X00P_$>S(E6!@vKd4e(w84%vZkl6dUW#o>|Dqm+kG89-rp`(oHf z+|)eU*LjGZU8K*er^cRa4JqxosL=qZqgI%Pm{V#F7;uQVG;otKgl_3Zj?xXBEK>nh-XQBmYem=Jgr83n{@kRM@dx{l#RXeg0iz( zl&hI#te%Tizjt1s?2~C6T&3KrlhZj!>cjEW+s3km#dcqjT zPZ36N1}8)WqZkwu%qN)7F`r|;#C(alP3U}^(D`2GUgq|ku2&`1v2^+J3+1&^{i^s; z4gCA9E4!=R;V`yK;i#@x-L8O|biMG0l9_NikPK#miDWR44kuD=LoHS+kg-}?)8UjA z3I(l1Al#;xg=ED5DnzG9N0Cxw*t^fc4 diff --git a/obj/Debug/net10.0/refint/CPUSimulation.dll b/obj/Debug/net10.0/refint/CPUSimulation.dll index 4121ef5b49e6f1f7c5259385497af99aff878695..7631741ae5330f9664a77ec04ef079b0fce82c74 100644 GIT binary patch delta 1372 zcmZ{kT}YEr7{~wTY`#v@`I@Oo64r{=2erLZr$m$)gncg&v8dS8g%w3vP!w%YL_}Ef zMjz0HbX8PPj3O_hqNp1ox(e!|3%jbIZiJb9mFCbm;tP zZ+rUE-QlzK>cjAjZgtsJYF^Q?4xrwhr5Cw9YNPs+xuLqXJ$`F+`Gv90HJ6*-u3Y&& z`6E;5{j4;`TxC_21xo-0c`bGfxtpxuvPLfuI1Y@k{i*3Y4;~oUyK|6rxLOP_j6hc> zM(AzhS9f)+Vta>t*u7^hN!5|6`TF^C02t0qLszAZ2Q2v1E^T2*v<2O|0%urmVT(i# z;jOZ8NG)g0D;OOTy(t=$_;&GMV8&^aUhA+cMR>30nwe!u&3 z?nO+OV!rq=)kdpmn`nnL}*iWs-5m6uaH^5cSMG*7Qi+yS_&t?dVxqX*X zY-Zp-HGoIdg?L7dz{{egsHL`JHgzqQP&*~QmD-No=%o%~K%EeOLi|(lPsNXm9~bXY zrrx7WeS`RbXk9=;-n7}l!e2O(Dy`L?#K1xKT-on`z9jBQ`BJ}SHE3l`om0fd?{~+` zog#08QkGlo9}TwlC*ys+kwjzMNk*g12`3zl_B$=nNSv|eM5r$uPc}97M%-`yfLmW- zPkqcUSpN6M_!YymYSft9Rk1$fw;j*MR`m0F#?i-3j39wVdWVrHpJuXyu=swu7P<)Y f**cRAv0s>xB%0WhBV^819ntzzt9%rPL&bjpEn?by delta 1270 zcmZ`(O-NKx7(MsS^qeuBc{-U!KU5>kSYofy(HShrrkEr}V-mAKW}KgpN-A^VqGmvg z7E#HCFo-s-BwEB2733l$X;F(7LFG!sMXOvC6h!ph&zUiT-s7Hk&Ue21_r3dG&dOQ0 zuiHKMR=!N#*dne>&Gd^#C4_IC*$He>J7l985ItftKO_33d2qD(Zfx;!L@oQw!*7gF z`6~NYArV)?@Kn5X00P_$>S(E6!@vKd4e(w84%vZkl6dUW#o>|Dqm+kG89-rp`(oHf z+|)eU*LjGZU8K*er^cRa4JqxosL=qZqgI%Pm{V#F7;uQVG;otKgl_3Zj?xXBEK>nh-XQBmYem=Jgr83n{@kRM@dx{l#RXeg0iz( zl&hI#te%Tizjt1s?2~C6T&3KrlhZj!>cjEW+s3km#dcqjT zPZ36N1}8)WqZkwu%qN)7F`r|;#C(alP3U}^(D`2GUgq|ku2&`1v2^+J3+1&^{i^s; z4gCA9E4!=R;V`yK;i#@x-L8O|biMG0l9_NikPK#miDWR44kuD=LoHS+kg-}?)8UjA z3I(l1Al#;xg=ED5DnzG9N0Cxw*t^fc4