From 8928ea321d37a78201779e6a49da7e2ef9346b7e Mon Sep 17 00:00:00 2001 From: Austin Adams Date: Mon, 4 Sep 2023 23:11:56 -0400 Subject: [PATCH] Call floating wires "z" instead of "x" Blue wires are high impedance, and the standard name for that state is z, not x. Also remove the spots in the documentation where floating is called "uninitialized." --- .../wires/img/wire-colors-pt-2-blue-wire.PNG | Bin 3371 -> 1193 bytes .../wire-colors-pt-3-black-wire-uninit.PNG | Bin 3547 -> 0 bytes ...wire-colors-pt-3-dark-blue-wire-uninit.PNG | Bin 0 -> 1636 bytes .../img/wire-colors-pt-4-orange-wire.PNG | Bin 4128 -> 2980 bytes docs/docs/wires/wire-colors.md | 37 +++++++++--------- .../com/ra4king/circuitsim/gui/GuiUtils.java | 16 ++++---- .../circuitsim/simulator/CircuitState.java | 2 +- .../circuitsim/simulator/WireValue.java | 24 ++++++------ .../components/arithmetic/Comparator.java | 2 +- .../components/gates/ControlledBuffer.java | 6 +-- .../simulator/components/gates/Gate.java | 6 +-- .../simulator/components/gates/XorGate.java | 2 +- .../components/memory/DFlipFlop.java | 2 +- .../components/plexers/PriorityEncoder.java | 4 +- .../components/wiring/SimpleTransistor.java | 4 +- .../components/wiring/Transistor.java | 4 +- .../circuitsim/simulator/WireValueTest.java | 4 +- 17 files changed, 56 insertions(+), 57 deletions(-) delete mode 100644 docs/docs/wires/img/wire-colors-pt-3-black-wire-uninit.PNG create mode 100644 docs/docs/wires/img/wire-colors-pt-3-dark-blue-wire-uninit.PNG diff --git a/docs/docs/wires/img/wire-colors-pt-2-blue-wire.PNG b/docs/docs/wires/img/wire-colors-pt-2-blue-wire.PNG index 9ebb442715a850a1775b760a1dadb1554fe30947..70da04371d49916cc31b699871fb1506710b8821 100644 GIT binary patch literal 1193 zcmV;a1XlZrP)ZgXgFbngSdJ^%m&J4r-ARCt{2 z+)rqmbsWd>cm8x;n{8st49j*2JIJ6Bf<=*15FwZ3up&Dc${14G!{V^DGIl76v+Aj~ zuw=@{lp*!0P_SD~7z8iYR)!lnq=L6xmPnYXe;~FiN$R1~HOD*w|%4p+1I& zE;2E3hf9~9AsTIAV&V=%Ll+5!`WPF#OfHwJ>vy%%T|^o#kw_4W%}^|MP$--Lx`CEW zRm;E}?d{XJT#G~^Jp_ZnZSSkV5|M_wdUXoJxJ5qSOQ{s*;WJMqoK6F`dy;UtlT)YO z*s@Y{SR&Fei9`a!xJ5R51_;%8m6KBGB-v~mhH-&|2M=u7)6!c)5ow5AE=MdjLq6Y2 z{b99HhfdXp>Tp^a-MRzT=P4c!xE8Q85udujT`$}U7cfd`~d9t zz_DW+dPg>BZU(yzn!Y!?V>iX3om47CXJ=(Ao;E2jI+iPzEZ$!_>F1T60AUm5Pr{CR5W=)5G%lIvVmvL_{_VeF_t=gX16g ztPei^$-Hi5<|5v_H)9(`|#oc zSSx|81Ezj}g@yIwtGCSFE6(9^Rq*@$H7#1!AR@cwa5xAAx|p4vrcii|jnUHN02@FP zJpXd_b^CtYe5Vra?b8GTU8dX4sD~vY4G|89aJd$7I*kV>OK|=bu-VLy7tU7CWjUP& zF4rRAu=%Gw3M>(62#?1@B+`T1Jqeh9TC=@4ZucaSNDm&5$FxF2LJ?`0U@*wtyMJRC z7s%(AcC@|Bc6(xJKP(YxIBno3B9@ZNco6qMb^`$I8kfV11pH-JZtfst^ct z5e|p890qQrJ>6BOI@LXrI*-T0@Nhrz_!Y*-Pct}pgn@y-SY7>y!NDVpkDn$Uzryfv zziC)$Pj?ZqG`%Gh5zA0uiHKz=utdZ%6j&l+844^Bv5bEK6tQ;MpPPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00073Nkl7{>88Ae2oAG)m|a#)EwVZ#jbu_9SoaWYDh7HxT#?!N|7| zc+?@frGpDkhdQ+@Y)4I%L~Xu-&thIYWO#Vr-#^=azt=5hrk84{qmDZ2KDy4@d=UWj z9bpE5FarR>3;+l-03gf&5M}^Cm;nG`2H@XURh5dOP?lv%(^P4iD$6nzMWL#y-ZsoQ zX-pk;)ctK;S(ZwYg~D(k-yh2JrgGht%)ZF;rtD@S*R>aZU6x2pFGbM$0G&7 zOlCWoJ;_WBPcqvn2xf}ok@7re%mmOM%jHT@G?C+MWOld^Voe7*&PGu*(Q>&W%mDPG zBa5Pm%pO~WSkt4TX!1uL8es;Yb7fg7jz`CiOt0cN8^!VH;u;!Z2H;&J$>O+1c6fD| znH>}aGbPD_Faz*0$1lQga9r&FJ)qXLe*MjlpUt3L?!L+F`^ApyIlJn$WMiqm8e~6rIemYqq9_P60Ph!Mt;WassS~T~vtYYY?|D;Y zS=Pm&Sph(&&PPkt()dQL>#mfhDPabnht9^!TV2_6m~jIDK>x1mJUYXgtmc;J;ZzyYy_f>#kZoo83v6@y0oI)KS+}UGoP`%&gT9ns5UEz^6f& z0U*o(fG`69!VCZiGXR7c01##X@MeAh009600|0oiU35^W=Ia0e002ovPDHLkV1iF6 BNcsQ( diff --git a/docs/docs/wires/img/wire-colors-pt-3-black-wire-uninit.PNG b/docs/docs/wires/img/wire-colors-pt-3-black-wire-uninit.PNG deleted file mode 100644 index c61585c496b381cde4683e05832b2cad9bdbd214..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3547 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 VXU4H3#+Lv9002ovPDHLkV1oJsnGpa0 diff --git a/docs/docs/wires/img/wire-colors-pt-3-dark-blue-wire-uninit.PNG b/docs/docs/wires/img/wire-colors-pt-3-dark-blue-wire-uninit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9e8945e671071a87868730f8be86b3dd45feb36e GIT binary patch literal 1636 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 { - graphics.setStroke(X_1BIT_COLOR); - graphics.setFill(X_1BIT_COLOR); + case Z -> { + graphics.setStroke(Z_1BIT_COLOR); + graphics.setFill(Z_1BIT_COLOR); } } } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/CircuitState.java b/src/main/java/com/ra4king/circuitsim/simulator/CircuitState.java index 3f777965..1de26cb3 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/CircuitState.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/CircuitState.java @@ -353,7 +353,7 @@ void link(LinkState other) { cachedMergedValue = null; isShortCircuited = null; - participants.forEach((port, info) -> info.lastPropagated.setAllBits(State.X)); + participants.forEach((port, info) -> info.lastPropagated.setAllBits(State.Z)); linkStates.remove(other.link); getCircuit().getSimulator().linkRemoved(other.link); diff --git a/src/main/java/com/ra4king/circuitsim/simulator/WireValue.java b/src/main/java/com/ra4king/circuitsim/simulator/WireValue.java index f567b512..556635b6 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/WireValue.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/WireValue.java @@ -7,7 +7,7 @@ */ public class WireValue { public enum State { - ONE('1'), ZERO('0'), X('x'); + ONE('1'), ZERO('0'), Z('z'); public final char repr; @@ -16,14 +16,14 @@ public enum State { } public State negate() { - return this == X ? X : this == ONE ? ZERO : ONE; + return this == Z ? Z : this == ONE ? ZERO : ONE; } } private State[] bits; public WireValue(int bitSize) { - this(bitSize, State.X); + this(bitSize, State.Z); } public WireValue(int bitSize, State state) { @@ -53,9 +53,9 @@ public WireValue merge(WireValue value) { } for (int i = 0; i < getBitSize(); i++) { - if (getBit(i) == State.X) { + if (getBit(i) == State.Z) { setBit(i, value.getBit(i)); - } else if (value.getBit(i) == State.X) { + } else if (value.getBit(i) == State.Z) { setBit(i, getBit(i)); } else if (value.getBit(i) != getBit(i)) { throw new ShortCircuitException(this, value); @@ -81,7 +81,7 @@ public void setBitSize(int bitSize) { State[] oldBits = bits; bits = new State[bitSize]; - setAllBits(State.X); + setAllBits(State.Z); System.arraycopy(oldBits, 0, bits, 0, Math.min(bitSize, oldBits.length)); } @@ -129,7 +129,7 @@ public boolean isValidValue() { } for (State bit : bits) { - if (bit == State.X) { + if (bit == State.Z) { return false; } } @@ -140,7 +140,7 @@ public boolean isValidValue() { public int getValue() { int value = 0; for (int i = 0; i < bits.length; i++) { - if (bits[i] == State.X) { + if (bits[i] == State.Z) { throw new IllegalStateException("Invalid value"); } @@ -153,14 +153,14 @@ public int getValue() { * Converts the value held on this wire to a hex string. * * @return a lowercase hex string if all bits are defined, otherwise - * getBitSize() 'x's + * getBitSize() 'z's */ public String toHexString() { int hexDigits = 1 + (getBitSize() - 1) / 4; if (isValidValue()) { return String.format("%0" + hexDigits + "x", getValue()); } else { - return "x".repeat(Math.max(0, hexDigits)); + return "z".repeat(Math.max(0, hexDigits)); } } @@ -168,14 +168,14 @@ public String toHexString() { * Converts the value held on this wire to a decimal string. * * @return a decimal string if all bits are defined, otherwise - * getBitSize() 'x's + * getBitSize() 'z's */ public String toDecString() { int decDigits = (int)Math.ceil(getBitSize() / 3.322); if (isValidValue()) { return String.format("%0" + decDigits + "d", getValue()); } else { - return "x".repeat(Math.max(0, decDigits)); + return "z".repeat(Math.max(0, decDigits)); } } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/arithmetic/Comparator.java b/src/main/java/com/ra4king/circuitsim/simulator/components/arithmetic/Comparator.java index fc69a0ca..c5cae18f 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/arithmetic/Comparator.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/arithmetic/Comparator.java @@ -46,7 +46,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { state.pushValue(getPort(PORT_EQ), new WireValue(1, valueA == valueB ? State.ONE : State.ZERO)); state.pushValue(getPort(PORT_GT), new WireValue(1, valueA > valueB ? State.ONE : State.ZERO)); } else { - WireValue xValue = new WireValue(1, State.X); + WireValue xValue = new WireValue(1, State.Z); state.pushValue(getPort(PORT_LT), xValue); state.pushValue(getPort(PORT_EQ), xValue); state.pushValue(getPort(PORT_GT), xValue); diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/ControlledBuffer.java b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/ControlledBuffer.java index 7b4d543a..b7334a82 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/ControlledBuffer.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/ControlledBuffer.java @@ -9,7 +9,7 @@ * @author Roi Atalla */ public class ControlledBuffer extends Component { - private final WireValue X_VALUE; + private final WireValue Z_VALUE; public static final int PORT_IN = 0; public static final int PORT_ENABLE = 1; @@ -17,7 +17,7 @@ public class ControlledBuffer extends Component { public ControlledBuffer(String name, int bitSize) { super(name, new int[] { bitSize, 1, bitSize }); - X_VALUE = new WireValue(bitSize); + Z_VALUE = new WireValue(bitSize); } @Override @@ -29,7 +29,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { if (state.getLastReceived(getPort(PORT_ENABLE)).getBit(0) == State.ONE) { state.pushValue(getPort(PORT_OUT), state.getLastReceived(getPort(PORT_IN))); } else { - state.pushValue(getPort(PORT_OUT), X_VALUE); + state.pushValue(getPort(PORT_OUT), Z_VALUE); } } } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/Gate.java b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/Gate.java index f29dec97..41792bcb 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/Gate.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/Gate.java @@ -71,7 +71,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { } result.setBit(bit, portBit); - boolean isX = result.getBit(bit) == State.X; + boolean isX = result.getBit(bit) == State.Z; for (int port = 1; port < numInputs; port++) { portBit = state.getLastReceived(getPort(port)).getBit(bit); @@ -79,12 +79,12 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { portBit = portBit.negate(); } - isX &= portBit == State.X; + isX &= portBit == State.Z; result.setBit(bit, operate(result.getBit(bit), portBit)); } if (isX) { - result.setBit(bit, State.X); + result.setBit(bit, State.Z); } else if (negateOutput) { result.setBit(bit, result.getBit(bit) == State.ONE ? State.ZERO : State.ONE); } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/XorGate.java b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/XorGate.java index 9183ff8e..c53de812 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/gates/XorGate.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/gates/XorGate.java @@ -24,6 +24,6 @@ protected XorGate(String name, int bitSize, int numInputs, boolean[] negateInput @Override protected State operate(State acc, State bit) { - return acc != State.X && bit != State.X && acc != bit ? State.ONE : State.ZERO; + return acc != State.Z && bit != State.Z && acc != bit ? State.ONE : State.ZERO; } } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/memory/DFlipFlop.java b/src/main/java/com/ra4king/circuitsim/simulator/components/memory/DFlipFlop.java index fa2235ed..e9d19cfc 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/memory/DFlipFlop.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/memory/DFlipFlop.java @@ -49,7 +49,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { pushValue(state, State.ONE); } else if (enable != State.ZERO && portIndex == PORT_CLOCK && value.getBit(0) == State.ONE) { State d = state.getLastReceived(getPort(PORT_D)).getBit(0); - if (d != State.X) { + if (d != State.Z) { pushValue(state, d); } } diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/plexers/PriorityEncoder.java b/src/main/java/com/ra4king/circuitsim/simulator/components/plexers/PriorityEncoder.java index 1078087a..32779172 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/plexers/PriorityEncoder.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/plexers/PriorityEncoder.java @@ -42,7 +42,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { // The only other input Port are the indexed inputs if (!this.isEnabled) { state.pushValue(getEnabledOutPort(), new WireValue(1, State.ZERO)); - state.pushValue(out, new WireValue(out.getLink().getBitSize(), State.X)); + state.pushValue(out, new WireValue(out.getLink().getBitSize(), State.Z)); state.pushValue(getGroupSignalPort(), new WireValue(1, State.ZERO)); return; } @@ -59,7 +59,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { if (highest == -1) { state.pushValue(getEnabledOutPort(), new WireValue(1, State.ONE)); - state.pushValue(out, new WireValue(out.getLink().getBitSize(), State.X)); + state.pushValue(out, new WireValue(out.getLink().getBitSize(), State.Z)); state.pushValue(getGroupSignalPort(), new WireValue(1, State.ZERO)); } else { diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/SimpleTransistor.java b/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/SimpleTransistor.java index 78c72110..5576dbcd 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/SimpleTransistor.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/SimpleTransistor.java @@ -93,7 +93,7 @@ public class SimpleTransistor extends Component { public static final int PORT_GATE = 1; public static final int PORT_DRAIN = 2; - private static final WireValue X_VALUE = new WireValue(1); + private static final WireValue Z_VALUE = new WireValue(1); private boolean isIllegallyWired; private boolean isPType; @@ -124,7 +124,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { if (pTypeOk && nTypeOk && state.getLastReceived(getPort(PORT_GATE)).getBit(0) == enableBit) { state.pushValue(getPort(PORT_DRAIN), new WireValue(sourceBit)); } else { - state.pushValue(getPort(PORT_DRAIN), X_VALUE); + state.pushValue(getPort(PORT_DRAIN), Z_VALUE); if (!nTypeOk) { throw new SimulationException("N-type transistor must not be connected to logic-level high!"); diff --git a/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/Transistor.java b/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/Transistor.java index cbe32d49..7a36c41e 100644 --- a/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/Transistor.java +++ b/src/main/java/com/ra4king/circuitsim/simulator/components/wiring/Transistor.java @@ -13,7 +13,7 @@ public class Transistor extends Component { public static final int PORT_GATE = 1; public static final int PORT_OUT = 2; - private static final WireValue X_VALUE = new WireValue(1); + private static final WireValue Z_VALUE = new WireValue(1); private State enableBit; @@ -32,7 +32,7 @@ public void valueChanged(CircuitState state, WireValue value, int portIndex) { if (state.getLastReceived(getPort(PORT_GATE)).getBit(0) == enableBit) { state.pushValue(getPort(PORT_OUT), state.getLastReceived(getPort(PORT_IN))); } else { - state.pushValue(getPort(PORT_OUT), X_VALUE); + state.pushValue(getPort(PORT_OUT), Z_VALUE); } } } diff --git a/src/test/java/com/ra4king/circuitsim/simulator/WireValueTest.java b/src/test/java/com/ra4king/circuitsim/simulator/WireValueTest.java index 4011369a..6f4a7ee9 100644 --- a/src/test/java/com/ra4king/circuitsim/simulator/WireValueTest.java +++ b/src/test/java/com/ra4king/circuitsim/simulator/WireValueTest.java @@ -15,7 +15,7 @@ public class WireValueTest { public void testBasic() { WireValue value = new WireValue(10); assertThat(value.getBitSize()).isEqualTo(10); - assertThat(WireValueUtils.allBitsEqualTo(value, State.X)).isTrue(); + assertThat(WireValueUtils.allBitsEqualTo(value, State.Z)).isTrue(); value = new WireValue(15, State.ONE); assertThat(value.getBitSize()).isEqualTo(15); @@ -44,7 +44,7 @@ public void testMerge() { value2.setBit(2, State.ZERO); WireValue merge = new WireValue(value1).merge(value2); - assertThat(WireValueUtils.allBitsEqualTo(merge, State.ONE, State.ZERO, State.ZERO, State.X)).isTrue(); + assertThat(WireValueUtils.allBitsEqualTo(merge, State.ONE, State.ZERO, State.ZERO, State.Z)).isTrue(); } @Test