X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model.am2900%2Ftest%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fam2901%2FTestableAm2901.java;fp=net.mograsim.logic.model.am2900%2Ftest%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fam2901%2FTestableAm2901.java;h=34c179dac57009c7cc65930c1c226f3a305dbb6e;hb=ccc97ca46668196a77da02acb2bde450e6d20922;hp=0000000000000000000000000000000000000000;hpb=466a1f49e8a4f231edecf4c6bc726ea68766f1be;p=Mograsim.git diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2901/TestableAm2901.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2901/TestableAm2901.java new file mode 100644 index 00000000..34c179da --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2901/TestableAm2901.java @@ -0,0 +1,108 @@ +package net.mograsim.logic.model.am2900.am2901; + +import java.util.Arrays; +import java.util.stream.Stream; + +import net.mograsim.logic.model.am2900.TestUtil; +import net.mograsim.logic.model.am2900.TestableCircuit; + +public interface TestableAm2901 extends TestableCircuit +{ + + void setDest(Am2901_Dest dest); + + void setFunc(Am2901_Func func); + + void setSrc(Am2901_Src src); + + void setReg_A(String val_4_bit); + + void setReg_B(String val_4_bit); + + void setCarryIn(String val_1_bit); + + void setNotOutEnable(String val_1_bit); + + void setD(String val_4_bit); + + void setQ_0(String val_1_bit); + + void setQ_3(String val_1_bit); + + void setRAM_0(String val_1_bit); + + void setRAM_3(String val_1_bit); + + void setDirectly(Register r, String val_4_bit); + + String getQ_0(); + + String getQ_3(); + + String getRAM_0(); + + String getRAM_3(); + + String getNotP(); + + String getNotG(); + + String getCarryOut(); + + String getSign(); + + String getZero(); + + String getOverflow(); + + String getY(); + + String getDirectly(Register r); + + public enum Am2901_Dest + { + QREG, NOP, RAMA, RAMF, RAMQD, RAMD, RAMQU, RAMU; + + public boolean doesShift() + { + return ordinal() >= 4; + } + + public int getShiftDir() + { + return doesShift() ? (ordinal() < 6 ? -1 : 1) : 0; + } + + public int getI7() + { + return this.ordinal() >> 1 & 1; + } + } + + public enum Am2901_Func + { + ADD, SUBR, SUBS, OR, AND, NOTRS, EXOR, EXNOR; + } + + public enum Am2901_Src + { + AQ, AB, ZQ, ZB, ZA, DA, DQ, DZ; + } + + public enum Register + { + r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q; + + public String toBitString() + { + if (this.ordinal() > 0xF) + throw new UnsupportedOperationException(); + return TestUtil.to4bitBin(this.ordinal()); + } + + public static Stream stream() + { + return Arrays.stream(values()); + } + } +}