1 package net.mograsim.logic.model.am2900.am2901;
3 import java.util.Arrays;
4 import java.util.stream.Stream;
6 import net.mograsim.logic.model.am2900.TestUtil;
7 import net.mograsim.logic.model.am2900.TestableCircuit;
9 public interface TestableAm2901 extends TestableCircuit
12 void setDest(Am2901_Dest dest);
14 void setFunc(Am2901_Func func);
16 void setSrc(Am2901_Src src);
18 void setReg_A(String val_4_bit);
20 void setReg_B(String val_4_bit);
22 void setCarryIn(String val_1_bit);
24 void setNotOutEnable(String val_1_bit);
26 void setD(String val_4_bit);
28 void setQ_0(String val_1_bit);
30 void setQ_3(String val_1_bit);
32 void setRAM_0(String val_1_bit);
34 void setRAM_3(String val_1_bit);
36 void setDirectly(Register r, String val_4_bit);
60 String getDirectly(Register r);
62 public enum Am2901_Dest
64 QREG, NOP, RAMA, RAMF, RAMQD, RAMD, RAMQU, RAMU;
66 public boolean doesShift()
68 return ordinal() >= 4;
71 public int getShiftDir()
73 return doesShift() ? (ordinal() < 6 ? -1 : 1) : 0;
78 return this.ordinal() >> 1 & 1;
82 public enum Am2901_Func
84 ADD, SUBR, SUBS, OR, AND, NOTRS, EXOR, EXNOR;
87 public enum Am2901_Src
89 AQ, AB, ZQ, ZB, ZA, DA, DQ, DZ;
94 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q;
96 public String toBitString()
98 if (this.ordinal() > 0xF)
99 throw new UnsupportedOperationException();
100 return TestUtil.to4bitBin(this.ordinal());
103 public static Stream<Register> stream()
105 return Arrays.stream(values());