├── .gitattributes ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bitbucket-pipelines.yml ├── distribution ├── Assembly.xml ├── Digital.exe ├── Digital_noD3D.exe ├── Download.svg ├── ReleaseNotes.txt ├── Version.txt ├── Windows_Read.me ├── _ReadMeFirst.html ├── checklist.txt ├── l4jconfig.xml ├── l4jconfig_noD3D.xml ├── linux │ ├── Digital.sh │ ├── desktop.template │ ├── digital-simulator.xml │ └── install.sh ├── screenshot.png ├── screenshot2.png └── screenshot3.png ├── pom.xml ├── src ├── main │ ├── asm │ │ ├── HDLExample.asm │ │ ├── HDLExample.hex │ │ ├── Processor.asm │ │ ├── Processor.hex │ │ ├── ProcessorIntr.asm │ │ ├── ProcessorIntr.hex │ │ ├── VGAExample.asm │ │ ├── VGAExample.hex │ │ ├── vonNeumann.asm │ │ └── vonNeumann.hex │ ├── dig │ │ ├── 74xx │ │ │ ├── 74xx_xor.dig │ │ │ ├── CrazySmallCPU.dig │ │ │ ├── counter.dig │ │ │ ├── decimalCounter.dig │ │ │ ├── hexCounter.dig │ │ │ ├── trafic.dig │ │ │ ├── traficDiode.dig │ │ │ ├── traficDiodeInv.dig │ │ │ └── traficInv.dig │ │ ├── cmos │ │ │ ├── CAS_RAS.dig │ │ │ ├── and.dig │ │ │ ├── d-tg-ff.dig │ │ │ ├── d-tg-ff2.dig │ │ │ ├── dec.dig │ │ │ ├── eprom.dig │ │ │ ├── inverter.dig │ │ │ ├── nand.dig │ │ │ ├── nand3.dig │ │ │ ├── nor.dig │ │ │ ├── nor3.dig │ │ │ ├── openDrainBus.dig │ │ │ ├── or.dig │ │ │ ├── prom.dig │ │ │ ├── rom.dig │ │ │ ├── sram.dig │ │ │ ├── sram_simple.dig │ │ │ ├── tristateOut.dig │ │ │ └── xor.dig │ │ ├── combinatorial │ │ │ ├── Adder8bit.dig │ │ │ ├── Bus.dig │ │ │ ├── Comp.dig │ │ │ ├── Comp7485.dig │ │ │ ├── Comp7485Parall.dig │ │ │ ├── CompEN.dig │ │ │ ├── CompRC.dig │ │ │ ├── Dadda-inc.dig │ │ │ ├── DaddaMultiplier.dig │ │ │ ├── DemuxCas.dig │ │ │ ├── FullAddSub_RC.dig │ │ │ ├── FullAdder.dig │ │ │ ├── FullAdder.svg │ │ │ ├── FullAdderCLA.dig │ │ │ ├── FullAdderNaive.dig │ │ │ ├── FullAdderRC.dig │ │ │ ├── FullAdderRCSig.dig │ │ │ ├── FullAdderRC_CLA.dig │ │ │ ├── FullSub.dig │ │ │ ├── FullSub.svg │ │ │ ├── FullSub2.dig │ │ │ ├── FullSubNaive.dig │ │ │ ├── FullSubRC.dig │ │ │ ├── HalfAdder.dig │ │ │ ├── HalfSub.dig │ │ │ ├── LUT.dig │ │ │ ├── Multiply.dig │ │ │ ├── Multiply16Bit.dig │ │ │ ├── Multiply8Bit.dig │ │ │ ├── Multiply8BitTable.dig │ │ │ ├── MultiplyTest.dig │ │ │ ├── Xor1.dig │ │ │ ├── Xor2.dig │ │ │ ├── Xor3.dig │ │ │ ├── demux.dig │ │ │ └── mux.dig │ │ ├── generic │ │ │ ├── barrelShifter │ │ │ │ ├── TestBarrelShifter.dig │ │ │ │ ├── TestBarrelShifter2.dig │ │ │ │ ├── barrelShifter.dig │ │ │ │ ├── barrelShifter2.dig │ │ │ │ ├── shift-fixed-arith-right-inc.dig │ │ │ │ ├── shift-fixed-left-inc.dig │ │ │ │ ├── shift-fixed-right-inc.dig │ │ │ │ └── shift-inc.dig │ │ │ ├── gray │ │ │ │ ├── GrayCounter.dig │ │ │ │ ├── GrayFinal-inc.dig │ │ │ │ ├── GrayNode-inc.dig │ │ │ │ └── TestGray.dig │ │ │ └── modify │ │ │ │ ├── Conway │ │ │ │ ├── GenericConway.dig │ │ │ │ ├── discrete.dig │ │ │ │ ├── genCell.dig │ │ │ │ └── lut.dig │ │ │ │ ├── genAllBitsSet.dig │ │ │ │ ├── genAllBitsSetTest.dig │ │ │ │ ├── genAnd.dig │ │ │ │ ├── genAndTest.dig │ │ │ │ ├── genReg.dig │ │ │ │ └── genRegTest.dig │ │ ├── graphicRam │ │ │ ├── col1.dig │ │ │ ├── col2.dig │ │ │ ├── col3.dig │ │ │ └── mandelbrot │ │ │ │ ├── calc.dig │ │ │ │ ├── coorGen.dig │ │ │ │ ├── iterate.dig │ │ │ │ ├── mandelbrot.dig │ │ │ │ ├── mulFixed.dig │ │ │ │ └── offset.dig │ │ ├── hazard │ │ │ ├── Hazard.dig │ │ │ ├── HazardA.dig │ │ │ ├── HazardB.dig │ │ │ └── Oscillation.dig │ │ ├── hdl │ │ │ ├── BASYS3.config │ │ │ ├── BASYS3_lightchase.dig │ │ │ ├── HowTo.md │ │ │ ├── TinyFPGA_BX.config │ │ │ ├── TinyFPGA_BX_SOS.dig │ │ │ └── VerilogClockExample.config │ │ ├── lib │ │ │ ├── DIL Chips │ │ │ │ ├── 74xx │ │ │ │ │ ├── ReadMe.txt │ │ │ │ │ ├── arithmetic │ │ │ │ │ │ ├── 74147.dig │ │ │ │ │ │ ├── 74148.dig │ │ │ │ │ │ ├── 74181.dig │ │ │ │ │ │ ├── 74182.dig │ │ │ │ │ │ ├── 74198.dig │ │ │ │ │ │ ├── 74280.dig │ │ │ │ │ │ ├── 74283.dig │ │ │ │ │ │ ├── 74381.dig │ │ │ │ │ │ ├── 74382.dig │ │ │ │ │ │ ├── 74682.dig │ │ │ │ │ │ ├── 74688.dig │ │ │ │ │ │ ├── 7480.dig │ │ │ │ │ │ ├── 7482.dig │ │ │ │ │ │ ├── 7483.dig │ │ │ │ │ │ ├── 7483Real.dig │ │ │ │ │ │ └── 7485.dig │ │ │ │ │ ├── basic │ │ │ │ │ │ ├── 7400.dig │ │ │ │ │ │ ├── 7401.dig │ │ │ │ │ │ ├── 7402.dig │ │ │ │ │ │ ├── 7403.dig │ │ │ │ │ │ ├── 7404.dig │ │ │ │ │ │ ├── 7405.dig │ │ │ │ │ │ ├── 7408.dig │ │ │ │ │ │ ├── 7409.dig │ │ │ │ │ │ ├── 7410.dig │ │ │ │ │ │ ├── 7411.dig │ │ │ │ │ │ ├── 7412.dig │ │ │ │ │ │ ├── 7413.dig │ │ │ │ │ │ ├── 74133.dig │ │ │ │ │ │ ├── 7414.dig │ │ │ │ │ │ ├── 7415.dig │ │ │ │ │ │ ├── 7420.dig │ │ │ │ │ │ ├── 7421.dig │ │ │ │ │ │ ├── 7425.dig │ │ │ │ │ │ ├── 74260.dig │ │ │ │ │ │ ├── 74266.dig │ │ │ │ │ │ ├── 7427.dig │ │ │ │ │ │ ├── 7428.dig │ │ │ │ │ │ ├── 7430.dig │ │ │ │ │ │ ├── 7432.dig │ │ │ │ │ │ ├── 7434.dig │ │ │ │ │ │ ├── 7440.dig │ │ │ │ │ │ ├── 744002.dig │ │ │ │ │ │ ├── 744075.dig │ │ │ │ │ │ ├── 7451.dig │ │ │ │ │ │ ├── 7454.dig │ │ │ │ │ │ ├── 7455.dig │ │ │ │ │ │ ├── 7458.dig │ │ │ │ │ │ ├── 747266.dig │ │ │ │ │ │ ├── 74804.dig │ │ │ │ │ │ ├── 74805.dig │ │ │ │ │ │ ├── 74808.dig │ │ │ │ │ │ ├── 74832.dig │ │ │ │ │ │ └── 7486.dig │ │ │ │ │ ├── counter │ │ │ │ │ │ ├── 74160.dig │ │ │ │ │ │ ├── 74161.dig │ │ │ │ │ │ ├── 74162.dig │ │ │ │ │ │ ├── 74162Real.dig │ │ │ │ │ │ ├── 74163.dig │ │ │ │ │ │ ├── 74190.dig │ │ │ │ │ │ ├── 74191.dig │ │ │ │ │ │ ├── 74193.dig │ │ │ │ │ │ ├── 744017.dig │ │ │ │ │ │ ├── 74590.dig │ │ │ │ │ │ ├── 74779-inc.dig │ │ │ │ │ │ ├── 74779.dig │ │ │ │ │ │ ├── 7490.dig │ │ │ │ │ │ └── 7493.dig │ │ │ │ │ ├── display │ │ │ │ │ │ ├── 74247.dig │ │ │ │ │ │ ├── 74248.dig │ │ │ │ │ │ ├── 7447.dig │ │ │ │ │ │ └── 7448.dig │ │ │ │ │ ├── driver │ │ │ │ │ │ ├── 7406.dig │ │ │ │ │ │ ├── 7407.dig │ │ │ │ │ │ ├── 74125.dig │ │ │ │ │ │ ├── 74126.dig │ │ │ │ │ │ ├── 7416.dig │ │ │ │ │ │ ├── 7417.dig │ │ │ │ │ │ ├── 74244.dig │ │ │ │ │ │ ├── 74245.dig │ │ │ │ │ │ ├── 74540.dig │ │ │ │ │ │ └── 74541.dig │ │ │ │ │ ├── flipflops │ │ │ │ │ │ ├── 74107.dig │ │ │ │ │ │ ├── 74109.dig │ │ │ │ │ │ ├── 74112.dig │ │ │ │ │ │ ├── 74116.dig │ │ │ │ │ │ ├── 74173.dig │ │ │ │ │ │ ├── 74174.dig │ │ │ │ │ │ ├── 74175.dig │ │ │ │ │ │ ├── 74273.dig │ │ │ │ │ │ ├── 74373-D-inc.dig │ │ │ │ │ │ ├── 74373.dig │ │ │ │ │ │ ├── 74374.dig │ │ │ │ │ │ ├── 74377.dig │ │ │ │ │ │ ├── 74573.dig │ │ │ │ │ │ ├── 74574.dig │ │ │ │ │ │ ├── 7474.dig │ │ │ │ │ │ └── 7476.dig │ │ │ │ │ ├── memory │ │ │ │ │ │ ├── 74189.dig │ │ │ │ │ │ ├── 7440105.dig │ │ │ │ │ │ ├── 74670-D-inc.dig │ │ │ │ │ │ ├── 74670.dig │ │ │ │ │ │ └── 7489.dig │ │ │ │ │ ├── plexers │ │ │ │ │ │ ├── 74138.dig │ │ │ │ │ │ ├── 74139.dig │ │ │ │ │ │ ├── 74150.dig │ │ │ │ │ │ ├── 74151.dig │ │ │ │ │ │ ├── 74153.dig │ │ │ │ │ │ ├── 74154.dig │ │ │ │ │ │ ├── 74157.dig │ │ │ │ │ │ ├── 74238.dig │ │ │ │ │ │ ├── 74253.dig │ │ │ │ │ │ ├── 74257.dig │ │ │ │ │ │ └── 7442.dig │ │ │ │ │ └── shift register │ │ │ │ │ │ ├── 74164.dig │ │ │ │ │ │ ├── 74165.dig │ │ │ │ │ │ ├── 74166.dig │ │ │ │ │ │ ├── 74194.dig │ │ │ │ │ │ ├── 74194real.dig │ │ │ │ │ │ ├── 74299.dig │ │ │ │ │ │ └── 74595.dig │ │ │ │ ├── EPROMs │ │ │ │ │ ├── 27c801.dig │ │ │ │ │ ├── 28c010.dig │ │ │ │ │ ├── 28c16.dig │ │ │ │ │ ├── 28c256.dig │ │ │ │ │ ├── 28c512.dig │ │ │ │ │ └── 28c64.dig │ │ │ │ └── RAMs │ │ │ │ │ └── A623308A.dig │ │ │ └── RAMs │ │ │ │ ├── RAM32Bit.dig │ │ │ │ ├── outDataGen-inc.dig │ │ │ │ ├── strDataGen-inc.dig │ │ │ │ └── strGen-inc.dig │ │ ├── misc │ │ │ ├── BillieJean.dig │ │ │ ├── DebugExample.dig │ │ │ ├── MIDIexample.dig │ │ │ ├── Telnet.dig │ │ │ └── TextFormatExample.dig │ │ ├── nmos │ │ │ ├── andNmos.dig │ │ │ ├── inverterNmos.dig │ │ │ ├── nandNmos.dig │ │ │ ├── norNmos.dig │ │ │ ├── orNmos.dig │ │ │ ├── xnor.dig │ │ │ └── xorNmos.dig │ │ ├── pld │ │ │ ├── GAL2v3.dig │ │ │ ├── PAL.dig │ │ │ ├── PAL2v3.dig │ │ │ ├── PLA.dig │ │ │ ├── WiredAnd.dig │ │ │ └── WiredOr.dig │ │ ├── processor │ │ │ ├── .gitignore │ │ │ ├── ALU │ │ │ │ ├── ALU.dig │ │ │ │ ├── ALU.svg │ │ │ │ ├── ASR.dig │ │ │ │ ├── LSL.dig │ │ │ │ ├── LSR.dig │ │ │ │ ├── SWAP.dig │ │ │ │ └── SWAPN.dig │ │ │ ├── HDLExample.dig │ │ │ ├── IO │ │ │ │ ├── GPI.dig │ │ │ │ ├── GPI_HDL.dig │ │ │ │ ├── GPO.dig │ │ │ │ ├── Graphics.dig │ │ │ │ ├── Keyboard.dig │ │ │ │ ├── LedMatrix.dig │ │ │ │ ├── Terminal.dig │ │ │ │ ├── TestIO.dig │ │ │ │ └── readSelect.dig │ │ │ ├── IntrExample.dig │ │ │ ├── Processor.dig │ │ │ ├── ProcessorHDL.dig │ │ │ ├── ProcessorHDLTest.dig │ │ │ ├── ProcessorIntr.dig │ │ │ ├── ProcessorTest.dig │ │ │ ├── ProcessorVonNeumann.dig │ │ │ ├── VGA │ │ │ │ ├── JKen.dig │ │ │ │ ├── Palette.dig │ │ │ │ ├── VGA.dig │ │ │ │ ├── core.dig │ │ │ │ ├── sync.dig │ │ │ │ ├── textMode.dig │ │ │ │ └── vga8x12_extra_chars.png │ │ │ ├── VGAExample.dig │ │ │ └── core │ │ │ │ ├── Branch.dig │ │ │ │ ├── ClockDiv.dig │ │ │ │ ├── Control.dig │ │ │ │ ├── Flags.dig │ │ │ │ ├── FlagsRW.dig │ │ │ │ ├── ImReg.dig │ │ │ │ ├── Interrupt.dig │ │ │ │ ├── Memory.dig │ │ │ │ ├── PC-HDL.dig │ │ │ │ ├── PC.dig │ │ │ │ ├── PCintr.dig │ │ │ │ ├── RSpSet.dig │ │ │ │ ├── Register.dig │ │ │ │ ├── RegisterOpt.dig │ │ │ │ ├── SignExt.dig │ │ │ │ └── WDmuxCtrl.dig │ │ ├── sequential │ │ │ ├── Counter-D.dig │ │ │ ├── Counter-JK.dig │ │ │ ├── Counter-T.dig │ │ │ ├── D-MS.dig │ │ │ ├── D-T.dig │ │ │ ├── D-T2.dig │ │ │ ├── D-TransmissionGate.dig │ │ │ ├── D.dig │ │ │ ├── D_NAND.dig │ │ │ ├── JK-MS.dig │ │ │ ├── JK-T.dig │ │ │ ├── Prescaler.dig │ │ │ ├── RS-C.dig │ │ │ ├── RS-MS-Simp.dig │ │ │ ├── RS-MS.dig │ │ │ ├── RS-T.dig │ │ │ ├── RS.dig │ │ │ ├── SPI.dig │ │ │ ├── T-MS.dig │ │ │ ├── T.dig │ │ │ ├── async │ │ │ │ ├── muller-c.dig │ │ │ │ ├── muller-pipeline.dig │ │ │ │ └── oscillator.dig │ │ │ ├── conway │ │ │ │ ├── Conway.dig │ │ │ │ ├── cell.dig │ │ │ │ ├── cellLUT.dig │ │ │ │ └── descrete.dig │ │ │ ├── multip_D_notWorking.dig │ │ │ ├── multip_D_working.dig │ │ │ ├── multip_D_working_T.dig │ │ │ └── multip_D_working_detail.dig │ │ └── test │ │ │ ├── CounterWithTest.dig │ │ │ ├── TafficLight1.dig │ │ │ ├── TafficLight2.dig │ │ │ └── TafficLight3.dig │ ├── fsm │ │ ├── SevenSegCounter.fsm │ │ ├── counter10.fsm │ │ ├── rotDecoderMealy.fsm │ │ ├── rotDecoderMoore.fsm │ │ ├── stepperHalfStep.fsm │ │ ├── stepperSimple.fsm │ │ ├── trafficLightBlink.fsm │ │ ├── trafficLightMedwedew.fsm │ │ └── trafficLightMoore.fsm │ ├── java │ │ ├── CLI.java │ │ ├── de │ │ │ └── neemann │ │ │ │ ├── digital │ │ │ │ ├── FileLocator.java │ │ │ │ ├── StringList.java │ │ │ │ ├── XStreamValid.java │ │ │ │ ├── analyse │ │ │ │ │ ├── AnalyseException.java │ │ │ │ │ ├── BoolTableExpanded.java │ │ │ │ │ ├── CSVImporter.java │ │ │ │ │ ├── CycleDetector.java │ │ │ │ │ ├── DependencyAnalyser.java │ │ │ │ │ ├── DetermineJKStateMachine.java │ │ │ │ │ ├── LabelNumbering.java │ │ │ │ │ ├── MinimizerInterface.java │ │ │ │ │ ├── MinimizerQuineMcCluskey.java │ │ │ │ │ ├── MinimizerQuineMcCluskeyExam.java │ │ │ │ │ ├── ModelAnalyser.java │ │ │ │ │ ├── ModelAnalyserInfo.java │ │ │ │ │ ├── PathLenAnalyser.java │ │ │ │ │ ├── SplitPinString.java │ │ │ │ │ ├── SubstituteLibrary.java │ │ │ │ │ ├── TruthTable.java │ │ │ │ │ ├── TruthTableConverter.java │ │ │ │ │ ├── TruthTableTableModel.java │ │ │ │ │ ├── expression │ │ │ │ │ │ ├── BitSetter.java │ │ │ │ │ │ ├── ComplexityInclNotVisitor.java │ │ │ │ │ │ ├── ComplexityVisitor.java │ │ │ │ │ │ ├── Constant.java │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ ├── ContextFiller.java │ │ │ │ │ │ ├── ContextMap.java │ │ │ │ │ │ ├── Equals.java │ │ │ │ │ │ ├── Expression.java │ │ │ │ │ │ ├── ExpressionException.java │ │ │ │ │ │ ├── ExpressionVisitor.java │ │ │ │ │ │ ├── NamedExpression.java │ │ │ │ │ │ ├── Not.java │ │ │ │ │ │ ├── Operation.java │ │ │ │ │ │ ├── Variable.java │ │ │ │ │ │ ├── VariableVisitor.java │ │ │ │ │ │ ├── format │ │ │ │ │ │ │ ├── FormatToExpression.java │ │ │ │ │ │ │ ├── FormatToTable.java │ │ │ │ │ │ │ ├── FormatToTableLatex.java │ │ │ │ │ │ │ ├── Formatter.java │ │ │ │ │ │ │ ├── FormatterException.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── modify │ │ │ │ │ │ │ ├── ExpressionModifier.java │ │ │ │ │ │ │ ├── NAnd.java │ │ │ │ │ │ │ ├── NInputs.java │ │ │ │ │ │ │ ├── NOr.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── format │ │ │ │ │ │ ├── TruthTableFormatter.java │ │ │ │ │ │ ├── TruthTableFormatterCSV.java │ │ │ │ │ │ ├── TruthTableFormatterHex.java │ │ │ │ │ │ ├── TruthTableFormatterLaTeX.java │ │ │ │ │ │ ├── TruthTableFormatterTestCase.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── parser │ │ │ │ │ │ ├── ParseException.java │ │ │ │ │ │ ├── Parser.java │ │ │ │ │ │ ├── Tokenizer.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── quinemc │ │ │ │ │ │ ├── BoolTable.java │ │ │ │ │ │ ├── BoolTableBoolArray.java │ │ │ │ │ │ ├── BoolTableByteArray.java │ │ │ │ │ │ ├── BoolTableExpression.java │ │ │ │ │ │ ├── IndependentChecker.java │ │ │ │ │ │ ├── QuineMcCluskey.java │ │ │ │ │ │ ├── QuineMcCluskeyExam.java │ │ │ │ │ │ ├── TableReducer.java │ │ │ │ │ │ ├── TableRow.java │ │ │ │ │ │ ├── TableRows.java │ │ │ │ │ │ ├── ThreeStateValue.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── primeselector │ │ │ │ │ │ ├── BruteForce.java │ │ │ │ │ │ ├── BruteForceGetAll.java │ │ │ │ │ │ ├── LargestFirst.java │ │ │ │ │ │ ├── PrimeSelector.java │ │ │ │ │ │ ├── PrimeSelectorDefault.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── builder │ │ │ │ │ ├── ATF150x │ │ │ │ │ │ ├── ATF150xCuplExporter.java │ │ │ │ │ │ ├── ATFDevice.java │ │ │ │ │ │ ├── ATFDialog.java │ │ │ │ │ │ ├── CreateCHN.java │ │ │ │ │ │ ├── PL.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── BuilderCollector.java │ │ │ │ │ ├── BuilderException.java │ │ │ │ │ ├── BuilderInterface.java │ │ │ │ │ ├── CleanNameBuilder.java │ │ │ │ │ ├── ExpressionExporter.java │ │ │ │ │ ├── ExpressionToFileExporter.java │ │ │ │ │ ├── Gal16v8 │ │ │ │ │ │ ├── BuilderCollectorGAL.java │ │ │ │ │ │ ├── CuplExporter.java │ │ │ │ │ │ ├── Gal16v8JEDECExporter.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── Gal22v10 │ │ │ │ │ │ ├── Gal22v10CuplExporter.java │ │ │ │ │ │ ├── Gal22v10JEDECExporter.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── PinMap.java │ │ │ │ │ ├── PinMapException.java │ │ │ │ │ ├── circuit │ │ │ │ │ │ ├── Box.java │ │ │ │ │ │ ├── CircuitBuilder.java │ │ │ │ │ │ ├── Fragment.java │ │ │ │ │ │ ├── FragmentExpression.java │ │ │ │ │ │ ├── FragmentSameInValue.java │ │ │ │ │ │ ├── FragmentVariable.java │ │ │ │ │ │ ├── FragmentVisitor.java │ │ │ │ │ │ ├── FragmentVisualElement.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── jedec │ │ │ │ │ │ ├── FuseMap.java │ │ │ │ │ │ ├── FuseMapFiller.java │ │ │ │ │ │ ├── FuseMapFillerException.java │ │ │ │ │ │ ├── JedecWriter.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── tt2 │ │ │ │ │ │ ├── OSExecute.java │ │ │ │ │ │ ├── RotationByteArrayOutputStream.java │ │ │ │ │ │ ├── StartATF150xFitter.java │ │ │ │ │ │ ├── TT2Exporter.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── cli │ │ │ │ │ ├── CSVWriter.java │ │ │ │ │ ├── CircuitLoader.java │ │ │ │ │ ├── CommandLineTester.java │ │ │ │ │ ├── Main.java │ │ │ │ │ ├── Runner.java │ │ │ │ │ ├── SVGExport.java │ │ │ │ │ ├── StatsExport.java │ │ │ │ │ ├── cli │ │ │ │ │ │ ├── Argument.java │ │ │ │ │ │ ├── ArgumentBase.java │ │ │ │ │ │ ├── ArgumentKey.java │ │ │ │ │ │ ├── BasicCommand.java │ │ │ │ │ │ ├── CLICommand.java │ │ │ │ │ │ ├── CLIException.java │ │ │ │ │ │ ├── Muxer.java │ │ │ │ │ │ ├── NamedCommand.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── core │ │ │ │ │ ├── BacktrackException.java │ │ │ │ │ ├── Bits.java │ │ │ │ │ ├── BitsException.java │ │ │ │ │ ├── BurnException.java │ │ │ │ │ ├── ErrorDetector.java │ │ │ │ │ ├── ExceptionWithOrigin.java │ │ │ │ │ ├── ExceptionWithOriginInterface.java │ │ │ │ │ ├── GlobalValues.java │ │ │ │ │ ├── IntFormat.java │ │ │ │ │ ├── Model.java │ │ │ │ │ ├── ModelEvent.java │ │ │ │ │ ├── ModelEventType.java │ │ │ │ │ ├── ModelStateObserver.java │ │ │ │ │ ├── ModelStateObserverTyped.java │ │ │ │ │ ├── Node.java │ │ │ │ │ ├── NodeException.java │ │ │ │ │ ├── NodeInterface.java │ │ │ │ │ ├── NodeWithoutDelay.java │ │ │ │ │ ├── Observable.java │ │ │ │ │ ├── ObservableValue.java │ │ │ │ │ ├── ObservableValues.java │ │ │ │ │ ├── Observer.java │ │ │ │ │ ├── Signal.java │ │ │ │ │ ├── SpeedTest.java │ │ │ │ │ ├── SyncAccess.java │ │ │ │ │ ├── Value.java │ │ │ │ │ ├── ValueFormatter.java │ │ │ │ │ ├── arithmetic │ │ │ │ │ │ ├── Add.java │ │ │ │ │ │ ├── BarrelShifter.java │ │ │ │ │ │ ├── BarrelShifterMode.java │ │ │ │ │ │ ├── BitCount.java │ │ │ │ │ │ ├── BitExtender.java │ │ │ │ │ │ ├── Comparator.java │ │ │ │ │ │ ├── Div.java │ │ │ │ │ │ ├── LeftRightFormat.java │ │ │ │ │ │ ├── Mul.java │ │ │ │ │ │ ├── Neg.java │ │ │ │ │ │ ├── PRNG.java │ │ │ │ │ │ ├── Sub.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── basic │ │ │ │ │ │ ├── And.java │ │ │ │ │ │ ├── FanIn.java │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ ├── NAnd.java │ │ │ │ │ │ ├── NOr.java │ │ │ │ │ │ ├── Not.java │ │ │ │ │ │ ├── Or.java │ │ │ │ │ │ ├── XNOr.java │ │ │ │ │ │ ├── XOr.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── element │ │ │ │ │ │ ├── AttributeListener.java │ │ │ │ │ │ ├── Element.java │ │ │ │ │ │ ├── ElementAttributes.java │ │ │ │ │ │ ├── ElementFactory.java │ │ │ │ │ │ ├── ElementTypeDescription.java │ │ │ │ │ │ ├── ImmutableList.java │ │ │ │ │ │ ├── Key.java │ │ │ │ │ │ ├── Keys.java │ │ │ │ │ │ ├── PinDescription.java │ │ │ │ │ │ ├── PinDescriptions.java │ │ │ │ │ │ ├── PinInfo.java │ │ │ │ │ │ ├── Rotation.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── extern │ │ │ │ │ │ ├── Application.java │ │ │ │ │ │ ├── ApplicationGHDL.java │ │ │ │ │ │ ├── ApplicationGeneric.java │ │ │ │ │ │ ├── ApplicationIVerilog.java │ │ │ │ │ │ ├── ApplicationVHDLStdIO.java │ │ │ │ │ │ ├── ApplicationVerilogStdIO.java │ │ │ │ │ │ ├── External.java │ │ │ │ │ │ ├── ExternalFile.java │ │ │ │ │ │ ├── Options.java │ │ │ │ │ │ ├── Port.java │ │ │ │ │ │ ├── PortDefinition.java │ │ │ │ │ │ ├── ProcessStarter.java │ │ │ │ │ │ ├── VHDLTokenizer.java │ │ │ │ │ │ ├── VerilogTokenizer.java │ │ │ │ │ │ ├── handler │ │ │ │ │ │ │ ├── ProcessInterface.java │ │ │ │ │ │ │ ├── StdIOInterface.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── flipflops │ │ │ │ │ │ ├── FlipflopBit.java │ │ │ │ │ │ ├── FlipflopD.java │ │ │ │ │ │ ├── FlipflopDAsync.java │ │ │ │ │ │ ├── FlipflopJK.java │ │ │ │ │ │ ├── FlipflopJKAsync.java │ │ │ │ │ │ ├── FlipflopRS.java │ │ │ │ │ │ ├── FlipflopRSAsync.java │ │ │ │ │ │ ├── FlipflopT.java │ │ │ │ │ │ ├── Monoflop.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── io │ │ │ │ │ │ ├── Button.java │ │ │ │ │ │ ├── ButtonLED.java │ │ │ │ │ │ ├── CommonConnectionType.java │ │ │ │ │ │ ├── Const.java │ │ │ │ │ │ ├── DipSwitch.java │ │ │ │ │ │ ├── Ground.java │ │ │ │ │ │ ├── In.java │ │ │ │ │ │ ├── InValue.java │ │ │ │ │ │ ├── LightBulb.java │ │ │ │ │ │ ├── MIDI.java │ │ │ │ │ │ ├── MIDIHelper.java │ │ │ │ │ │ ├── NotConnected.java │ │ │ │ │ │ ├── Out.java │ │ │ │ │ │ ├── PinControl.java │ │ │ │ │ │ ├── PowerSupply.java │ │ │ │ │ │ ├── Probe.java │ │ │ │ │ │ ├── ProbeMode.java │ │ │ │ │ │ ├── RGBLED.java │ │ │ │ │ │ ├── RotEncoder.java │ │ │ │ │ │ ├── StepperMotorBipolar.java │ │ │ │ │ │ ├── StepperMotorUnipolar.java │ │ │ │ │ │ ├── VDD.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── telnet │ │ │ │ │ │ │ ├── ByteBuffer.java │ │ │ │ │ │ │ ├── Server.java │ │ │ │ │ │ │ ├── ServerHolder.java │ │ │ │ │ │ │ ├── Telnet.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── memory │ │ │ │ │ │ ├── BlockRAMDualPort.java │ │ │ │ │ │ ├── Counter.java │ │ │ │ │ │ ├── CounterPreset.java │ │ │ │ │ │ ├── DataField.java │ │ │ │ │ │ ├── DataFieldConverter.java │ │ │ │ │ │ ├── EEPROM.java │ │ │ │ │ │ ├── EEPROMDualPort.java │ │ │ │ │ │ ├── LookUpTable.java │ │ │ │ │ │ ├── ProgramCounter.java │ │ │ │ │ │ ├── ProgramMemory.java │ │ │ │ │ │ ├── RAMAsync.java │ │ │ │ │ │ ├── RAMDualAccess.java │ │ │ │ │ │ ├── RAMDualPort.java │ │ │ │ │ │ ├── RAMInterface.java │ │ │ │ │ │ ├── RAMSinglePort.java │ │ │ │ │ │ ├── RAMSinglePortSel.java │ │ │ │ │ │ ├── ROM.java │ │ │ │ │ │ ├── ROMDualPort.java │ │ │ │ │ │ ├── Register.java │ │ │ │ │ │ ├── RegisterFile.java │ │ │ │ │ │ ├── importer │ │ │ │ │ │ │ ├── BinReader.java │ │ │ │ │ │ │ ├── ByteArray.java │ │ │ │ │ │ │ ├── ByteArrayFromValueArray.java │ │ │ │ │ │ │ ├── ByteArrayReader.java │ │ │ │ │ │ │ ├── DataFieldValueArray.java │ │ │ │ │ │ │ ├── Importer.java │ │ │ │ │ │ │ ├── IntelHexReader.java │ │ │ │ │ │ │ ├── LogisimReader.java │ │ │ │ │ │ │ ├── MultiValueArray.java │ │ │ │ │ │ │ ├── ValueArray.java │ │ │ │ │ │ │ ├── ValueArrayReader.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── rom │ │ │ │ │ │ │ ├── ROMInterface.java │ │ │ │ │ │ │ ├── ROMManager.java │ │ │ │ │ │ │ ├── ROMManagerFile.java │ │ │ │ │ │ │ ├── ROMMangerBase.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── pld │ │ │ │ │ │ ├── Diode.java │ │ │ │ │ │ ├── DiodeBackward.java │ │ │ │ │ │ ├── DiodeForward.java │ │ │ │ │ │ ├── PullDown.java │ │ │ │ │ │ ├── PullUp.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── stats │ │ │ │ │ │ ├── Countable.java │ │ │ │ │ │ ├── Statistics.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── switching │ │ │ │ │ │ ├── FGNFET.java │ │ │ │ │ │ ├── FGPFET.java │ │ │ │ │ │ ├── Fuse.java │ │ │ │ │ │ ├── NFET.java │ │ │ │ │ │ ├── PFET.java │ │ │ │ │ │ ├── PlainSwitch.java │ │ │ │ │ │ ├── PlainSwitchDT.java │ │ │ │ │ │ ├── Relay.java │ │ │ │ │ │ ├── RelayDT.java │ │ │ │ │ │ ├── Switch.java │ │ │ │ │ │ ├── SwitchDT.java │ │ │ │ │ │ ├── TransGate.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── wiring │ │ │ │ │ │ ├── AsyncSeq.java │ │ │ │ │ │ ├── BitSelector.java │ │ │ │ │ │ ├── Break.java │ │ │ │ │ │ ├── BusSplitter.java │ │ │ │ │ │ ├── Clock.java │ │ │ │ │ │ ├── Decoder.java │ │ │ │ │ │ ├── Delay.java │ │ │ │ │ │ ├── Demultiplexer.java │ │ │ │ │ │ ├── Driver.java │ │ │ │ │ │ ├── DriverInvSel.java │ │ │ │ │ │ ├── Multiplexer.java │ │ │ │ │ │ ├── PriorityEncoder.java │ │ │ │ │ │ ├── Reset.java │ │ │ │ │ │ ├── Splitter.java │ │ │ │ │ │ ├── Stop.java │ │ │ │ │ │ ├── bus │ │ │ │ │ │ ├── AbstractBusHandler.java │ │ │ │ │ │ ├── BusModelStateObserver.java │ │ │ │ │ │ ├── CommonBusValue.java │ │ │ │ │ │ ├── ConnectedBusHandler.java │ │ │ │ │ │ ├── DataBus.java │ │ │ │ │ │ ├── SingleBusHandler.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── data │ │ │ │ │ ├── DataPlotter.java │ │ │ │ │ ├── Value.java │ │ │ │ │ ├── ValueTable.java │ │ │ │ │ ├── ValueTableModel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── draw │ │ │ │ │ ├── elements │ │ │ │ │ │ ├── Circuit.java │ │ │ │ │ │ ├── DotCreator.java │ │ │ │ │ │ ├── ElementOrder.java │ │ │ │ │ │ ├── IOState.java │ │ │ │ │ │ ├── Movable.java │ │ │ │ │ │ ├── Pin.java │ │ │ │ │ │ ├── PinException.java │ │ │ │ │ │ ├── Pins.java │ │ │ │ │ │ ├── Tunnel.java │ │ │ │ │ │ ├── VisualElement.java │ │ │ │ │ │ ├── Wire.java │ │ │ │ │ │ ├── WireConsistencyChecker.java │ │ │ │ │ │ ├── WireMerger.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── gif │ │ │ │ │ │ ├── GifExporter.java │ │ │ │ │ │ ├── GifSequenceWriter.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── graphics │ │ │ │ │ │ ├── ColorKey.java │ │ │ │ │ │ ├── ColorScheme.java │ │ │ │ │ │ ├── ColorStyleHighContrast.java │ │ │ │ │ │ ├── ColorStyleMonochrome.java │ │ │ │ │ │ ├── Export.java │ │ │ │ │ │ ├── ExportFactory.java │ │ │ │ │ │ ├── Graphic.java │ │ │ │ │ │ ├── GraphicMinMax.java │ │ │ │ │ │ ├── GraphicRestyle.java │ │ │ │ │ │ ├── GraphicSVG.java │ │ │ │ │ │ ├── GraphicSwing.java │ │ │ │ │ │ ├── GraphicTransform.java │ │ │ │ │ │ ├── GraphicsImage.java │ │ │ │ │ │ ├── Orientation.java │ │ │ │ │ │ ├── Polygon.java │ │ │ │ │ │ ├── PolygonConverter.java │ │ │ │ │ │ ├── PolygonParser.java │ │ │ │ │ │ ├── SVGSettings.java │ │ │ │ │ │ ├── SVGTokenizer.java │ │ │ │ │ │ ├── Style.java │ │ │ │ │ │ ├── TextFormatLaTeX.java │ │ │ │ │ │ ├── TextFormatSVG.java │ │ │ │ │ │ ├── Transform.java │ │ │ │ │ │ ├── TransformMatrix.java │ │ │ │ │ │ ├── TransformRotate.java │ │ │ │ │ │ ├── TransformTranslate.java │ │ │ │ │ │ ├── Vector.java │ │ │ │ │ │ ├── VectorFloat.java │ │ │ │ │ │ ├── VectorInterface.java │ │ │ │ │ │ ├── linemerger │ │ │ │ │ │ │ ├── GraphicLineCollector.java │ │ │ │ │ │ │ ├── GraphicSkipLines.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── text │ │ │ │ │ │ │ ├── ParseException.java │ │ │ │ │ │ │ ├── Parser.java │ │ │ │ │ │ │ ├── formatter │ │ │ │ │ │ │ ├── GraphicsFormatter.java │ │ │ │ │ │ │ ├── LaTeXFormatter.java │ │ │ │ │ │ │ ├── PlainTextFormatter.java │ │ │ │ │ │ │ ├── SVGFormatter.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ │ └── text │ │ │ │ │ │ │ ├── Blank.java │ │ │ │ │ │ │ ├── Character.java │ │ │ │ │ │ │ ├── Decorate.java │ │ │ │ │ │ │ ├── ExpressionToText.java │ │ │ │ │ │ │ ├── Index.java │ │ │ │ │ │ │ ├── Sentence.java │ │ │ │ │ │ │ ├── Simple.java │ │ │ │ │ │ │ ├── Text.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── library │ │ │ │ │ │ ├── ComponentManager.java │ │ │ │ │ │ ├── ComponentSource.java │ │ │ │ │ │ ├── CustomElement.java │ │ │ │ │ │ ├── ElementLibrary.java │ │ │ │ │ │ ├── ElementLibraryFolder.java │ │ │ │ │ │ ├── ElementNotFoundException.java │ │ │ │ │ │ ├── ElementNotFoundNotification.java │ │ │ │ │ │ ├── ElementTypeDescriptionCustom.java │ │ │ │ │ │ ├── GenericCode.java │ │ │ │ │ │ ├── GenericInitCode.java │ │ │ │ │ │ ├── InvalidNodeException.java │ │ │ │ │ │ ├── JarComponentManager.java │ │ │ │ │ │ ├── LibraryInterface.java │ │ │ │ │ │ ├── LibraryListener.java │ │ │ │ │ │ ├── LibraryNode.java │ │ │ │ │ │ ├── NumStringComparator.java │ │ │ │ │ │ ├── ResolveGenerics.java │ │ │ │ │ │ ├── Visitor.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── model │ │ │ │ │ │ ├── AsyncSequentialClock.java │ │ │ │ │ │ ├── InverterConfig.java │ │ │ │ │ │ ├── ModelCreator.java │ │ │ │ │ │ ├── ModelEntry.java │ │ │ │ │ │ ├── Net.java │ │ │ │ │ │ ├── NetList.java │ │ │ │ │ │ ├── RealTimeClock.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── shapes │ │ │ │ │ │ ├── AsyncClockShape.java │ │ │ │ │ │ ├── BitSelShape.java │ │ │ │ │ │ ├── BreakShape.java │ │ │ │ │ │ ├── BusSplitterShape.java │ │ │ │ │ │ ├── ButtonLEDShape.java │ │ │ │ │ │ ├── ButtonShape.java │ │ │ │ │ │ ├── ClockShape.java │ │ │ │ │ │ ├── ConstShape.java │ │ │ │ │ │ ├── CustomCircuitShapeType.java │ │ │ │ │ │ ├── DILShape.java │ │ │ │ │ │ ├── DataShape.java │ │ │ │ │ │ ├── DelayShape.java │ │ │ │ │ │ ├── DemuxerShape.java │ │ │ │ │ │ ├── DiodeBackwardShape.java │ │ │ │ │ │ ├── DiodeForewardShape.java │ │ │ │ │ │ ├── DiodeShape.java │ │ │ │ │ │ ├── DipSwitchShape.java │ │ │ │ │ │ ├── Drawable.java │ │ │ │ │ │ ├── DriverShape.java │ │ │ │ │ │ ├── FETShape.java │ │ │ │ │ │ ├── FETShapeN.java │ │ │ │ │ │ ├── FETShapeP.java │ │ │ │ │ │ ├── FGFETShapeN.java │ │ │ │ │ │ ├── FGFETShapeP.java │ │ │ │ │ │ ├── FuseShape.java │ │ │ │ │ │ ├── GenericCodeShape.java │ │ │ │ │ │ ├── GenericInitCodeShape.java │ │ │ │ │ │ ├── GenericShape.java │ │ │ │ │ │ ├── GroundShape.java │ │ │ │ │ │ ├── InputShape.java │ │ │ │ │ │ ├── Interactor.java │ │ │ │ │ │ ├── InteractorInterface.java │ │ │ │ │ │ ├── LEDShape.java │ │ │ │ │ │ ├── LayoutShape.java │ │ │ │ │ │ ├── LightBulbShape.java │ │ │ │ │ │ ├── MinimizedShape.java │ │ │ │ │ │ ├── MissingShape.java │ │ │ │ │ │ ├── MuxerShape.java │ │ │ │ │ │ ├── NotConnectedShape.java │ │ │ │ │ │ ├── ObservableValueReader.java │ │ │ │ │ │ ├── OutputShape.java │ │ │ │ │ │ ├── PinControlShape.java │ │ │ │ │ │ ├── PolarityAwareLEDShape.java │ │ │ │ │ │ ├── ProbeShape.java │ │ │ │ │ │ ├── PullDownShape.java │ │ │ │ │ │ ├── PullUpShape.java │ │ │ │ │ │ ├── RAMShape.java │ │ │ │ │ │ ├── RGBLEDShape.java │ │ │ │ │ │ ├── RectShape.java │ │ │ │ │ │ ├── RelayDTShape.java │ │ │ │ │ │ ├── RelayShape.java │ │ │ │ │ │ ├── ResetShape.java │ │ │ │ │ │ ├── RotEncoderShape.java │ │ │ │ │ │ ├── ScopeShape.java │ │ │ │ │ │ ├── SevenSegHexShape.java │ │ │ │ │ │ ├── SevenSegShape.java │ │ │ │ │ │ ├── SevenShape.java │ │ │ │ │ │ ├── Shape.java │ │ │ │ │ │ ├── ShapeFactory.java │ │ │ │ │ │ ├── ShapeSpecificMatch.java │ │ │ │ │ │ ├── SixteenShape.java │ │ │ │ │ │ ├── SplitterShape.java │ │ │ │ │ │ ├── StepperMotorShape.java │ │ │ │ │ │ ├── SwitchDTShape.java │ │ │ │ │ │ ├── SwitchShape.java │ │ │ │ │ │ ├── TestCaseShape.java │ │ │ │ │ │ ├── TextShape.java │ │ │ │ │ │ ├── TransGateShape.java │ │ │ │ │ │ ├── TunnelShape.java │ │ │ │ │ │ ├── VDDShape.java │ │ │ │ │ │ ├── custom │ │ │ │ │ │ ├── CustomShape.java │ │ │ │ │ │ ├── CustomShapeDescription.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── svg │ │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ │ ├── SvgException.java │ │ │ │ │ │ │ ├── SvgImporter.java │ │ │ │ │ │ │ ├── SvgTemplate.java │ │ │ │ │ │ │ ├── TransformParser.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── ieee │ │ │ │ │ │ ├── IEEEAndShape.java │ │ │ │ │ │ ├── IEEEGenericShape.java │ │ │ │ │ │ ├── IEEENotShape.java │ │ │ │ │ │ ├── IEEEOrShape.java │ │ │ │ │ │ ├── IEEEXOrShape.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── fsm │ │ │ │ │ ├── CircuitRepresentation.java │ │ │ │ │ ├── FSM.java │ │ │ │ │ ├── FSMDemos.java │ │ │ │ │ ├── FiniteStateMachineException.java │ │ │ │ │ ├── MouseMovable.java │ │ │ │ │ ├── Movable.java │ │ │ │ │ ├── Optimizer.java │ │ │ │ │ ├── Permute.java │ │ │ │ │ ├── State.java │ │ │ │ │ ├── Transition.java │ │ │ │ │ ├── TransitionTableCreator.java │ │ │ │ │ ├── ValueParser.java │ │ │ │ │ ├── WaitGroup.java │ │ │ │ │ ├── gui │ │ │ │ │ │ ├── FSMComponent.java │ │ │ │ │ │ ├── FSMFrame.java │ │ │ │ │ │ ├── OptimizerDialog.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── gui │ │ │ │ │ ├── DigitalRemoteInterface.java │ │ │ │ │ ├── DigitalUncaughtExceptionHandler.java │ │ │ │ │ ├── DocumentationLocator.java │ │ │ │ │ ├── ExportZipAction.java │ │ │ │ │ ├── FileHistory.java │ │ │ │ │ ├── InsertAction.java │ │ │ │ │ ├── InsertHistory.java │ │ │ │ │ ├── LibrarySelector.java │ │ │ │ │ ├── Main.java │ │ │ │ │ ├── ModelModifier.java │ │ │ │ │ ├── NumberingWizard.java │ │ │ │ │ ├── ProgramMemoryLoader.java │ │ │ │ │ ├── SaveAsHelper.java │ │ │ │ │ ├── SearchTextField.java │ │ │ │ │ ├── Settings.java │ │ │ │ │ ├── SettingsBase.java │ │ │ │ │ ├── StatsDialog.java │ │ │ │ │ ├── StatusInterface.java │ │ │ │ │ ├── TextSearchFilter.java │ │ │ │ │ ├── WindowManager.java │ │ │ │ │ ├── components │ │ │ │ │ │ ├── AttributeDialog.java │ │ │ │ │ │ ├── BehavioralFixtureCreator.java │ │ │ │ │ │ ├── CircuitComponent.java │ │ │ │ │ │ ├── CircuitModifier.java │ │ │ │ │ │ ├── CircuitModifierPostClosed.java │ │ │ │ │ │ ├── CircuitScrollPanel.java │ │ │ │ │ │ ├── CircuitTransferable.java │ │ │ │ │ │ ├── ColorSchemeEditor.java │ │ │ │ │ │ ├── ConstraintsBuilder.java │ │ │ │ │ │ ├── CopiedElementLabelRenamer.java │ │ │ │ │ │ ├── CustomShapeEditor.java │ │ │ │ │ │ ├── DataEditor.java │ │ │ │ │ │ ├── Editor.java │ │ │ │ │ │ ├── EditorFactory.java │ │ │ │ │ │ ├── EditorPanel.java │ │ │ │ │ │ ├── ElementHelpDialog.java │ │ │ │ │ │ ├── ElementOrderer.java │ │ │ │ │ │ ├── ItemPicker.java │ │ │ │ │ │ ├── LabelGenerator.java │ │ │ │ │ │ ├── OrderMerger.java │ │ │ │ │ │ ├── ProbeDialog.java │ │ │ │ │ │ ├── ROMEditorDialog.java │ │ │ │ │ │ ├── SingleValueDialog.java │ │ │ │ │ │ ├── TextLineNumber.java │ │ │ │ │ │ ├── TransformHolder.java │ │ │ │ │ │ ├── WindowPosManager.java │ │ │ │ │ │ ├── data │ │ │ │ │ │ │ ├── DummyElement.java │ │ │ │ │ │ │ ├── GraphComponent.java │ │ │ │ │ │ │ ├── GraphDialog.java │ │ │ │ │ │ │ ├── ScopeTrigger.java │ │ │ │ │ │ │ ├── ValueTableObserver.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── expression │ │ │ │ │ │ │ ├── ExpressionDialog.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── graphics │ │ │ │ │ │ │ ├── GraphicCard.java │ │ │ │ │ │ │ ├── GraphicComponent.java │ │ │ │ │ │ │ ├── GraphicDialog.java │ │ │ │ │ │ │ ├── LedMatrix.java │ │ │ │ │ │ │ ├── LedMatrixComponent.java │ │ │ │ │ │ │ ├── LedMatrixDialog.java │ │ │ │ │ │ │ ├── MoveFocusTo.java │ │ │ │ │ │ │ ├── VGA.java │ │ │ │ │ │ │ ├── VGADialog.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── karnaugh │ │ │ │ │ │ │ ├── KarnaughException.java │ │ │ │ │ │ │ ├── KarnaughMap.java │ │ │ │ │ │ │ ├── KarnaughMapComponent.java │ │ │ │ │ │ │ ├── KarnaughMapDialog.java │ │ │ │ │ │ │ ├── MapLayout.java │ │ │ │ │ │ │ ├── VarRectList.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── modification │ │ │ │ │ │ │ ├── ModificationOfVisualElement.java │ │ │ │ │ │ │ ├── ModificationOfWire.java │ │ │ │ │ │ │ ├── ModifyAttribute.java │ │ │ │ │ │ │ ├── ModifyAttributes.java │ │ │ │ │ │ │ ├── ModifyCircuitAttributes.java │ │ │ │ │ │ │ ├── ModifyDeleteElement.java │ │ │ │ │ │ │ ├── ModifyDeleteRect.java │ │ │ │ │ │ │ ├── ModifyDeleteWire.java │ │ │ │ │ │ │ ├── ModifyInsertElement.java │ │ │ │ │ │ │ ├── ModifyInsertWire.java │ │ │ │ │ │ │ ├── ModifyInsertWires.java │ │ │ │ │ │ │ ├── ModifyMeasurementOrdering.java │ │ │ │ │ │ │ ├── ModifyMoveAndRotElement.java │ │ │ │ │ │ │ ├── ModifyMoveSelected.java │ │ │ │ │ │ │ ├── ModifyMoveWire.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ ├── table │ │ │ │ │ │ │ ├── AllSolutionsDialog.java │ │ │ │ │ │ │ ├── BuilderExpressionCreator.java │ │ │ │ │ │ │ ├── CheckResultListener.java │ │ │ │ │ │ │ ├── ExpressionComponent.java │ │ │ │ │ │ │ ├── ExpressionCreator.java │ │ │ │ │ │ │ ├── ExpressionListener.java │ │ │ │ │ │ │ ├── ExpressionListenerCSVCondensed.java │ │ │ │ │ │ │ ├── ExpressionListenerJK.java │ │ │ │ │ │ │ ├── ExpressionListenerOptimizeJK.java │ │ │ │ │ │ │ ├── ExpressionListenerStore.java │ │ │ │ │ │ │ ├── LaTeXExpressionListener.java │ │ │ │ │ │ │ ├── PlainTextExpressionListener.java │ │ │ │ │ │ │ ├── ProgressDialog.java │ │ │ │ │ │ │ ├── ReorderInputs.java │ │ │ │ │ │ │ ├── ReorderOutputs.java │ │ │ │ │ │ │ ├── ShowStringDialog.java │ │ │ │ │ │ │ ├── TableDialog.java │ │ │ │ │ │ │ ├── TableReorderManager.java │ │ │ │ │ │ │ ├── hardware │ │ │ │ │ │ │ │ ├── GenerateCUPL.java │ │ │ │ │ │ │ │ ├── GenerateFile.java │ │ │ │ │ │ │ │ ├── HardwareDescriptionGenerator.java │ │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── terminal │ │ │ │ │ │ │ ├── CharDeleter.java │ │ │ │ │ │ │ ├── ConsoleTerminal.java │ │ │ │ │ │ │ ├── Keyboard.java │ │ │ │ │ │ │ ├── KeyboardDialog.java │ │ │ │ │ │ │ ├── Terminal.java │ │ │ │ │ │ │ ├── TerminalDialog.java │ │ │ │ │ │ │ ├── TerminalInterface.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── testing │ │ │ │ │ │ │ ├── TestAllDialog.java │ │ │ │ │ │ │ ├── TestCaseDescriptionDialog.java │ │ │ │ │ │ │ ├── TestCaseDescriptionEditor.java │ │ │ │ │ │ │ ├── ValueTableDialog.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── tree │ │ │ │ │ │ │ ├── LibraryTreeModel.java │ │ │ │ │ │ │ ├── SelectTree.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── release │ │ │ │ │ │ ├── CheckForNewRelease.java │ │ │ │ │ │ ├── ReleaseInfo.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── remote │ │ │ │ │ │ ├── DigitalHandler.java │ │ │ │ │ │ ├── HandlerInterface.java │ │ │ │ │ │ ├── RemoteException.java │ │ │ │ │ │ ├── RemoteSever.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── state │ │ │ │ │ │ ├── State.java │ │ │ │ │ │ ├── StateInterface.java │ │ │ │ │ │ ├── StateManager.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── tutorial │ │ │ │ │ │ ├── InitialTutorial.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── hdl │ │ │ │ │ ├── hgs │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ ├── Expression.java │ │ │ │ │ │ ├── HGSArray.java │ │ │ │ │ │ ├── HGSEvalException.java │ │ │ │ │ │ ├── HGSMap.java │ │ │ │ │ │ ├── Parser.java │ │ │ │ │ │ ├── ParserException.java │ │ │ │ │ │ ├── Statement.java │ │ │ │ │ │ ├── Statements.java │ │ │ │ │ │ ├── Tokenizer.java │ │ │ │ │ │ ├── Value.java │ │ │ │ │ │ ├── function │ │ │ │ │ │ │ ├── FirstClassFunction.java │ │ │ │ │ │ │ ├── FirstClassFunctionCall.java │ │ │ │ │ │ │ ├── Func.java │ │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ │ ├── InnerFunction.java │ │ │ │ │ │ │ ├── JavaClass.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── refs │ │ │ │ │ │ │ ├── Reference.java │ │ │ │ │ │ │ ├── ReferenceToArray.java │ │ │ │ │ │ │ ├── ReferenceToFunc.java │ │ │ │ │ │ │ ├── ReferenceToStruct.java │ │ │ │ │ │ │ ├── ReferenceToVar.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── model2 │ │ │ │ │ │ ├── HDLCircuit.java │ │ │ │ │ │ ├── HDLException.java │ │ │ │ │ │ ├── HDLModel.java │ │ │ │ │ │ ├── HDLNet.java │ │ │ │ │ │ ├── HDLNode.java │ │ │ │ │ │ ├── HDLNodeAssignment.java │ │ │ │ │ │ ├── HDLNodeBuildIn.java │ │ │ │ │ │ ├── HDLNodeCustom.java │ │ │ │ │ │ ├── HDLNodeSplitterManyToOne.java │ │ │ │ │ │ ├── HDLNodeSplitterOneToMany.java │ │ │ │ │ │ ├── HDLPort.java │ │ │ │ │ │ ├── HasName.java │ │ │ │ │ │ ├── Printable.java │ │ │ │ │ │ ├── clock │ │ │ │ │ │ │ ├── ClockInfo.java │ │ │ │ │ │ │ ├── ClockIntegratorGeneric.java │ │ │ │ │ │ │ ├── HDLClockIntegrator.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── expression │ │ │ │ │ │ │ ├── ExprConstant.java │ │ │ │ │ │ │ ├── ExprNot.java │ │ │ │ │ │ │ ├── ExprOperate.java │ │ │ │ │ │ │ ├── ExprUsingNet.java │ │ │ │ │ │ │ ├── ExprVar.java │ │ │ │ │ │ │ ├── ExprVarRange.java │ │ │ │ │ │ │ ├── Expression.java │ │ │ │ │ │ │ ├── ExpressionOptimizer.java │ │ │ │ │ │ │ ├── Visitor.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ ├── optimizations │ │ │ │ │ │ │ ├── InlineManyToOne.java │ │ │ │ │ │ │ ├── MergeAssignments.java │ │ │ │ │ │ │ ├── MergeConstants.java │ │ │ │ │ │ │ ├── NameConstantSignals.java │ │ │ │ │ │ │ ├── NodeSorterExpressionBased.java │ │ │ │ │ │ │ ├── Optimization.java │ │ │ │ │ │ │ ├── OptimizeExpressions.java │ │ │ │ │ │ │ ├── RemoveConstantSignals.java │ │ │ │ │ │ │ ├── ReplaceOneToMany.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── printer │ │ │ │ │ │ ├── CodePrinter.java │ │ │ │ │ │ ├── CodePrinterStr.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── verilog2 │ │ │ │ │ │ ├── VerilogCreator.java │ │ │ │ │ │ ├── VerilogGenerator.java │ │ │ │ │ │ ├── VerilogLibrary.java │ │ │ │ │ │ ├── VerilogRenaming.java │ │ │ │ │ │ ├── VerilogTestBenchCreator.java │ │ │ │ │ │ ├── lib │ │ │ │ │ │ │ ├── VerilogElement.java │ │ │ │ │ │ │ ├── VerilogTemplate.java │ │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── vhdl2 │ │ │ │ │ │ ├── Separator.java │ │ │ │ │ │ ├── VHDLCreator.java │ │ │ │ │ │ ├── VHDLGenerator.java │ │ │ │ │ │ ├── VHDLLibrary.java │ │ │ │ │ │ ├── VHDLRenaming.java │ │ │ │ │ │ ├── VHDLTestBenchCreator.java │ │ │ │ │ │ ├── entities │ │ │ │ │ │ ├── VHDLEntity.java │ │ │ │ │ │ ├── VHDLTemplate.java │ │ │ │ │ │ ├── VHDLTemplateFunctions.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── lang │ │ │ │ │ ├── Lang.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── testing │ │ │ │ │ ├── FolderTestRunner.java │ │ │ │ │ ├── LineListenerResolveDontCare.java │ │ │ │ │ ├── MatchedValue.java │ │ │ │ │ ├── TestCaseDescription.java │ │ │ │ │ ├── TestCaseElement.java │ │ │ │ │ ├── TestExecutor.java │ │ │ │ │ ├── TestResult.java │ │ │ │ │ ├── TestResultListener.java │ │ │ │ │ ├── TestingDataException.java │ │ │ │ │ ├── Transitions.java │ │ │ │ │ ├── UnitTester.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── parser │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ ├── Expression.java │ │ │ │ │ │ ├── LineEmitter.java │ │ │ │ │ │ ├── LineEmitterList.java │ │ │ │ │ │ ├── LineEmitterRepeat.java │ │ │ │ │ │ ├── LineEmitterSimple.java │ │ │ │ │ │ ├── LineEmitterWhile.java │ │ │ │ │ │ ├── LineListener.java │ │ │ │ │ │ ├── ModelInitializer.java │ │ │ │ │ │ ├── OperatorPrecedence.java │ │ │ │ │ │ ├── Parser.java │ │ │ │ │ │ ├── ParserException.java │ │ │ │ │ │ ├── TestRow.java │ │ │ │ │ │ ├── Tokenizer.java │ │ │ │ │ │ ├── ValueAppender.java │ │ │ │ │ │ ├── ValueAppenderBits.java │ │ │ │ │ │ ├── VirtualSignal.java │ │ │ │ │ │ ├── functions │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ ├── IfThenElse.java │ │ │ │ │ │ ├── Random.java │ │ │ │ │ │ ├── SignExtend.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── toolchain │ │ │ │ │ ├── Command.java │ │ │ │ │ ├── ConfigCache.java │ │ │ │ │ ├── Configuration.java │ │ │ │ │ ├── FileToCreate.java │ │ │ │ │ └── package-info.java │ │ │ │ └── undo │ │ │ │ │ ├── ChangedListener.java │ │ │ │ │ ├── Copyable.java │ │ │ │ │ ├── Modification.java │ │ │ │ │ ├── Modifications.java │ │ │ │ │ ├── ModifyException.java │ │ │ │ │ ├── UndoManager.java │ │ │ │ │ └── package-info.java │ │ │ │ └── gui │ │ │ │ ├── ClosingWindowListener.java │ │ │ │ ├── ConfirmDialogBuilder.java │ │ │ │ ├── ErrorMessage.java │ │ │ │ ├── IconCreator.java │ │ │ │ ├── InfoDialog.java │ │ │ │ ├── LineBreaker.java │ │ │ │ ├── Mouse.java │ │ │ │ ├── MyFileChooser.java │ │ │ │ ├── Screen.java │ │ │ │ ├── ToolTipAction.java │ │ │ │ ├── ToolTipProvider.java │ │ │ │ ├── WindowSizeStorage.java │ │ │ │ ├── language │ │ │ │ ├── Bundle.java │ │ │ │ ├── Language.java │ │ │ │ ├── Resources.java │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ └── package-info.java │ ├── resources │ │ ├── analyser │ │ │ ├── Counter.dig │ │ │ ├── CounterPreset.dig │ │ │ ├── JK_FF.dig │ │ │ ├── Register.dig │ │ │ ├── T_FF.dig │ │ │ └── T_FF_EN.dig │ │ ├── icons │ │ │ ├── View-zoom-fit.png │ │ │ ├── View-zoom-fit_hi.png │ │ │ ├── View-zoom-in.png │ │ │ ├── View-zoom-in_hi.png │ │ │ ├── View-zoom-out.png │ │ │ ├── View-zoom-out_hi.png │ │ │ ├── delete.png │ │ │ ├── delete_hi.png │ │ │ ├── dialog-error.png │ │ │ ├── dialog-error_hi.png │ │ │ ├── document-new-sub.png │ │ │ ├── document-new-sub_hi.png │ │ │ ├── document-new.png │ │ │ ├── document-new_hi.png │ │ │ ├── document-open-new.png │ │ │ ├── document-open-new_hi.png │ │ │ ├── document-open.png │ │ │ ├── document-open_hi.png │ │ │ ├── document-save-as.png │ │ │ ├── document-save-as_hi.png │ │ │ ├── document-save.png │ │ │ ├── document-save_hi.png │ │ │ ├── edit-copy.png │ │ │ ├── edit-copy_hi.png │ │ │ ├── edit-redo.png │ │ │ ├── edit-redo_hi.png │ │ │ ├── edit-undo.png │ │ │ ├── edit-undo_hi.png │ │ │ ├── help.png │ │ │ ├── help_hi.png │ │ │ ├── icon128.png │ │ │ ├── icon16.png │ │ │ ├── icon32.png │ │ │ ├── icon48.ico │ │ │ ├── icon48.png │ │ │ ├── icon64.png │ │ │ ├── measurement-graph.png │ │ │ ├── measurement-graph_hi.png │ │ │ ├── media-playback-start-2.png │ │ │ ├── media-playback-start-2_hi.png │ │ │ ├── media-playback-start-T.png │ │ │ ├── media-playback-start-T_hi.png │ │ │ ├── media-playback-start.png │ │ │ ├── media-playback-start_hi.png │ │ │ ├── media-playback-stop.png │ │ │ ├── media-playback-stop_hi.png │ │ │ ├── media-seek-forward-f.png │ │ │ ├── media-seek-forward-f_hi.png │ │ │ ├── media-seek-forward.png │ │ │ ├── media-seek-forward_hi.png │ │ │ ├── media-skip-forward.png │ │ │ ├── media-skip-forward_hi.png │ │ │ ├── splash.png │ │ │ ├── testFailed.png │ │ │ ├── testFailed_hi.png │ │ │ ├── testPassed.png │ │ │ └── testPassed_hi.png │ │ ├── lang │ │ │ ├── howTo.md │ │ │ ├── lang.xml │ │ │ ├── lang_de.xml │ │ │ ├── lang_en.xml │ │ │ ├── lang_es.xml │ │ │ ├── lang_es_ref.xml │ │ │ ├── lang_fr.xml │ │ │ ├── lang_fr_ref.xml │ │ │ ├── lang_it.xml │ │ │ ├── lang_it_ref.xml │ │ │ ├── lang_pt.xml │ │ │ ├── lang_pt_ref.xml │ │ │ ├── lang_zh.xml │ │ │ └── lang_zh_ref.xml │ │ ├── verilog │ │ │ ├── DIG_Add.v │ │ │ ├── DIG_BitExtender.v │ │ │ ├── DIG_BitSelector.v │ │ │ ├── DIG_BlockRAMDualPort.v │ │ │ ├── DIG_Comparator.v │ │ │ ├── DIG_Counter.v │ │ │ ├── DIG_CounterPreset.v │ │ │ ├── DIG_DCM_SP.v │ │ │ ├── DIG_D_FF.v │ │ │ ├── DIG_D_FF_AS.v │ │ │ ├── DIG_Decoder.v │ │ │ ├── DIG_Demultiplexer.v │ │ │ ├── DIG_Driver.v │ │ │ ├── DIG_DriverInvSel.v │ │ │ ├── DIG_External.v │ │ │ ├── DIG_ExternalFile.v │ │ │ ├── DIG_JK_FF.v │ │ │ ├── DIG_JK_FF_AS.v │ │ │ ├── DIG_LookUpTable.v │ │ │ ├── DIG_Mul.v │ │ │ ├── DIG_Multiplexer.v │ │ │ ├── DIG_Neg.v │ │ │ ├── DIG_PinControl.v │ │ │ ├── DIG_PriorityEncoder.v │ │ │ ├── DIG_RAMAsync.v │ │ │ ├── DIG_RAMDualAccess.v │ │ │ ├── DIG_RAMDualPort.v │ │ │ ├── DIG_ROM.v │ │ │ ├── DIG_Register.v │ │ │ ├── DIG_RegisterFile.v │ │ │ ├── DIG_Reset.v │ │ │ ├── DIG_Sub.v │ │ │ ├── DIG_simpleClockDivider.v │ │ │ └── VerilogStdIOTemplate.vtpl │ │ └── vhdl │ │ │ ├── DIG_Add.tem │ │ │ ├── DIG_BitExtender.tem │ │ │ ├── DIG_BitSelector.tem │ │ │ ├── DIG_BlockRAMDualPort.tem │ │ │ ├── DIG_Comparator.tem │ │ │ ├── DIG_Counter.tem │ │ │ ├── DIG_CounterPreset.tem │ │ │ ├── DIG_DCM_SP.tem │ │ │ ├── DIG_D_FF.tem │ │ │ ├── DIG_D_FF_AS.tem │ │ │ ├── DIG_Decoder.tem │ │ │ ├── DIG_Demultiplexer.tem │ │ │ ├── DIG_Driver.tem │ │ │ ├── DIG_DriverInvSel.tem │ │ │ ├── DIG_External.tem │ │ │ ├── DIG_ExternalFile.tem │ │ │ ├── DIG_JK_FF.tem │ │ │ ├── DIG_JK_FF_AS.tem │ │ │ ├── DIG_LookUpTable.tem │ │ │ ├── DIG_MMCME2_BASE.tem │ │ │ ├── DIG_Mul.tem │ │ │ ├── DIG_Multiplexer.tem │ │ │ ├── DIG_Neg.tem │ │ │ ├── DIG_PinControl.tem │ │ │ ├── DIG_PriorityEncoder.tem │ │ │ ├── DIG_RAMAsync.tem │ │ │ ├── DIG_RAMDualAccess.tem │ │ │ ├── DIG_RAMDualPort.tem │ │ │ ├── DIG_ROM.tem │ │ │ ├── DIG_Register.tem │ │ │ ├── DIG_RegisterFile.tem │ │ │ ├── DIG_Reset.tem │ │ │ ├── DIG_Sub.tem │ │ │ ├── DIG_simpleClockDivider.tem │ │ │ └── VHDLStdIOTemplate.tem │ └── svg │ │ ├── View-zoom-fit.svg │ │ ├── View-zoom-in.svg │ │ ├── View-zoom-out.svg │ │ ├── delete.svg │ │ ├── dialog-error.svg │ │ ├── document-new-sub.svg │ │ ├── document-new.svg │ │ ├── document-open-new.svg │ │ ├── document-open.svg │ │ ├── document-save-as.svg │ │ ├── document-save.svg │ │ ├── edit-copy.svg │ │ ├── edit-redo.svg │ │ ├── edit-undo.svg │ │ ├── exp.sh │ │ ├── expicon.sh │ │ ├── exptest.sh │ │ ├── help.svg │ │ ├── icon.svg │ │ ├── iconSmall.svg │ │ ├── measurement-graph.svg │ │ ├── media-playback-start-2.svg │ │ ├── media-playback-start-T.svg │ │ ├── media-playback-start.svg │ │ ├── media-playback-stop.svg │ │ ├── media-seek-forward-f.svg │ │ ├── media-seek-forward.svg │ │ ├── media-skip-forward.svg │ │ ├── splash.dig │ │ ├── splash.svg │ │ ├── testFailed.svg │ │ └── testPassed.svg └── test │ ├── java │ └── de │ │ └── neemann │ │ ├── digital │ │ ├── FlipFlopsTest.java │ │ ├── TestExecuter.java │ │ ├── analyse │ │ │ ├── BoolTableExpandedTest.java │ │ │ ├── CSVImporterTest.java │ │ │ ├── CycleDetectorTest.java │ │ │ ├── DependencyAnalyserTest.java │ │ │ ├── DetermineJKStateMachineTest.java │ │ │ ├── LabelNumberingTest.java │ │ │ ├── ModelAnalyserTest.java │ │ │ ├── SplitPinStringTest.java │ │ │ ├── SubstituteLibraryTest.java │ │ │ ├── TruthTableTest.java │ │ │ ├── expression │ │ │ │ ├── BitSetterTest.java │ │ │ │ ├── CopyTest.java │ │ │ │ ├── EqualsTest.java │ │ │ │ ├── ExpressionTest.java │ │ │ │ ├── NotTest.java │ │ │ │ ├── OperationTest.java │ │ │ │ ├── ToStringTest.java │ │ │ │ ├── VariableTest.java │ │ │ │ └── format │ │ │ │ │ └── FormatToExpressionTest.java │ │ │ ├── format │ │ │ │ ├── TruthTableFormatterCSVTest.java │ │ │ │ ├── TruthTableFormatterHexTest.java │ │ │ │ ├── TruthTableFormatterLaTeXTest.java │ │ │ │ └── TruthTableFormatterTestCaseTest.java │ │ │ ├── parser │ │ │ │ └── ParserTest.java │ │ │ └── quinemc │ │ │ │ ├── FullVariantDontCareCreator.java │ │ │ │ ├── IndependentCheckerTest.java │ │ │ │ ├── MinimizerRegressionTest.java │ │ │ │ ├── QuineMcCluskeyExactCoverTest.java │ │ │ │ ├── QuineMcCluskeyExamTest.java │ │ │ │ ├── QuineMcCluskeyRegressionTest.java │ │ │ │ ├── QuineMcCluskeyRowTest.java │ │ │ │ ├── QuineMcCluskeyTest.java │ │ │ │ ├── SimplifyTest.java │ │ │ │ ├── TableReducerTest.java │ │ │ │ └── primeselector │ │ │ │ └── BruteForceGetAllTest.java │ │ ├── builder │ │ │ ├── ATF150x │ │ │ │ └── ATF1502CuplExporterTest.java │ │ │ ├── CleanNameBuilderTest.java │ │ │ ├── Gal16v8 │ │ │ │ ├── Gal16V8CuplExporterTest.java │ │ │ │ └── Gal16V8JEDECExporterTest.java │ │ │ ├── Gal22v10 │ │ │ │ ├── Gal22V10CuplExporterTest.java │ │ │ │ └── Gal22v10JEDECExporterTest.java │ │ │ ├── PinMapTest.java │ │ │ ├── circuit │ │ │ │ ├── CircuitBuilderTest.java │ │ │ │ ├── FragmentExpressionTest.java │ │ │ │ └── FragmentVisualElementTest.java │ │ │ ├── jedec │ │ │ │ ├── FuseMapFillerTest.java │ │ │ │ ├── FuseMapTest.java │ │ │ │ └── JedecWriterTest.java │ │ │ └── tt2 │ │ │ │ ├── RotationByteArrayOutputStreamTest.java │ │ │ │ └── TT2ExporterTest.java │ │ ├── cli │ │ │ ├── ArgumentTest.java │ │ │ ├── BasicCommandTest.java │ │ │ ├── CommandLineTesterTest.java │ │ │ ├── MuxerTest.java │ │ │ └── StatsExportTest.java │ │ ├── core │ │ │ ├── BitsTest.java │ │ │ ├── IntFormatTest.java │ │ │ ├── ObservableValueTest.java │ │ │ ├── ValueTest.java │ │ │ ├── arithmetic │ │ │ │ ├── AddTest.java │ │ │ │ ├── BarrelShifterTest.java │ │ │ │ ├── BitCountTest.java │ │ │ │ ├── BitExtenderTest.java │ │ │ │ ├── ComparatorTest.java │ │ │ │ ├── DivTest.java │ │ │ │ ├── MulTest.java │ │ │ │ ├── NegTest.java │ │ │ │ └── SubTest.java │ │ │ ├── basic │ │ │ │ ├── AndTest.java │ │ │ │ ├── DelayTest.java │ │ │ │ ├── NAndTest.java │ │ │ │ ├── NOrTest.java │ │ │ │ ├── NotTest.java │ │ │ │ ├── OrTest.java │ │ │ │ ├── XNOrTest.java │ │ │ │ └── XOrTest.java │ │ │ ├── element │ │ │ │ └── ElementAttributesTest.java │ │ │ ├── extern │ │ │ │ ├── ApplicationVHDLStdIOTest.java │ │ │ │ ├── ApplicationVerilogStdIOTest.java │ │ │ │ ├── OptionsTest.java │ │ │ │ ├── VHDLTokenizerTest.java │ │ │ │ └── handler │ │ │ │ │ └── ProcessStarterTest.java │ │ │ ├── flipflops │ │ │ │ ├── FlipflopDAsyncTest.java │ │ │ │ ├── FlipflopDTest.java │ │ │ │ ├── FlipflopJKAsyncTest.java │ │ │ │ ├── FlipflopJKTest.java │ │ │ │ ├── FlipflopRSAsyncTest.java │ │ │ │ ├── FlipflopRSTest.java │ │ │ │ └── FlipflopTTest.java │ │ │ ├── io │ │ │ │ ├── ProbeTest.java │ │ │ │ └── StepperMotorUnipolarTest.java │ │ │ ├── memory │ │ │ │ ├── CounterTest.java │ │ │ │ ├── DataFieldConverterTest.java │ │ │ │ ├── DataFieldTest.java │ │ │ │ ├── LUTTest.java │ │ │ │ ├── RAMDualPortTest.java │ │ │ │ ├── RAMSinglePortTest.java │ │ │ │ ├── ROMTest.java │ │ │ │ ├── RegisterFileTest.java │ │ │ │ ├── RegisterTest.java │ │ │ │ └── importer │ │ │ │ │ ├── ByteArrayFromValueArrayTest.java │ │ │ │ │ ├── IntegrationTest.java │ │ │ │ │ ├── IntelHexReaderTest.java │ │ │ │ │ ├── LogisimReaderTest.java │ │ │ │ │ └── MultiValueArrayTest.java │ │ │ ├── pld │ │ │ │ └── DiodeTest.java │ │ │ └── wiring │ │ │ │ ├── BitSelectorTest.java │ │ │ │ ├── BusSplitterTest.java │ │ │ │ ├── DataBusTest.java │ │ │ │ ├── DecoderTest.java │ │ │ │ ├── DemultiplexerTest.java │ │ │ │ ├── DriverTest.java │ │ │ │ ├── MultiplexerTest.java │ │ │ │ ├── PortsTest.java │ │ │ │ ├── PriorityEncoderTest.java │ │ │ │ ├── Splitter1Test.java │ │ │ │ ├── Splitter2Test.java │ │ │ │ ├── Splitter64BitTest.java │ │ │ │ ├── SplitterHighZTest.java │ │ │ │ ├── SplitterMixTest.java │ │ │ │ └── bus │ │ │ │ └── ConnectedBusHandlerTest.java │ │ ├── data │ │ │ └── ValueTableTest.java │ │ ├── docu │ │ │ ├── DocuTest.java │ │ │ └── ScreenShots.java │ │ ├── draw │ │ │ ├── elements │ │ │ │ ├── CircuitTest.java │ │ │ │ ├── StatsTest.java │ │ │ │ ├── WireConsistencyCheckerTest.java │ │ │ │ ├── WireContainsTest.java │ │ │ │ ├── WireMergerTest.java │ │ │ │ └── WireTest.java │ │ │ ├── graphics │ │ │ │ ├── ColorSchemeTest.java │ │ │ │ ├── GraphicSVGIndexTest.java │ │ │ │ ├── GraphicSVGLaTeXTest.java │ │ │ │ ├── GraphicSVGTest.java │ │ │ │ ├── PolygonTest.java │ │ │ │ ├── SVGExportTest.java │ │ │ │ ├── SVGTokenizerTest.java │ │ │ │ ├── TransformMatrixTest.java │ │ │ │ ├── linemerger │ │ │ │ │ └── GraphicLineCollectorTest.java │ │ │ │ └── text │ │ │ │ │ ├── ParserTest.java │ │ │ │ │ └── formatter │ │ │ │ │ ├── GraphicsFormatterTest.java │ │ │ │ │ ├── LaTeXFormatterTest.java │ │ │ │ │ └── PlainTextFormatterTest.java │ │ │ ├── library │ │ │ │ ├── JarComponentManagerTest.java │ │ │ │ ├── NumStringComparatorTest.java │ │ │ │ └── ResolveGenericsTest.java │ │ │ ├── model │ │ │ │ └── NetListTest.java │ │ │ └── shapes │ │ │ │ ├── SevenSegShapeTest.java │ │ │ │ └── custom │ │ │ │ ├── CustomShapeDescriptionTest.java │ │ │ │ ├── SvgImporterTest.java │ │ │ │ └── svg │ │ │ │ ├── ContextTest.java │ │ │ │ └── TransformParserTest.java │ │ ├── fsm │ │ │ ├── IntegrationTest.java │ │ │ ├── OptimizerTest.java │ │ │ ├── PermuteTest.java │ │ │ ├── StateTest.java │ │ │ ├── TransitionTableCreatorTest.java │ │ │ ├── TransitionTest.java │ │ │ └── ValueParserTest.java │ │ ├── gui │ │ │ ├── ProgramMemoryLoaderTest.java │ │ │ ├── SaveAsHelperTest.java │ │ │ └── components │ │ │ │ ├── CircuitModifierTest.java │ │ │ │ ├── CopiedElementLabelRenamerTest.java │ │ │ │ ├── EditorFactoryTest.java │ │ │ │ ├── LabelGeneratorTest.java │ │ │ │ ├── OrderMergerTest.java │ │ │ │ ├── data │ │ │ │ └── ValueTableObserverTest.java │ │ │ │ ├── graphics │ │ │ │ └── VGATest.java │ │ │ │ ├── karnaugh │ │ │ │ └── KarnaughMapTest.java │ │ │ │ ├── table │ │ │ │ ├── BuilderExpressionCreatorTest.java │ │ │ │ ├── ExpressionListenerCSVCondensedTest.java │ │ │ │ ├── ExpressionListenerJKTest.java │ │ │ │ ├── ExpressionListenerOptimizeJKTest.java │ │ │ │ ├── LaTeXExpressionListenerTest.java │ │ │ │ ├── TestReorderInputs.java │ │ │ │ └── TestReorderOutputs.java │ │ │ │ └── terminal │ │ │ │ └── CharDeleterTest.java │ │ ├── hdl │ │ │ ├── TestHDLExportFlag.java │ │ │ ├── hgs │ │ │ │ ├── ParserTest.java │ │ │ │ └── ValueTest.java │ │ │ ├── model2 │ │ │ │ └── HDLModelTest.java │ │ │ ├── printer │ │ │ │ └── CodePrinterStrTest.java │ │ │ ├── verilog2 │ │ │ │ ├── DescriptionTest.java │ │ │ │ ├── VerilogGeneratorTest.java │ │ │ │ ├── VerilogRenamingTest.java │ │ │ │ └── VerilogSimulatorTest.java │ │ │ └── vhdl2 │ │ │ │ ├── ClockTest.java │ │ │ │ ├── DescriptionTest.java │ │ │ │ ├── SeparatorTest.java │ │ │ │ ├── VHDLGeneratorTest.java │ │ │ │ ├── VHDLRenamingTest.java │ │ │ │ └── VHDLSimulatorTest.java │ │ ├── integration │ │ │ ├── FileScanner.java │ │ │ ├── GuiTester.java │ │ │ ├── Resources.java │ │ │ ├── TestAnd.java │ │ │ ├── TestCaseDescription.java │ │ │ ├── TestErrorOrigin.java │ │ │ ├── TestExampleNamesUnique.java │ │ │ ├── TestExamples.java │ │ │ ├── TestExport.java │ │ │ ├── TestInGUI.java │ │ │ ├── TestLib.java │ │ │ ├── TestLicenseNotice.java │ │ │ ├── TestNesting.java │ │ │ ├── TestProcessor.java │ │ │ ├── TestRunToBreak.java │ │ │ ├── TestSelect.java │ │ │ ├── TestShapes.java │ │ │ ├── TestTrans.java │ │ │ ├── ToBreakRunner.java │ │ │ └── UnitTestTest.java │ │ ├── lang │ │ │ ├── EnTypoFixer.java │ │ │ ├── KeyOrderer.java │ │ │ ├── LanguageUpdater.java │ │ │ ├── TestDuplicates.java │ │ │ ├── TestElemConsistence.java │ │ │ ├── TestExamplesLanguage.java │ │ │ ├── TestKeyConsistence.java │ │ │ ├── TestLang.java │ │ │ ├── TestMultiligual.java │ │ │ ├── TestSyntax.java │ │ │ └── TypoFixer.java │ │ ├── testing │ │ │ ├── FolderTestRunnerTest.java │ │ │ ├── TestDataTest.java │ │ │ ├── TestExecutorTest.java │ │ │ ├── TestResultTest.java │ │ │ ├── TransitionsTest.java │ │ │ ├── ValueTest.java │ │ │ └── parser │ │ │ │ ├── LineCollector.java │ │ │ │ ├── ModelInitializerTest.java │ │ │ │ ├── ParserExpressionTest.java │ │ │ │ ├── ParserLetTest.java │ │ │ │ ├── ParserLoopTest.java │ │ │ │ ├── ParserTest.java │ │ │ │ └── functions │ │ │ │ └── RandomTest.java │ │ ├── toolchain │ │ │ ├── BASYS3Test.java │ │ │ ├── ConfigurationTest.java │ │ │ ├── ReferenceTest.java │ │ │ └── RegressionTest.java │ │ └── undo │ │ │ └── UndoManagerTest.java │ │ └── gui │ │ ├── LineBreakerTest.java │ │ └── language │ │ └── ResourcesTest.java │ └── resources │ ├── dig │ ├── CounterSplitter.dig │ ├── Diode1Error.dig │ ├── Diode2Error.dig │ ├── DiodeTest.dig │ ├── GAL │ │ ├── Medwedew.dig │ │ ├── Names.dig │ │ └── PassThrough.dig │ ├── MS-JK-DIL.dig │ ├── MS-JK.dig │ ├── analyze │ │ ├── analyzeBacktrack.dig │ │ ├── analyzeTest.dig │ │ ├── analyzeTestCounter.dig │ │ ├── analyzeTestCounterInvIn.dig │ │ ├── analyzeTestCounterPreset.dig │ │ ├── analyzeTestDFF.dig │ │ ├── analyzeTestDFFInvIn.dig │ │ ├── analyzeTestJKFF.dig │ │ ├── analyzeTestJKFFInvIn.dig │ │ ├── analyzeTestJKFFNested.dig │ │ ├── analyzeTestRegister.dig │ │ ├── analyzeTestTFF.dig │ │ ├── analyzeTestTFFEnable.dig │ │ ├── analyzeTestTFFEnableInvIn.dig │ │ ├── jkff.dig │ │ ├── multiBitCounter.dig │ │ ├── multiBitInOut.dig │ │ ├── multiBitInOutDef.dig │ │ ├── multiBitInOutXOr.dig │ │ ├── testCaseCreation.dig │ │ ├── uniqueNames.dig │ │ ├── uniqueNames2.dig │ │ ├── uniqueNames3.dig │ │ └── uniqueNames4.dig │ ├── and.dig │ ├── autoWire.dig │ ├── backtrack │ │ ├── AllComponents.dig │ │ ├── InputInvert.dig │ │ ├── Plexer.dig │ │ ├── Splitter.dig │ │ ├── counter.dig │ │ ├── counter2Bit3.dig │ │ ├── decoder.dig │ │ └── dif.dig │ ├── circuitBuilder │ │ ├── busTest.dig │ │ └── busTest2.dig │ ├── data.dig │ ├── errorOrigin │ │ ├── inner.dig │ │ ├── inner2.dig │ │ ├── innerBit.dig │ │ ├── main.dig │ │ ├── main2.dig │ │ ├── main3.dig │ │ ├── main4.dig │ │ ├── main5.dig │ │ ├── mid.dig │ │ ├── mid2.dig │ │ ├── midBit.dig │ │ └── midOk.dig │ ├── export │ │ ├── labels.dig │ │ └── labels2.dig │ ├── external │ │ ├── exportError.dig │ │ ├── ghdl │ │ │ ├── ghdl.dig │ │ │ ├── ghdl2.dig │ │ │ ├── ghdl3-inc.dig │ │ │ ├── ghdl3.dig │ │ │ ├── ghdlFile.dig │ │ │ └── hdl │ │ │ │ └── ghdlFile.vhdl │ │ ├── sevenSeg.dig │ │ └── verilog │ │ │ ├── verilog.dig │ │ │ ├── verilog2.dig │ │ │ ├── verilog3-inc.dig │ │ │ ├── verilog3.dig │ │ │ ├── verilogFile.dig │ │ │ └── verilogFile.v │ ├── failingTest.dig │ ├── graph │ │ ├── simple.dig │ │ └── simple2.dig │ ├── hdl │ │ ├── ArtixClock.dig │ │ ├── ArtixClockCascading.dig │ │ ├── Clock.dig │ │ ├── Clock2.dig │ │ ├── Clock3.dig │ │ ├── adder4b.dig │ │ ├── busInOut.dig │ │ ├── const.dig │ │ ├── const2.dig │ │ ├── const3.dig │ │ ├── decoder.dig │ │ ├── decoder2.dig │ │ ├── demux.dig │ │ ├── demux2.dig │ │ ├── demux3.dig │ │ ├── demux4.dig │ │ ├── demux5.dig │ │ ├── demux6.dig │ │ ├── dff.dig │ │ ├── ident.dig │ │ ├── model2 │ │ │ ├── avoidVarRangeMerge.dig │ │ │ ├── circular.dig │ │ │ ├── clock.dig │ │ │ ├── clock_mimasv1.dig │ │ │ ├── comb.dig │ │ │ ├── comb2.dig │ │ │ ├── combBits.dig │ │ │ ├── constMerge.dig │ │ │ ├── freqHalf.dig │ │ │ ├── inputInvert.dig │ │ │ ├── inputInvert2.dig │ │ │ ├── inputInvert3.dig │ │ │ ├── inputInvert4.dig │ │ │ ├── inputInvert5.dig │ │ │ ├── naming.dig │ │ │ ├── naming2.dig │ │ │ ├── s-inc.dig │ │ │ ├── splitter.dig │ │ │ ├── splitter2.dig │ │ │ ├── splitter3.dig │ │ │ └── splitter4.dig │ │ ├── mux.dig │ │ ├── mux2.dig │ │ ├── mux3.dig │ │ ├── neg.dig │ │ ├── negSimple.dig │ │ ├── readOutput.dig │ │ ├── splitter.dig │ │ ├── splitter2.dig │ │ ├── splitter3.dig │ │ ├── xor.dig │ │ ├── xorNeg.dig │ │ └── xorNegBus.dig │ ├── hdl_distributable │ │ └── BASYS3_IOs.dig │ ├── hdl_names │ │ ├── a b.dig │ │ └── main.dig │ ├── hdl_skip │ │ ├── skipInner.dig │ │ └── skipOuter.dig │ ├── io │ │ ├── keyboard.dig │ │ └── keyboard2.dig │ ├── jarLib │ │ ├── jarLibTest.dig │ │ └── pluginExample-1.0-SNAPSHOT.jar │ ├── manualError │ │ ├── 01_fastRuntime.dig │ │ ├── 02_fastRuntimeEmbed.dig │ │ ├── 03_fastRuntimeButton.dig │ │ ├── 04_testExecution.dig │ │ ├── 05_runToBreak.dig │ │ ├── 06_initPhase.dig │ │ ├── 07_creationPhase.dig │ │ ├── 08_twoFastClocks.dig │ │ ├── 09_analysis.dig │ │ ├── 10_74xx.dig │ │ ├── 11_editTest.dig │ │ ├── 12_groupEdit.dig │ │ ├── 13_singleValueDialog.dig │ │ ├── 14_inputInvert.dig │ │ ├── 15_romDataEditor.dig │ │ ├── 16_hardware.dig │ │ ├── short.dig │ │ └── tight.dig │ ├── nestedAnd.dig │ ├── nestedMSFF.dig │ ├── nestedNestedAnd.dig │ ├── net │ │ └── netRename.dig │ ├── probe │ │ ├── pr1.dig │ │ ├── probe.dig │ │ └── probeNest.dig │ ├── remoteInterface │ │ └── measure.dig │ ├── runToBreak.dig │ ├── selectInnerLongName.dig │ ├── selectOuter.dig │ ├── setStateToTestResult.dig │ ├── shapes.dig │ ├── test │ │ ├── 74xx │ │ │ └── 74181-74182.dig │ │ ├── AntiparallelDiodes.dig_ │ │ ├── RAM │ │ │ └── ram.dig │ │ ├── TestCaseInitialState.dig │ │ ├── TestCaseInitialState2.dig │ │ ├── TwoTestCases.dig │ │ ├── arith │ │ │ ├── FullSub.dig │ │ │ ├── FullSubRC.dig │ │ │ ├── HalfAdder.dig │ │ │ ├── HalfSub.dig │ │ │ └── subTest.dig │ │ ├── async │ │ │ ├── d_async.dig │ │ │ └── jk_async.dig │ │ ├── burnError.dig │ │ ├── counter │ │ │ ├── cascadeCounter.dig │ │ │ └── overflow.dig │ │ ├── delay.dig │ │ ├── directConnection │ │ │ ├── inner.dig │ │ │ ├── outer.dig │ │ │ └── splitter.dig │ │ ├── docu │ │ │ ├── fullAdder.dig │ │ │ ├── halfAdder.dig │ │ │ └── rcAdder.dig │ │ ├── eeprom.dig │ │ ├── fet │ │ │ ├── burn_Error.dig │ │ │ ├── cmos10TFullAdder.dig │ │ │ ├── cmosGDIFullAdder.dig │ │ │ ├── cmosMirrorFullAdder.dig │ │ │ ├── cmosSERFFullAdder.dig │ │ │ ├── d-ff.dig │ │ │ ├── d-sram-ff.dig │ │ │ ├── multiBit.dig │ │ │ ├── nand.dig │ │ │ ├── nchan.dig │ │ │ ├── pchan.dig │ │ │ ├── switchTest.dig │ │ │ └── xor.dig │ │ ├── generics │ │ │ ├── count.dig │ │ │ ├── countSplitter.dig │ │ │ ├── inverterConfig.dig │ │ │ ├── main.dig │ │ │ ├── mainNest.dig │ │ │ ├── mainSplitter.dig │ │ │ └── nest.dig │ │ ├── highz.dig │ │ ├── inAsOutTest.dig │ │ ├── inputInvert │ │ │ ├── invClock.dig │ │ │ ├── simpleTest1.dig │ │ │ └── simpleTest2.dig │ │ ├── monoflop.dig │ │ ├── net │ │ │ ├── chaining.dig │ │ │ ├── inner.dig │ │ │ ├── innerError.dig │ │ │ ├── main.dig │ │ │ └── mainError.dig │ │ ├── newRomManger │ │ │ ├── inner.dig │ │ │ ├── main.dig │ │ │ ├── rom_A.hex │ │ │ └── rom_B.hex │ │ ├── oldRomManager │ │ │ ├── inner.dig │ │ │ └── main.dig │ │ ├── pinControl │ │ │ ├── simple.dig │ │ │ └── uniTest.dig │ │ ├── pld │ │ │ ├── DiodeBackward.dig │ │ │ ├── DiodeForeward.dig │ │ │ ├── GAL2v2.dig │ │ │ ├── PullDown.dig │ │ │ ├── PullDown2.dig │ │ │ ├── PullUp.dig │ │ │ ├── PullUp2.dig │ │ │ └── PullUpAndDownError.dig │ │ ├── power │ │ │ ├── power.dig │ │ │ ├── power1Error.dig │ │ │ └── power2Error.dig │ │ ├── prng.dig │ │ ├── programTestData.dig │ │ ├── programTestSignal.dig │ │ ├── rndReset.dig │ │ ├── romContent │ │ │ ├── rom-1-inc.dig │ │ │ ├── rom-2-inc.dig │ │ │ └── rom.dig │ │ ├── shapes │ │ │ ├── 4BitAdder.dig │ │ │ └── Adder.dig │ │ ├── splitter │ │ │ ├── BusSplitterHighZ.dig │ │ │ ├── BusSplitterHighZ2.dig │ │ │ ├── BusSplitterHighZ3.dig │ │ │ ├── splitter1.dig │ │ │ ├── splitter1Error.dig │ │ │ ├── splitter2.dig │ │ │ ├── splitter2Error.dig │ │ │ ├── splitter3.dig │ │ │ ├── splitter3Error.dig │ │ │ └── splitter4.dig │ │ ├── switch │ │ │ ├── DmitryVyal1.dig │ │ │ ├── DmitryVyal2.dig │ │ │ ├── DmitryVyal3.dig │ │ │ ├── DmitryVyal_bug480.dig │ │ │ ├── FGNFETs.dig │ │ │ ├── FGPFETs.dig │ │ │ ├── GAL2v3.dig │ │ │ ├── Heintz_A.dig │ │ │ ├── Heintz_A_DT.dig │ │ │ ├── Heintz_B.dig │ │ │ ├── burn2Error.dig │ │ │ ├── burnError.dig │ │ │ ├── const.dig │ │ │ ├── const2.dig │ │ │ ├── const3.dig │ │ │ ├── highZ-DT.dig │ │ │ ├── highZ-DT2.dig │ │ │ ├── highZ-DT3.dig │ │ │ ├── highZ-DT4.dig │ │ │ ├── highZ.dig │ │ │ ├── inverter.dig │ │ │ ├── no_net.dig │ │ │ ├── no_net2.dig │ │ │ ├── no_net_Error.dig │ │ │ ├── relayFullAdder.dig │ │ │ ├── relayFullAdder2.dig │ │ │ ├── selbsthaltung.dig │ │ │ ├── switch1.dig │ │ │ ├── switch2.dig │ │ │ ├── switchAsInput.dig │ │ │ ├── switch_highZ.dig │ │ │ ├── switch_pull.dig │ │ │ ├── switch_simple.dig │ │ │ ├── switch_xor.dig │ │ │ ├── switch_xor2.dig │ │ │ ├── switch_xor3.dig │ │ │ └── transGate.dig │ │ ├── transp │ │ │ ├── cross.dig │ │ │ ├── crossE.dig │ │ │ ├── crossTest.dig │ │ │ ├── crossTestError.dig │ │ │ ├── double.dig │ │ │ ├── doubleTest.dig │ │ │ ├── pull.dig │ │ │ ├── pulltest.dig │ │ │ ├── pulltest2.dig │ │ │ ├── trans.dig │ │ │ ├── trans2.dig │ │ │ ├── trans3.dig │ │ │ ├── transtest.dig │ │ │ ├── transtest2.dig │ │ │ ├── transtest3.dig │ │ │ └── transtestLabel.dig │ │ ├── vhdl │ │ │ ├── BitSelect.dig │ │ │ ├── BitSelect2.dig │ │ │ ├── D-Default.dig │ │ │ ├── D-DefaultBus.dig │ │ │ ├── FullAdderCLA.dig │ │ │ ├── JK-Default.dig │ │ │ ├── adder.dig │ │ │ ├── barrelShifter │ │ │ │ ├── TestLeft32.dig │ │ │ │ ├── TestLeft8.dig │ │ │ │ ├── TestRight8.dig │ │ │ │ ├── TestRightArith16.dig │ │ │ │ ├── barrelShifter.dig │ │ │ │ ├── shift-fixed-arith-right-inc.dig │ │ │ │ ├── shift-fixed-left-inc.dig │ │ │ │ ├── shift-fixed-right-inc.dig │ │ │ │ └── shift-inc.dig │ │ │ ├── bitExtend.dig │ │ │ ├── bitExtend2.dig │ │ │ ├── comp.dig │ │ │ ├── compSig.dig │ │ │ ├── counter.dig │ │ │ ├── counterPre.dig │ │ │ ├── counterPre2.dig │ │ │ ├── counterPre3.dig │ │ │ ├── d_async.dig │ │ │ ├── debounce.dig │ │ │ ├── driver1.dig │ │ │ ├── driver1inv.dig │ │ │ ├── driver2.dig │ │ │ ├── driver2inv.dig │ │ │ ├── dualPortRam.dig │ │ │ ├── generics │ │ │ │ ├── Ram32BitTest.dig │ │ │ │ ├── mainMem.dig │ │ │ │ ├── mainMem2.dig │ │ │ │ ├── memLeaf.dig │ │ │ │ ├── memLeaf2.dig │ │ │ │ ├── memNode.dig │ │ │ │ ├── memNode2.dig │ │ │ │ └── modify │ │ │ │ │ ├── genAllBitsSet.dig │ │ │ │ │ ├── genAllBitsSetTest.dig │ │ │ │ │ ├── genAnd.dig │ │ │ │ │ ├── genAndTest.dig │ │ │ │ │ ├── genReg.dig │ │ │ │ │ └── genRegTest.dig │ │ │ ├── jk_async.dig │ │ │ ├── lightChase.dig │ │ │ ├── lut.dig │ │ │ ├── lut2.dig │ │ │ ├── lut3.dig │ │ │ ├── multiPort.dig │ │ │ ├── multiply.dig │ │ │ ├── multiplySigned.dig │ │ │ ├── naming-inc.dig │ │ │ ├── naming-main.dig │ │ │ ├── neg.dig │ │ │ ├── not.dig │ │ │ ├── priorityEncoder.dig │ │ │ ├── ram │ │ │ │ ├── RAMAsync.dig │ │ │ │ ├── blockRAM.dig │ │ │ │ └── blockRAM8.dig │ │ │ ├── registerFile.dig │ │ │ ├── reset.dig │ │ │ ├── rom.dig │ │ │ ├── rom2.dig │ │ │ ├── rom3.dig │ │ │ ├── romPreload │ │ │ │ ├── lut.dig │ │ │ │ ├── lut1.hex │ │ │ │ ├── lut2.hex │ │ │ │ └── lutTest.dig │ │ │ ├── simpleANDNAND.dig │ │ │ ├── subtr.dig │ │ │ └── xorMulitInput.dig │ │ ├── virtualTestSignal.dig │ │ └── weak │ │ │ ├── w1.dig │ │ │ └── weak.dig │ ├── testProgLoader.dig │ ├── testProgLoader.hex │ ├── testProgLoaderSplit.dig │ ├── testProgLoaderSplitErr1.dig │ └── trafficLight.dig │ ├── docu │ ├── elem2fo.xslt │ ├── fop.xconf │ ├── images │ │ ├── de │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ ├── en │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ ├── es │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ ├── fr │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ ├── it │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ ├── pt │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ │ └── zh │ │ │ ├── scr00.png │ │ │ ├── scr01.png │ │ │ ├── scr02.png │ │ │ ├── scr03.png │ │ │ ├── scr04.png │ │ │ ├── scr05.png │ │ │ ├── scr06.png │ │ │ ├── scr07.png │ │ │ ├── scr08.png │ │ │ ├── scr09.png │ │ │ ├── scr10.png │ │ │ ├── scr11.png │ │ │ ├── scr12.png │ │ │ ├── scr13.png │ │ │ ├── scr14.png │ │ │ ├── scr20.png │ │ │ ├── scr21.png │ │ │ ├── scr22.png │ │ │ ├── scr23.png │ │ │ ├── scr24.png │ │ │ └── scr25.png │ ├── simsun.ttf │ ├── static_de.xml │ ├── static_en.xml │ ├── static_es.xml │ ├── static_es_ref.xml │ ├── static_fr.xml │ ├── static_fr_ref.xml │ ├── static_it.xml │ ├── static_it_ref.xml │ ├── static_pt.xml │ ├── static_pt_ref.xml │ ├── static_zh.xml │ └── static_zh_ref.xml │ ├── endianness │ └── test.hex │ ├── programs │ ├── fibonacci.asm │ ├── fibonacci.hex │ ├── selftest.asm │ └── selftest.hex │ ├── testGAL │ ├── GAL22v10_Pin13.dig │ ├── GALTest.dig │ └── cupl │ │ ├── GAL22v10_Pin13.PLD │ │ ├── GAL22v10_Pin13.jed │ │ ├── GALTest.PLD │ │ └── GALTest.jed │ └── toolchain │ ├── ff.dig │ ├── inc.xml │ ├── inc2.xml │ └── main.xml └── sun_checks_neemann.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | *.java text eol=lf 2 | *.xml text eol=lf 3 | *.dig text eol=lf 4 | *.fsm text eol=lf 5 | *.tem text eol=lf 6 | *.v text eol=lf 7 | -------------------------------------------------------------------------------- /bitbucket-pipelines.yml: -------------------------------------------------------------------------------- 1 | # This is a sample build configuration for Maven. 2 | # Only use spaces to indent your .yml configuration. 3 | # ----- 4 | # You can specify a custom docker image from Docker Hub as your build environment. 5 | image: maven:3.3.3 6 | 7 | pipelines: 8 | default: 9 | - step: 10 | script: # Modify the commands below to build your repository. 11 | - mvn --version 12 | - mvn clean install 13 | - curl -X POST "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"target/Digital.zip" -------------------------------------------------------------------------------- /distribution/Digital.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/distribution/Digital.exe -------------------------------------------------------------------------------- /distribution/Digital_noD3D.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/distribution/Digital_noD3D.exe -------------------------------------------------------------------------------- /distribution/Version.txt: -------------------------------------------------------------------------------- 1 | Digital 2 | 3 | POM-Version: ${project.version} 4 | Build Git Version: ${git.commit.id.describe} 5 | Build Time: ${build.timestamp} 6 | -------------------------------------------------------------------------------- /distribution/Windows_Read.me: -------------------------------------------------------------------------------- 1 | 2 | Layout problems on Windows Systems 3 | ================================== 4 | 5 | On some Windows 10 installations there seem to be problems with the graphical 6 | display. This problem seems to occur when using a high DPI monitor and large 7 | fonts. 8 | If you experience problems on your system, you should try to start the simulator 9 | with Direct3D turned off. To do this you can run the application "Digital_noD3D.exe". 10 | 11 | See also https://github.com/hneemann/Digital/issues/227 -------------------------------------------------------------------------------- /distribution/_ReadMeFirst.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Important Note

4 |

This folder contains the files needed to create a distributable release.

5 |

It is NOT possible to run Digital by starting the EXE or SH files in this folder!

6 |

If you want to use Digital, please download a 7 | released build. 8 |

9 |

If you don't want to use the latest release, you have to build the binary yourself. 10 | The easiest way to do this is to use maven: 11 | Install maven and run mvn install in the folder of the pom file. 12 | The target folder will then contain the binaries.

13 | 14 | -------------------------------------------------------------------------------- /distribution/linux/Digital.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | DIR="$( cd "$( dirname "$( realpath "${BASH_SOURCE[0]}" )" )" >/dev/null && pwd )" 3 | export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false' 4 | java -jar "$DIR/Digital.jar" "$1" 5 | -------------------------------------------------------------------------------- /distribution/linux/desktop.template: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Digital 4 | Comment=Easy-to-use digital logic designer and circuit simulator 5 | Exec= 6 | Icon= 7 | Categories=Education;Electronics; 8 | MimeType=text/x-digital; 9 | Terminal=false 10 | Keywords=simulator;digital;circuits; 11 | 12 | -------------------------------------------------------------------------------- /distribution/linux/digital-simulator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Digital file 5 | Digital Circuit 6 | Digital Schaltung 7 | Circuito Digital 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /distribution/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/distribution/screenshot.png -------------------------------------------------------------------------------- /distribution/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/distribution/screenshot2.png -------------------------------------------------------------------------------- /distribution/screenshot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/distribution/screenshot3.png -------------------------------------------------------------------------------- /src/main/asm/HDLExample.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 8032 3 | 920 4 | 4200 5 | 3010 6 | 2e00 7 | 2100 8 | 350e 9 | 2110 10 | 380c 11 | 110 12 | 1511 13 | 3826 14 | 110 15 | 1518 16 | 3835 17 | 110 18 | 1512 19 | 3804 20 | 110 21 | 1514 22 | 380e 23 | 3b02 24 | 801b 25 | 920 26 | 8010 27 | 980 28 | a91 29 | 3f59 30 | 2490 31 | 1081 32 | 3803 33 | 8010 34 | 980 35 | a91 36 | 3ddf 37 | 8029 38 | 920 39 | 8010 40 | 980 41 | 8000 42 | 991 43 | 3f59 44 | 2590 45 | 1081 46 | 3804 47 | 8010 48 | 980 49 | 8000 50 | 991 51 | 3dd0 52 | 8036 53 | 920 54 | a91 55 | aa0 56 | 3f59 57 | 21a0 58 | 3806 59 | 2490 60 | 8000 61 | 2091 62 | 38c5 63 | aa1 64 | 3dc3 65 | 2590 66 | 2191 67 | 38c0 68 | aa0 69 | 3dbe 70 | 8049 71 | 920 72 | a84 73 | 9111 74 | 990 75 | 3f59 76 | 2490 77 | 1081 78 | 3803 79 | a84 80 | 9111 81 | 990 82 | 3db1 83 | -------------------------------------------------------------------------------- /src/main/asm/ProcessorIntr.asm: -------------------------------------------------------------------------------- 1 | 2 | .const KEY 0xe 3 | .const TERM 0xf 4 | .const GPO 0x5 5 | 6 | jmp main 7 | 8 | ; interrupt service routine 9 | 10 | .org 2 11 | enteri 12 | 13 | in R0,KEY 14 | out TERM,R0 15 | 16 | leavei 17 | reti 18 | 19 | ; main programm 20 | 21 | main: ldi R0,1 22 | L1: out GPO, R0 23 | lsl R0 24 | brne L1 25 | 26 | ldi R0,0x8000 27 | L2: out GPO, R0 28 | lsr R0 29 | brne L2 30 | 31 | jmp main 32 | -------------------------------------------------------------------------------- /src/main/asm/ProcessorIntr.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 3d10 3 | 0 4 | ffff 5 | 31e0 6 | 4200 7 | fffe 8 | 31e0 9 | 10e2 10 | 420e 11 | 3ff0 12 | ce2 13 | fffe 14 | 320e 15 | 3f00 16 | ffff 17 | 320e 18 | 4500 19 | a01 20 | 3f50 21 | 2400 22 | 38fd 23 | 8000 24 | 901 25 | 3f50 26 | 2500 27 | 38fd 28 | 3df6 29 | -------------------------------------------------------------------------------- /src/main/dig/lib/DIL Chips/74xx/ReadMe.txt: -------------------------------------------------------------------------------- 1 | If you add components, I would be glad if you would send 2 | me the new components so I can add them to the library. 3 | In this way, the library becomes more and more complete over time. 4 | 5 | Just open a GitHub issue and attach the new components or 6 | send a pull request (https://github.com/hneemann/Digital). 7 | -------------------------------------------------------------------------------- /src/main/dig/processor/.gitignore: -------------------------------------------------------------------------------- 1 | *.vhdl 2 | *.xdc 3 | vivado 4 | -------------------------------------------------------------------------------- /src/main/dig/processor/VGA/vga8x12_extra_chars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/dig/processor/VGA/vga8x12_extra_chars.png -------------------------------------------------------------------------------- /src/main/java/CLI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | import de.neemann.digital.cli.Main; 8 | 9 | /** 10 | * Entry point for the CLI interface. 11 | * Used to allow a more compact command line. 12 | * All work is delegated to {@link Main}. 13 | */ 14 | public final class CLI { 15 | 16 | private CLI() { 17 | } 18 | 19 | /** 20 | * Entry point for the CLI interface 21 | * 22 | * @param args the command line arguments 23 | */ 24 | public static void main(String[] args) { 25 | new Main().main(args); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/AnalyseException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse; 7 | 8 | /** 9 | * Exception thrown if there problems analysing the circuit 10 | */ 11 | public class AnalyseException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public AnalyseException(String message) { 18 | super(message); 19 | } 20 | 21 | /** 22 | * Creates a new instance 23 | * 24 | * @param e the cause 25 | */ 26 | public AnalyseException(Exception e) { 27 | super(e); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/ComplexityInclNotVisitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | /** 9 | */ 10 | public class ComplexityInclNotVisitor implements ExpressionVisitor { 11 | private int counter = 0; 12 | 13 | @Override 14 | public boolean visit(Expression expression) { 15 | counter++; 16 | return true; 17 | } 18 | 19 | /** 20 | * Returns a measure for the complexity of the examined expression 21 | * 22 | * @return the complexity 23 | */ 24 | public int getComplexity() { 25 | return counter; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/ComplexityVisitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | /** 9 | */ 10 | public class ComplexityVisitor implements ExpressionVisitor { 11 | private int counter = 0; 12 | 13 | @Override 14 | public boolean visit(Expression expression) { 15 | if (!(expression instanceof Not)) 16 | counter++; 17 | return true; 18 | } 19 | 20 | /** 21 | * Returns a measure for the complexity of the examined expression 22 | * The Not expression does not increase this complexity measure 23 | * 24 | * @return the complexity 25 | */ 26 | public int getComplexity() { 27 | return counter; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/Context.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | /** 9 | * The context used to evaluate an expression 10 | */ 11 | public interface Context { 12 | /** 13 | * Returns the value of the given variable 14 | * 15 | * @param variable the variable 16 | * @return the variables value 17 | * @throws ExpressionException ExpressionException 18 | */ 19 | boolean get(Variable variable) throws ExpressionException; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/ExpressionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | /** 9 | * Error thrown during evaluation of an expression 10 | */ 11 | public class ExpressionException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public ExpressionException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/ExpressionVisitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | /** 9 | * Visitor used the visit all sub expressions of the expression tree 10 | */ 11 | public interface ExpressionVisitor { 12 | 13 | /** 14 | * if true is returned the visitor goes down the tree. 15 | * 16 | * @param expression the expression to visit 17 | * @return if true operation goes down 18 | */ 19 | boolean visit(Expression expression); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/format/Formatter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression.format; 7 | 8 | 9 | import de.neemann.digital.analyse.expression.Expression; 10 | import de.neemann.digital.analyse.expression.ExpressionException; 11 | 12 | /** 13 | * Used to format an expression 14 | */ 15 | public interface Formatter { 16 | 17 | /** 18 | * Formats an expression 19 | * 20 | * @param expression the expression 21 | * @return the formatted expression 22 | * @throws FormatterException FormatterException 23 | * @throws ExpressionException ExpressionException 24 | */ 25 | String format(Expression expression) throws FormatterException, ExpressionException; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/format/FormatterException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression.format; 7 | 8 | /** 9 | * Error thrown if there is an formatting error 10 | */ 11 | public class FormatterException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the error message 16 | */ 17 | public FormatterException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/format/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to format an expression 9 | */ 10 | package de.neemann.digital.analyse.expression.format; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/modify/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes needed to perform modifications on the ast 9 | */ 10 | package de.neemann.digital.analyse.expression.modify; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/expression/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Used to describe an expression which can be evaluated to a boolean value 9 | */ 10 | package de.neemann.digital.analyse.expression; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/format/TruthTableFormatter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.format; 7 | 8 | import de.neemann.digital.analyse.TruthTable; 9 | import de.neemann.digital.analyse.expression.ExpressionException; 10 | 11 | /** 12 | * Formats a truth table 13 | */ 14 | public interface TruthTableFormatter { 15 | 16 | /** 17 | * Creates a string representation of the table 18 | * 19 | * @param truthTable the table 20 | * @return the string representation 21 | * @throws ExpressionException ExpressionException 22 | */ 23 | String format(TruthTable truthTable) throws ExpressionException; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/format/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to format a whole truth table 9 | */ 10 | package de.neemann.digital.analyse.format; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to analyse the actual circuit. 9 | * You also find the QMC-algorithm in this package 10 | */ 11 | package de.neemann.digital.analyse; 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/parser/ParseException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.parser; 7 | 8 | /** 9 | * Exception thrown during parsing of expression 10 | */ 11 | public class ParseException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public ParseException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/parser/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to parse an expression given as a string or reader to an 9 | * {@link de.neemann.digital.analyse.expression.Expression} instance. 10 | */ 11 | package de.neemann.digital.analyse.parser; 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/quinemc/BoolTable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.quinemc; 7 | 8 | /** 9 | * A simple bool table 10 | */ 11 | public interface BoolTable { 12 | /** 13 | * @return the table row count 14 | */ 15 | int size(); 16 | 17 | /** 18 | * returns the value at the given row 19 | * 20 | * @param i the index 21 | * @return the value 22 | */ 23 | ThreeStateValue get(int i); 24 | 25 | /** 26 | * @return the real size of the bool table 27 | */ 28 | default int realSize() { 29 | return size(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/quinemc/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Implementation of the algorithm from Quine and McCluskey 9 | */ 10 | package de.neemann.digital.analyse.quinemc; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/analyse/quinemc/primeselector/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to select the necessary primes 9 | */ 10 | package de.neemann.digital.analyse.quinemc.primeselector; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/ATF150x/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to handle a ATF150x chips. 9 | */ 10 | package de.neemann.digital.builder.ATF150x; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/BuilderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.builder; 7 | 8 | /** 9 | * Builder Exception 10 | */ 11 | public class BuilderException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public BuilderException(String message) { 18 | super(message); 19 | } 20 | 21 | /** 22 | * Creates a new instance 23 | * 24 | * @param message the message 25 | * @param cause the cause 26 | */ 27 | public BuilderException(String message, Exception cause) { 28 | super(message, cause); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/Gal16v8/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to handle a GAL16v8. 9 | * Allows the simulator to directly create a JEDEC file which you can use 10 | * to program a GAL16v8. So it is not necessary to use a special compiler. 11 | */ 12 | package de.neemann.digital.builder.Gal16v8; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/Gal22v10/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to handle a GAL22v10. 9 | * Allows the simulator to directly create a JEDEC file which you can use 10 | * to program a GAL22v10. So it is not necessary to use a special compiler. 11 | */ 12 | package de.neemann.digital.builder.Gal22v10; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/PinMapException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.builder; 7 | 8 | /** 9 | */ 10 | public class PinMapException extends Exception { 11 | /** 12 | * Creates a new instance 13 | * 14 | * @param message the message 15 | */ 16 | public PinMapException(String message) { 17 | super(message); 18 | } 19 | 20 | /** 21 | * Creates a new instance 22 | * 23 | * @param e the causing exception 24 | */ 25 | public PinMapException(Exception e) { 26 | super(e); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/circuit/FragmentVisitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.builder.circuit; 7 | 8 | /** 9 | * Visitor used to visit all fragments 10 | */ 11 | public interface FragmentVisitor { 12 | /** 13 | * Is called with all the fragments 14 | * 15 | * @param fr the fragment to visit 16 | */ 17 | void visit(Fragment fr); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/circuit/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to create a circuit from a set of expressions. 9 | */ 10 | package de.neemann.digital.builder.circuit; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/jedec/FuseMapFillerException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.builder.jedec; 7 | 8 | /** 9 | */ 10 | public class FuseMapFillerException extends Exception { 11 | /** 12 | * Creates a new instance 13 | * 14 | * @param message the message 15 | */ 16 | public FuseMapFillerException(String message) { 17 | super(message); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/jedec/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to create a JEDEC file (*.jed) 9 | */ 10 | package de.neemann.digital.builder.jedec; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to create a circuit or an other representation from a set of expressions. 9 | */ 10 | package de.neemann.digital.builder; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/builder/tt2/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Generator for the OpenABLE Truth Table (tt) format. 9 | * Used to create the input files for the ATF15xx Fitters provided by ATMEL. 10 | * These fitters then are used to create the needed JEDEC files. 11 | *

12 | */ 13 | package de.neemann.digital.builder.tt2; 14 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/cli/cli/NamedCommand.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.cli.cli; 7 | 8 | /** 9 | * The base class of all named commands 10 | */ 11 | public abstract class NamedCommand implements CLICommand { 12 | private final String name; 13 | 14 | /** 15 | * Create a new instance 16 | * 17 | * @param name the name of the command 18 | */ 19 | public NamedCommand(String name) { 20 | this.name = name; 21 | } 22 | 23 | /** 24 | * @return the name of the command 25 | */ 26 | public String getName() { 27 | return name; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/cli/cli/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The classes needed to implement the command line interface 9 | */ 10 | package de.neemann.digital.cli.cli; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/cli/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The command line interface 9 | */ 10 | package de.neemann.digital.cli; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/BacktrackException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | /** 9 | * Indicates an error backtracking a value to all affected values 10 | */ 11 | public class BacktrackException extends Exception { 12 | 13 | /** 14 | * Creates a new instance 15 | * 16 | * @param message the message 17 | */ 18 | public BacktrackException(String message) { 19 | super(message); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/ExceptionWithOriginInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | import java.io.File; 9 | import java.util.Set; 10 | 11 | /** 12 | * Every exception that can provide an origin is implementing this interface. 13 | */ 14 | public interface ExceptionWithOriginInterface { 15 | 16 | /** 17 | * @return the origin of the error as a set of files 18 | */ 19 | Set getOrigin(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/ModelStateObserver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | /** 9 | * Interface to implement observers of the model. 10 | */ 11 | public interface ModelStateObserver { 12 | 13 | /** 14 | * called to propagate an event 15 | * 16 | * @param event the event 17 | */ 18 | void handleEvent(ModelEvent event); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/ModelStateObserverTyped.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | /** 9 | * ModelStateObserver which can give information about the events it needs to be called 10 | */ 11 | public interface ModelStateObserverTyped extends ModelStateObserver { 12 | 13 | /** 14 | * @return the events on which this handler needs to be called 15 | */ 16 | ModelEventType[] getEvents(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/NodeInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | import de.neemann.digital.draw.elements.PinException; 9 | 10 | /** 11 | * The simplest possible node 12 | */ 13 | public interface NodeInterface extends Observer { 14 | 15 | /** 16 | * returns the outputs effected by this node 17 | * 18 | * @return the outputs 19 | * @throws PinException PinException 20 | */ 21 | ObservableValues getOutputs() throws PinException; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/Observer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core; 7 | 8 | /** 9 | * A simple observer 10 | */ 11 | public interface Observer { 12 | /** 13 | * is called if observable has changed 14 | */ 15 | void hasChanged(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/arithmetic/BarrelShifterMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann, Rüdiger Heintz 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.arithmetic; 7 | 8 | /** 9 | * the barrel shifter mode 10 | */ 11 | public enum BarrelShifterMode { 12 | /** 13 | * logical shift 14 | */ 15 | logical, 16 | /** 17 | * rotate 18 | */ 19 | rotate, 20 | /** 21 | * arithmetic shift 22 | */ 23 | arithmetic; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/arithmetic/LeftRightFormat.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann, Rüdiger Heintz 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.arithmetic; 7 | 8 | 9 | import de.neemann.digital.core.ObservableValue; 10 | 11 | /** 12 | * the barrel shifter direction 13 | */ 14 | public enum LeftRightFormat { 15 | /** 16 | * the default format as defined in {@link ObservableValue#getValueString()} 17 | */ 18 | left, 19 | /** 20 | * right 21 | */ 22 | right; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/arithmetic/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Simple arithmetic operations like addition, subtraction and multiplication 9 | */ 10 | package de.neemann.digital.core.arithmetic; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/basic/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The simple boolean operation like and, or and not 9 | */ 10 | package de.neemann.digital.core.basic; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/element/AttributeListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.element; 7 | 8 | /** 9 | * Interface to implement a AttributeListener 10 | */ 11 | public interface AttributeListener { 12 | /** 13 | * Is called if an attribute changes 14 | */ 15 | void attributeChanged(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/element/ElementFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.element; 7 | 8 | /** 9 | * Interface is used to implement a factory for elements 10 | */ 11 | public interface ElementFactory { 12 | /** 13 | * creates a new element matching the given attributes 14 | * 15 | * @param attributes the attributes describing the element 16 | * @return the created element 17 | */ 18 | Element create(ElementAttributes attributes); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/element/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * This package contains the classes used to describe and create the elements. 9 | */ 10 | package de.neemann.digital.core.element; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/extern/handler/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The handlers which control the external processes 9 | */ 10 | package de.neemann.digital.core.extern.handler; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/extern/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Code to use external processes to implement the behavior of a component 9 | */ 10 | package de.neemann.digital.core.extern; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/flipflops/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The Flipflops 9 | */ 10 | package de.neemann.digital.core.flipflops; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/io/CommonConnectionType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.io; 7 | 8 | /** 9 | * The seven seg connection type 10 | */ 11 | public enum CommonConnectionType { 12 | /** 13 | * common cathode 14 | */ 15 | cathode, 16 | /** 17 | * common anode 18 | */ 19 | anode 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/io/ProbeMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.io; 7 | 8 | /** 9 | * The probe display mode 10 | */ 11 | public enum ProbeMode { 12 | /** 13 | * shows the value 14 | */ 15 | VALUE, 16 | /** 17 | * counts an rising edges 18 | */ 19 | UP, 20 | /** 21 | * counts an falling edges 22 | */ 23 | DOWN, 24 | /** 25 | * counts an both edges 26 | */ 27 | BOTH 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/io/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The basic IO elements like Buttons, Inputs, Outputs, LEDs 9 | */ 10 | package de.neemann.digital.core.io; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/io/telnet/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Implement's a telnet connection to the simulator 9 | */ 10 | package de.neemann.digital.core.io.telnet; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/ProgramCounter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory; 7 | 8 | /** 9 | * This interface is implemented by all components which are able to act as a program counter. 10 | */ 11 | public interface ProgramCounter { 12 | 13 | /** 14 | * @return true if this component is used as the program counter 15 | */ 16 | boolean isProgramCounter(); 17 | 18 | /** 19 | * @return the value of the program counter 20 | */ 21 | long getProgramCounter(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/ProgramMemory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory; 7 | 8 | /** 9 | * Interface to access program memory addresses 10 | */ 11 | public interface ProgramMemory { 12 | 13 | /** 14 | * @return true is this is program memory 15 | */ 16 | boolean isProgramMemory(); 17 | 18 | /** 19 | * Called to initialize the memory 20 | * 21 | * @param dataField the data to put preload the memory with 22 | */ 23 | void setProgramMemory(DataField dataField); 24 | 25 | /** 26 | * @return the data bits 27 | */ 28 | int getDataBits(); 29 | 30 | /** 31 | * @return the name of the memory 32 | */ 33 | String getLabel(); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/importer/ByteArray.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory.importer; 7 | 8 | /** 9 | * A simple byte array used to read the byte oriented file formats 10 | */ 11 | public interface ByteArray { 12 | 13 | /** 14 | * Set a byte 15 | * 16 | * @param index the index 17 | * @param aByte the value to set 18 | */ 19 | void set(int index, int aByte); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/importer/ByteArrayReader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory.importer; 7 | 8 | import java.io.IOException; 9 | 10 | /** 11 | * Reader which reads bytes from a source. 12 | */ 13 | public interface ByteArrayReader { 14 | /** 15 | * Read the data 16 | * 17 | * @param byteArray the byte array to write the data to 18 | * @throws IOException IOException 19 | */ 20 | void read(ByteArray byteArray) throws IOException; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/importer/ValueArray.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory.importer; 7 | 8 | /** 9 | * Abstraction of a multi byte value array. 10 | */ 11 | public interface ValueArray { 12 | /** 13 | * Sets a value to the given index 14 | * 15 | * @param index the indesx 16 | * @param value the value to set 17 | */ 18 | void set(int index, long value); 19 | 20 | /** 21 | * Returns a value from the array 22 | * 23 | * @param index the index 24 | * @return the value 25 | */ 26 | long get(int index); 27 | 28 | /** 29 | * @return the number of bytes used in the values 30 | */ 31 | int getBytesPerValue(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/importer/ValueArrayReader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.memory.importer; 7 | 8 | import java.io.IOException; 9 | 10 | /** 11 | * Reader which reads valued data, which is maybe more the one byte per value. 12 | */ 13 | public interface ValueArrayReader { 14 | /** 15 | * Read the data 16 | * 17 | * @param valueArray the value array to write the data to 18 | * @throws IOException IOException 19 | */ 20 | void read(ValueArray valueArray) throws IOException; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/importer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Helpers to load data to memory components 9 | */ 10 | package de.neemann.digital.core.memory.importer; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * This package contains all elements dealing with memory. 9 | */ 10 | package de.neemann.digital.core.memory; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/memory/rom/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to store the rom's contents 9 | */ 10 | package de.neemann.digital.core.memory.rom; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * In this package you can find all the classes necessary to run the model. 9 | * So all the logic gates, memory and so on are implemented here. 10 | * This core model does not contain any information about its graphical representation. 11 | * But every single value is represented by the class {@link de.neemann.digital.core.ObservableValue} 12 | * and the graphical representation registers listeners tho the values to be notified if a state 13 | * change occurred, and maybe a repaint is necessary. 14 | */ 15 | package de.neemann.digital.core; 16 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/pld/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes needed to implement a PLD 9 | */ 10 | package de.neemann.digital.core.pld; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/stats/Countable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.stats; 7 | 8 | /** 9 | * Used by the {@link Statistics} class. Makes a node countable. 10 | */ 11 | public interface Countable { 12 | 13 | /** 14 | * @return the number of data bits used 15 | */ 16 | int getDataBits(); 17 | 18 | /** 19 | * @return the number of inputs 20 | */ 21 | default int getInputsCount() { 22 | return 0; 23 | } 24 | 25 | /** 26 | * @return the number of address bits 27 | */ 28 | default int getAddrBits() { 29 | return 0; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/stats/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to create the circuit statistics from the model. 9 | */ 10 | package de.neemann.digital.core.stats; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/switching/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * This package contains all the switching components 9 | */ 10 | package de.neemann.digital.core.switching; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/wiring/bus/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to handle a data bus. 9 | * Most classes are needed to handle the switch which is able to interconnect to nets to form a common net. 10 | */ 11 | package de.neemann.digital.core.wiring.bus; 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/core/wiring/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Contains the wiring elements like clock, break, splitter and so on 9 | */ 10 | package de.neemann.digital.core.wiring; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/data/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to store signal data 9 | */ 10 | package de.neemann.digital.data; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/elements/Movable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.elements; 7 | 8 | import de.neemann.digital.draw.graphics.Vector; 9 | 10 | /** 11 | * A simple moveable instance. 12 | */ 13 | public interface Movable { 14 | 15 | /** 16 | * Moves the instance by the given delta 17 | * 18 | * @param delta the movement 19 | */ 20 | void move(Vector delta); 21 | 22 | /** 23 | * @return the actual position 24 | */ 25 | Vector getPos(); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/elements/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * In this package you can find the classes representing the objects 9 | * that can be shown in the main window. 10 | * @see de.neemann.digital.draw.elements.VisualElement 11 | * @see de.neemann.digital.draw.elements.Wire 12 | */ 13 | package de.neemann.digital.draw.elements; 14 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/gif/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to create a animated gif 9 | */ 10 | package de.neemann.digital.draw.gif; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/ColorKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics; 7 | 8 | /** 9 | * The identifiers for the different colors 10 | */ 11 | public enum ColorKey {BACKGROUND, GRID, MAIN, DISABLED, WIRE, WIRE_HIGH, WIRE_LOW, WIRE_Z, WIRE_VALUE, WIRE_OUT, PINS, ERROR, PASSED, TESTCASE, ASYNC, HIGHLIGHT} 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/ExportFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics; 7 | 8 | import java.io.IOException; 9 | import java.io.OutputStream; 10 | 11 | /** 12 | * Factory to create a {@link Graphic} instance suited to create a file. 13 | */ 14 | public interface ExportFactory { 15 | /** 16 | * Creates a {@link Graphic} instance 17 | * 18 | * @param out the stream to write the graphic to 19 | * @return the {@link Graphic} instance to use 20 | * @throws IOException IOException 21 | */ 22 | Graphic create(OutputStream out) throws IOException; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/linemerger/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to merge the circuits lines to a long path. 9 | * Used to create a better locking SVG result because paths are as long as possible. 10 | * Only visible if the wires are not horizontal or vertical. 11 | */ 12 | package de.neemann.digital.draw.graphics.linemerger; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Contains all the classes needed to create a graphical representation of the circuit. 9 | * {@link de.neemann.digital.draw.graphics.GraphicSwing} is used to draw the circuit on a Swing component. 10 | * and {@link de.neemann.digital.draw.graphics.GraphicSVG} is used to create the SVG representation 11 | */ 12 | package de.neemann.digital.draw.graphics; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/ParseException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics.text; 7 | 8 | /** 9 | * The parser exception 10 | */ 11 | public class ParseException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public ParseException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/formatter/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Text formatter classes 9 | */ 10 | package de.neemann.digital.draw.graphics.text.formatter; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The text parser 9 | */ 10 | package de.neemann.digital.draw.graphics.text; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/text/Blank.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics.text.text; 7 | 8 | /** 9 | * The Blank character 10 | */ 11 | public final class Blank implements Text { 12 | /** 13 | * the Blank instance 14 | */ 15 | public static final Blank BLANK = new Blank(); 16 | 17 | private Blank() { 18 | } 19 | 20 | @Override 21 | public Text simplify() { 22 | return this; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return " "; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/text/Text.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics.text.text; 7 | 8 | /** 9 | * Represents a text element 10 | */ 11 | public interface Text { 12 | /** 13 | * @return a simplified text 14 | */ 15 | Text simplify(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/graphics/text/text/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes nedeed to format the text strings 9 | */ 10 | package de.neemann.digital.draw.graphics.text.text; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/ComponentSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | /** 9 | * User has to implement a component source 10 | */ 11 | public interface ComponentSource { 12 | 13 | /** 14 | * User has to implement this interface in order to add components to Digital 15 | * 16 | * @param adder the ComponentManager 17 | * @throws InvalidNodeException thrown if node is invalid 18 | */ 19 | void registerComponents(ComponentManager adder) throws InvalidNodeException; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/ElementNotFoundNotification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | import de.neemann.digital.core.element.ElementTypeDescription; 9 | 10 | import java.io.File; 11 | import java.io.IOException; 12 | 13 | /** 14 | * Interface to request unknown {@link ElementTypeDescription}s 15 | */ 16 | public interface ElementNotFoundNotification { 17 | /** 18 | * Called if the {@link ElementLibrary} could not create an element 19 | * 20 | * @param file the elements file name 21 | * @return the element or null if not loadable 22 | * @throws IOException IOException 23 | */ 24 | ElementTypeDescription elementNotFound(File file) throws IOException; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/InvalidNodeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | /** 9 | * Thrown if a node is not valid, which means it is not allowed to attach a component to it 10 | */ 11 | public class InvalidNodeException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message message 16 | */ 17 | public InvalidNodeException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/LibraryListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | /** 9 | * Listener to notify library uses if the library changes 10 | */ 11 | public interface LibraryListener { 12 | 13 | /** 14 | * called if library changes 15 | * 16 | * @param node the node that has changed. If null the tree structure has changed 17 | */ 18 | void libraryChanged(LibraryNode node); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/Visitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | /** 9 | * Visits all elements of the elements tree 10 | */ 11 | public interface Visitor { 12 | 13 | /** 14 | * Called on every node 15 | * 16 | * @param libraryNode the node 17 | */ 18 | void visit(LibraryNode libraryNode); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/library/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Package contains the classes which provide a element library. 9 | * Every circuit is build from elements found in this library. 10 | */ 11 | package de.neemann.digital.draw.library; 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/model/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The classes in this package are used to build the model from the used circuits. 9 | * If a model is build, all the included nested circuits are replicated as often as they are used in the 10 | * circuit. 11 | * It behaves different from a method call in a programming language. Its more like a macro expansion. 12 | * At the end the model only consists of the available primitives. The wiring is resolved and the connections to 13 | * nested circuits are resolved by replacing all the inputs and outputs by direct connections. 14 | */ 15 | package de.neemann.digital.draw.model; 16 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * In this package you can find all the components necessary to build 9 | * a visual representation of the model. So you can find all the information 10 | * about position of elements in the circuit, the wires, the shapes to represent 11 | * a element and so on. 12 | *

13 | * In the package model you can find the classes and methods to create 14 | * a running core model of the graphical representation. 15 | */ 16 | package de.neemann.digital.draw; 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/ObservableValueReader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.shapes; 7 | 8 | /** 9 | * Allows fetching the state of a shape or wire. 10 | */ 11 | public interface ObservableValueReader { 12 | 13 | /** 14 | * Fetches the state of a shape by requesting data from the model. 15 | * During execution of this method the model is locked. 16 | * Thus this method should return as fast as possible. 17 | * 18 | * The draw methods must not access the model data. This can lead to 19 | * unreasonable drawings. 20 | */ 21 | default void readObservableValues() { 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/ShapeSpecificMatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.shapes; 7 | 8 | import de.neemann.digital.draw.graphics.Vector; 9 | 10 | /** 11 | * A shape where the clickable area is not simply the bounding box, but 12 | * defined by the shape itself. 13 | */ 14 | public interface ShapeSpecificMatch extends Shape { 15 | 16 | /** 17 | * Checks is the given position matches the shape 18 | * 19 | * @param pos the position 20 | * @return true if the position matches the shape 21 | */ 22 | boolean matches(Vector pos); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/custom/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to store and draw a custom shape 9 | */ 10 | package de.neemann.digital.draw.shapes.custom; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/custom/svg/SvgException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.shapes.custom.svg; 7 | 8 | /** 9 | * Exception thrown if svg could not be parsed. 10 | */ 11 | public class SvgException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | * @param cause the cause 17 | */ 18 | public SvgException(String message, Throwable cause) { 19 | super(message, cause); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/custom/svg/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Simple importer for svg files. 9 | * A pin is specified by a circle which has an id of the form "pin:[name]" or "pin+:[name]". 10 | * The later one enables the pin label in the shape. 11 | * In this case the circle itself is ignored. 12 | */ 13 | package de.neemann.digital.draw.shapes.custom.svg; 14 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/ieee/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Shapes following IEEE Standard 91-1984 9 | */ 10 | package de.neemann.digital.draw.shapes.ieee; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/draw/shapes/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * This package contains all the different shapes. 9 | * The most important shape is the {@link de.neemann.digital.draw.shapes.GenericShape}. 10 | * This Shape is used to visualize most of the elements. 11 | */ 12 | package de.neemann.digital.draw.shapes; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/fsm/gui/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | /** 7 | * Classes to visualize the FSM 8 | */ 9 | package de.neemann.digital.fsm.gui; 10 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/fsm/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The classes needed to describe a finite state machine 9 | */ 10 | package de.neemann.digital.fsm; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/StatusInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui; 7 | 8 | /** 9 | * Interface to acess the status line 10 | */ 11 | public interface StatusInterface { 12 | /** 13 | * Set message to the status line. 14 | * Is maybe calld from an non Swing thread. Therefore needs to be 15 | * thread save. 16 | * 17 | * @param message the message 18 | */ 19 | void setStatus(String message); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/CircuitModifier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.components; 7 | 8 | import de.neemann.digital.draw.elements.Circuit; 9 | import de.neemann.digital.undo.Modification; 10 | 11 | /** 12 | * Interface to modify a cirtuit 13 | */ 14 | public interface CircuitModifier { 15 | /** 16 | * Needs to be called on order to modify a circuit 17 | * 18 | * @param modification the modification 19 | */ 20 | void modify(Modification modification); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/data/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * In this package you can find the trace windows and its helper classes. 9 | * The trace window is used to show the avolution of signals as a plot value vs. time. 10 | * The time in this case is a generic step count. 11 | */ 12 | package de.neemann.digital.gui.components.data; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/expression/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes needed to enter an expression and to create a circuit representing the expression 9 | */ 10 | package de.neemann.digital.gui.components.expression; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/graphics/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Implements a simple graphics card 9 | * The graphics card behaves like a single port RAM. You can set the size of the graphics in pixels. 10 | * Every pixel is represented by one byte in the graphics RAM. 11 | * The RAM is twice als large as needed. So two banks are supported to allow double buffering. 12 | * The bank, which is shown is selected by an additional input bit. 13 | */ 14 | package de.neemann.digital.gui.components.graphics; 15 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/karnaugh/KarnaughException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.components.karnaugh; 7 | 8 | /** 9 | * Exception during creating of KV maps 10 | */ 11 | public class KarnaughException extends Exception { 12 | /** 13 | * Creates a new instance 14 | * 15 | * @param message the message 16 | */ 17 | public KarnaughException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/karnaugh/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to show a KV map 9 | */ 10 | package de.neemann.digital.gui.components.karnaugh; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/modification/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to implement the events used by the event sourcing system. 9 | */ 10 | package de.neemann.digital.gui.components.modification; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * JComponents necessary to build the GUI 9 | */ 10 | package de.neemann.digital.gui.components; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/table/hardware/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * New abstraction for hardware description generation 9 | */ 10 | package de.neemann.digital.gui.components.table.hardware; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/table/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to visualize a truth table 9 | */ 10 | package de.neemann.digital.gui.components.table; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/terminal/TerminalInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.components.terminal; 7 | 8 | /** 9 | * A terminal implementation 10 | */ 11 | public interface TerminalInterface { 12 | 13 | /** 14 | * Adds a char to the terminal dialog 15 | * 16 | * @param value the character 17 | */ 18 | void addChar(char value); 19 | 20 | /** 21 | * @return the text shown 22 | */ 23 | String getText(); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/terminal/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to show the terminal window 9 | */ 10 | package de.neemann.digital.gui.components.terminal; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/testing/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to handle testing cases 9 | */ 10 | package de.neemann.digital.gui.components.testing; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/components/tree/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes implementing a tree selector component 9 | */ 10 | package de.neemann.digital.gui.components.tree; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * In this package you will find the GUI of the simulator 9 | */ 10 | package de.neemann.digital.gui; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/release/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Helpers to check for a new release. 9 | */ 10 | package de.neemann.digital.gui.release; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/remote/HandlerInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.remote; 7 | 8 | /** 9 | * Interface to implement a simple server. 10 | *

11 | * Created by helmut.neemann on 23.06.2016. 12 | */ 13 | public interface HandlerInterface { 14 | /** 15 | * Handles a simple string request 16 | * 17 | * @param request the request 18 | * @return the response 19 | */ 20 | String handleRequest(String request); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/remote/RemoteException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.remote; 7 | 8 | /** 9 | * Exception thrown by the RemoteInterface 10 | */ 11 | public class RemoteException extends Exception { 12 | /** 13 | * Create a new Exception 14 | * 15 | * @param message the message 16 | */ 17 | public RemoteException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to implement a remote server for simulator control. 9 | * Is used to allow a assembly IDE to control the simulator. 10 | * In this way the assembly IDE is able to load executables to the program ROM and 11 | * start the simulation (resets the processor). After that you can start single clock steps, 12 | * run to break and so on. 13 | * Every command returns the actual ROM address to the assembly IDE which can be used to highlight 14 | * the actual executed assembly instruction within the IDE. 15 | *

16 | * Created by helmut.neemann on 23.06.2016. 17 | */ 18 | package de.neemann.digital.gui.remote; 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/state/StateInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.state; 7 | 8 | /** 9 | * A simple state 10 | */ 11 | public interface StateInterface { 12 | 13 | /** 14 | * Is called if the state is leaved 15 | */ 16 | void leave(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/state/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Used to handle the applications state. 9 | * States a re running, microStepping, editing 10 | */ 11 | package de.neemann.digital.gui.state; 12 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/gui/tutorial/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to show the initial tutorial 9 | */ 10 | package de.neemann.digital.gui.tutorial; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/Expression.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.hgs; 7 | 8 | /** 9 | * Simple HGS expression 10 | */ 11 | public interface Expression { 12 | /** 13 | * Calculates the value 14 | * 15 | * @param c the context of the calculation 16 | * @return the result of the evaluation 17 | * @throws HGSEvalException HGSEvalException 18 | */ 19 | Object value(Context c) throws HGSEvalException; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/ParserException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.hgs; 7 | 8 | /** 9 | * Expression thrown by the parser 10 | */ 11 | public class ParserException extends Exception { 12 | 13 | /** 14 | * Creates a new instance 15 | * 16 | * @param message the error message 17 | */ 18 | public ParserException(String message) { 19 | super(message); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/Statement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.hgs; 7 | 8 | /** 9 | * Represents a statement. 10 | */ 11 | public interface Statement { 12 | 13 | /** 14 | * Executes the statement 15 | * 16 | * @param context the context of the execution 17 | * @throws HGSEvalException HGSEvalException 18 | */ 19 | void execute(Context context) throws HGSEvalException; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/function/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The functions to be used in the parser 9 | */ 10 | package de.neemann.digital.hdl.hgs.function; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to parse HG Script (HDL Generator Scripting language). 9 | * The user should not see any error messages from this template engine. 10 | * Therefore a translation of error messages is not necessary! 11 | */ 12 | package de.neemann.digital.hdl.hgs; 13 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/hgs/refs/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Used to access variables 9 | */ 10 | package de.neemann.digital.hdl.hgs.refs; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/HasName.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2; 7 | 8 | /** 9 | * Implemented by classes the needs unique names 10 | */ 11 | public interface HasName { 12 | /** 13 | * @return the name 14 | */ 15 | String getName(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/Printable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2; 7 | 8 | import de.neemann.digital.hdl.printer.CodePrinter; 9 | 10 | import java.io.IOException; 11 | 12 | /** 13 | * Something which can print itself to a CodePrinter 14 | */ 15 | public interface Printable { 16 | /** 17 | * Prints itfels to the CodePrinter 18 | * 19 | * @param out the CodePrinter instance 20 | * @throws IOException IOException 21 | */ 22 | void print(CodePrinter out) throws IOException; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/clock/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to be used to modify the clock source of a circuit 9 | */ 10 | package de.neemann.digital.hdl.model2.clock; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/expression/ExprUsingNet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2.expression; 7 | 8 | import de.neemann.digital.hdl.model2.HDLNet; 9 | 10 | /** 11 | * Implemented by all expressions using a net 12 | */ 13 | public interface ExprUsingNet { 14 | /** 15 | * @return the used net 16 | */ 17 | HDLNet getNet(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/expression/ExpressionOptimizer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2.expression; 7 | 8 | /** 9 | * Interface to optimize an expression 10 | */ 11 | public interface ExpressionOptimizer { 12 | 13 | /** 14 | * Optimizes the given expression. 15 | * Should call itself on the returned expression if a optimization was made. 16 | * See {@link ExprNot.OptimizeNotNot} as an example. 17 | * 18 | * @param expression the expression to optimize 19 | * @return the optimizes expression or the given expression if optimization is not possible 20 | */ 21 | Expression optimize(Expression expression); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/expression/Visitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2.expression; 7 | 8 | /** 9 | * Visitor to visit all expressions 10 | */ 11 | public interface Visitor { 12 | /** 13 | * Visited by all expressions 14 | * 15 | * @param expression the expression 16 | */ 17 | void visit(Expression expression); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/expression/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes to describe a model expression 9 | */ 10 | package de.neemann.digital.hdl.model2.expression; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/optimizations/Optimization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.hdl.model2.optimizations; 7 | 8 | import de.neemann.digital.hdl.model2.HDLCircuit; 9 | import de.neemann.digital.hdl.model2.HDLException; 10 | 11 | /** 12 | * A model optimization 13 | */ 14 | public interface Optimization { 15 | 16 | /** 17 | * Performs the optimization. 18 | * 19 | * @param circuit the circuit to optimize 20 | * @throws HDLException HDLException 21 | */ 22 | void optimize(HDLCircuit circuit) throws HDLException; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/optimizations/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes which implement model optimizations. 9 | */ 10 | package de.neemann.digital.hdl.model2.optimizations; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/model2/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The hdl representation of a circuit 9 | */ 10 | package de.neemann.digital.hdl.model2; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/printer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Pretty printer for code output 9 | */ 10 | package de.neemann.digital.hdl.printer; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/verilog2/lib/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ivan Deras 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The elements used to create the verilog output 9 | */ 10 | package de.neemann.digital.hdl.verilog2.lib; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/verilog2/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ivan Deras. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The verilog exporter 9 | */ 10 | package de.neemann.digital.hdl.verilog2; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/vhdl2/entities/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The entities used to create the vhdl output 9 | */ 10 | package de.neemann.digital.hdl.vhdl2.entities; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/hdl/vhdl2/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The vhdl exporter 9 | */ 10 | package de.neemann.digital.hdl.vhdl2; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/lang/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * simple internationalization class 9 | */ 10 | package de.neemann.digital.lang; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/TestResultListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing; 7 | 8 | import de.neemann.digital.testing.parser.LineListener; 9 | 10 | /** 11 | * Used to create the test result 12 | */ 13 | public interface TestResultListener extends LineListener { 14 | /** 15 | * Is called by the test executor to add the clock rows to the result 16 | * 17 | * @param description the description 18 | */ 19 | void addClockRow(String description); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/TestingDataException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing; 7 | 8 | /** 9 | */ 10 | public class TestingDataException extends Exception { 11 | /** 12 | * creates a new instance 13 | * 14 | * @param message the error message 15 | * @param cause the cause 16 | */ 17 | public TestingDataException(String message, Exception cause) { 18 | super(message, cause); 19 | } 20 | 21 | /** 22 | * creates a new instance 23 | * 24 | * @param message the message 25 | */ 26 | public TestingDataException(String message) { 27 | super(message); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to test a circuit. 9 | * You can add a test to a circuit like a regular gate. 10 | * There you can edit the test case and this test case can be run and the expected results are 11 | * compared with the calculated results. 12 | * It's somewhat like a unit test in java, but less flexible at the moment. 13 | */ 14 | package de.neemann.digital.testing; 15 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/Expression.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing.parser; 7 | 8 | /** 9 | * Simple integer expression 10 | * Created by Helmut.Neemann on 02.12.2016. 11 | */ 12 | public interface Expression { 13 | /** 14 | * calculates the value 15 | * 16 | * @param c the context of the calculation 17 | * @return the long value result 18 | * @throws ParserException ParserException 19 | */ 20 | long value(Context c) throws ParserException; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/LineEmitter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing.parser; 7 | 8 | /** 9 | * Used to describe a line 10 | */ 11 | public interface LineEmitter { 12 | 13 | /** 14 | * Is called to emit the described line to the listener. 15 | * A emitter is allowed to emit multiple lines to the listener. 16 | * 17 | * @param listener the listener to emit the lines 18 | * @param context the context 19 | * @throws ParserException ParserException 20 | */ 21 | void emitLines(LineListener listener, Context context) throws ParserException; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/LineListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing.parser; 7 | 8 | /** 9 | * Listener for truth table lines 10 | */ 11 | public interface LineListener { 12 | /** 13 | * Adds a line to the table 14 | * 15 | * @param values the values in the line 16 | */ 17 | void add(TestRow values); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/ValueAppender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.testing.parser; 7 | 8 | import de.neemann.digital.data.Value; 9 | 10 | import java.util.ArrayList; 11 | 12 | /** 13 | * Used to append some values to a table row 14 | */ 15 | public interface ValueAppender { 16 | /** 17 | * Appends some values to the given row 18 | * 19 | * @param values the row 20 | * @param context the context to acess variables 21 | * @throws ParserException ParserException 22 | */ 23 | void appendValues(ArrayList values, Context context) throws ParserException; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/functions/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * The functions supported by the expression parser 9 | */ 10 | package de.neemann.digital.testing.parser.functions; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/testing/parser/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Parser for the test data. 9 | */ 10 | package de.neemann.digital.testing.parser; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/toolchain/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to provide the IDE integration 9 | */ 10 | package de.neemann.digital.toolchain; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/undo/ChangedListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.undo; 7 | 8 | /** 9 | * Listener which is notified if the component has changed 10 | */ 11 | public interface ChangedListener { 12 | /** 13 | * Called if changed 14 | */ 15 | void hasChanged(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/undo/Copyable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.undo; 7 | 8 | /** 9 | * Something which is editable and supports a history including undo and redo 10 | * 11 | * @param the concrete type 12 | */ 13 | public interface Copyable> { 14 | /** 15 | * @return a copy of itself 16 | */ 17 | A createDeepCopy(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/undo/Modification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.undo; 7 | 8 | /** 9 | * Abstraction of a modification done on a object. 10 | * Make sure that EVERY modification is done via this interface! 11 | * 12 | * @param the type of the object to modify 13 | */ 14 | public interface Modification { 15 | 16 | /** 17 | * Modifies the object 18 | * 19 | * @param a the object to modify 20 | * @throws ModifyException ModifyException 21 | */ 22 | void modify(A a) throws ModifyException; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/undo/ModifyException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.undo; 7 | 8 | /** 9 | * Exception cause by the modification 10 | */ 11 | public class ModifyException extends Exception { 12 | 13 | /** 14 | * Creates a new instance 15 | * 16 | * @param message the message 17 | */ 18 | public ModifyException(String message) { 19 | super(message); 20 | } 21 | 22 | /** 23 | * Creates a new instance 24 | * 25 | * @param message the message 26 | * @param cause the root cause of this exception 27 | */ 28 | public ModifyException(String message, Exception cause) { 29 | super(message, cause); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/digital/undo/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Classes used to implement an undo/redo logic 9 | */ 10 | package de.neemann.digital.undo; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/gui/ToolTipProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.gui; 7 | 8 | /** 9 | * Provides a dynamic tool tip 10 | */ 11 | public interface ToolTipProvider { 12 | /** 13 | * @return the tooltip 14 | */ 15 | String getToolTip(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/gui/language/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Simple classes to replace the java resource bundles 9 | */ 10 | package de.neemann.gui.language; 11 | -------------------------------------------------------------------------------- /src/main/java/de/neemann/gui/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * Some helpful classes concerning GUI creation 9 | */ 10 | package de.neemann.gui; 11 | -------------------------------------------------------------------------------- /src/main/java/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | 7 | /* 8 | * The command line interface 9 | */ 10 | -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-fit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-fit.png -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-fit_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-fit_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-in.png -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-in_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-in_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-out.png -------------------------------------------------------------------------------- /src/main/resources/icons/View-zoom-out_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/View-zoom-out_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/delete.png -------------------------------------------------------------------------------- /src/main/resources/icons/delete_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/delete_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/dialog-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/dialog-error.png -------------------------------------------------------------------------------- /src/main/resources/icons/dialog-error_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/dialog-error_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-new-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-new-sub.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-new-sub_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-new-sub_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-new.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-new_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-new_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-open-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-open-new.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-open-new_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-open-new_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-open.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-open_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-open_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-save-as.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-save-as_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-save-as_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-save.png -------------------------------------------------------------------------------- /src/main/resources/icons/document-save_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/document-save_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-copy.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-copy_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-copy_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-redo.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-redo_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-redo_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-undo.png -------------------------------------------------------------------------------- /src/main/resources/icons/edit-undo_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/edit-undo_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/help.png -------------------------------------------------------------------------------- /src/main/resources/icons/help_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/help_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon128.png -------------------------------------------------------------------------------- /src/main/resources/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon16.png -------------------------------------------------------------------------------- /src/main/resources/icons/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon32.png -------------------------------------------------------------------------------- /src/main/resources/icons/icon48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon48.ico -------------------------------------------------------------------------------- /src/main/resources/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon48.png -------------------------------------------------------------------------------- /src/main/resources/icons/icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/icon64.png -------------------------------------------------------------------------------- /src/main/resources/icons/measurement-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/measurement-graph.png -------------------------------------------------------------------------------- /src/main/resources/icons/measurement-graph_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/measurement-graph_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start-2.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start-2_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start-2_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start-T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start-T.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start-T_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start-T_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-start_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-start_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-stop.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-playback-stop_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-playback-stop_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-seek-forward-f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-seek-forward-f.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-seek-forward-f_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-seek-forward-f_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-seek-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-seek-forward.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-seek-forward_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-seek-forward_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-skip-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-skip-forward.png -------------------------------------------------------------------------------- /src/main/resources/icons/media-skip-forward_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/media-skip-forward_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/splash.png -------------------------------------------------------------------------------- /src/main/resources/icons/testFailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/testFailed.png -------------------------------------------------------------------------------- /src/main/resources/icons/testFailed_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/testFailed_hi.png -------------------------------------------------------------------------------- /src/main/resources/icons/testPassed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/testPassed.png -------------------------------------------------------------------------------- /src/main/resources/icons/testPassed_hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/main/resources/icons/testPassed_hi.png -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Add.v: -------------------------------------------------------------------------------- 1 | module 6 | #( 7 | parameter Bits = 1 8 | ) 9 | ( 10 | input [(Bits-1):0] a, 11 | input [(Bits-1):0] b, 12 | input c_i, 13 | output [(Bits - 1):0] s, 14 | output c_o 15 | ); 16 | wire [Bits:0] temp; 17 | 18 | assign temp = a + b + c_i; 19 | assign s = temp [(Bits-1):0]; 20 | assign c_o = temp[Bits]; 21 | endmodule 22 | 23 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_BitExtender.v: -------------------------------------------------------------------------------- 1 | 1) { 3 | generics[0] := "inputBits"; 4 | generics[1] := "outputBits"; 5 | 6 | moduleName = "DIG_BitExtender"; 7 | -?> 8 | module DIG_BitExtender #( 9 | parameter inputBits = 2, 10 | parameter outputBits = 4 11 | ) 12 | ( 13 | input [(inputBits-1):0] in, 14 | output [(outputBits - 1):0] out 15 | ); 16 | assign out = {{(outputBits - inputBits){in[inputBits - 1]}}, in}; 17 | endmodule 18 | 23 | module DIG_BitExtenderSingle #( 24 | parameter outputBits = 2 25 | ) 26 | ( 27 | input in, 28 | output [(outputBits - 1):0] out 29 | ); 30 | assign out = {outputBits{in}}; 31 | endmodule 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_BitSelector.v: -------------------------------------------------------------------------------- 1 | 7 | module ( 8 | input in, 9 | input sel, 10 | output out 11 | ); 12 | assign out = in[sel]; 13 | endmodule 14 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_BlockRAMDualPort.v: -------------------------------------------------------------------------------- 1 | module 7 | #( 8 | parameter Bits = 8, 9 | parameter AddrBits = 4 10 | ) 11 | ( 12 | input [(AddrBits-1):0] A, 13 | input [(Bits-1):0] Din, 14 | input str, 15 | input C, 16 | output [(Bits-1):0] D 17 | ); 18 | reg [(Bits-1):0] memory[0:((1 << AddrBits) - 1)]; 19 | reg [(Bits-1):0] wData; 20 | 21 | assign D = wData; 22 | 23 | always @ (posedge C) begin 24 | wData <= memory[A]; 25 | if (str) 26 | memory[A] <= Din; 27 | end 28 | endmodule 29 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Comparator.v: -------------------------------------------------------------------------------- 1 | 9 | module #( 10 | parameter Bits = 1 11 | ) 12 | ( 13 | input [(Bits -1):0] a, 14 | input [(Bits -1):0] b, 15 | output \> , 16 | output \= , 17 | output \< 18 | ); 19 | 20 | assign \> = $signed(a) > $signed(b); 21 | assign \= = $signed(a) == $signed(b); 22 | assign \< = $signed(a) < $signed(b); 23 | 24 | assign \> = a > b; 25 | assign \= = a == b; 26 | assign \< = a < b; 27 | 28 | endmodule 29 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Decoder.v: -------------------------------------------------------------------------------- 1 | 6 | module ( 7 | 8 | output out_, 9 | 10 | input sel 11 | ); 12 | 13 | assign out_ = (sel == )? 1'b1 : 1'b0; 14 | 15 | endmodule 16 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Driver.v: -------------------------------------------------------------------------------- 1 | 14 | module 15 | 1) { ?>#( 16 | parameter Bits = 2 17 | ) 18 | 19 | ( 20 | input in, 21 | input sel, 22 | output out 23 | ); 24 | assign out = (sel == 1'b1)? ~ in : ; 25 | endmodule -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_DriverInvSel.v: -------------------------------------------------------------------------------- 1 | 14 | module 15 | 1) { ?>#( 16 | parameter Bits = 2 17 | ) 18 | 19 | ( 20 | input in, 21 | input sel, 22 | output out 23 | ); 24 | assign out = (sel == 1'b0)? ~ in : ; 25 | endmodule -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_External.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_ExternalFile.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_JK_FF.v: -------------------------------------------------------------------------------- 1 | module 5 | #( 6 | parameter Default = 1'b0 7 | ) 8 | ( 9 | input J, 10 | input C, 11 | input K, 12 | output Q, 13 | output \~Q 14 | ); 15 | reg state; 16 | 17 | assign Q = state; 18 | assign \~Q = ~state; 19 | 20 | always @ (posedge C) begin 21 | if (~J & K) 22 | state <= 1'b0; 23 | else if (J & ~K) 24 | state <= 1'b1; 25 | else if (J & K) 26 | state <= ~state; 27 | end 28 | 29 | initial begin 30 | state = Default; 31 | end 32 | endmodule 33 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_JK_FF_AS.v: -------------------------------------------------------------------------------- 1 | module 5 | #( 6 | parameter Default = 1'b0 7 | ) 8 | ( 9 | input Set, 10 | input J, 11 | input C, 12 | input K, 13 | input Clr, 14 | output Q, 15 | output \~Q 16 | ); 17 | reg state; 18 | 19 | assign Q = state; 20 | assign \~Q = ~state; 21 | 22 | always @ (posedge C or posedge Clr or posedge Set) begin 23 | if (Set) 24 | state <= 1'b1; 25 | else if (Clr) 26 | state <= 1'b0; 27 | else if (~J & K) 28 | state <= 1'b0; 29 | else if (J & ~K) 30 | state <= 1'b1; 31 | else if (J & K) 32 | state <= ~state; 33 | end 34 | 35 | initial begin 36 | state = Default; 37 | end 38 | endmodule 39 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Mul.v: -------------------------------------------------------------------------------- 1 | 10 | module #( 11 | parameter Bits = 1 12 | ) 13 | ( 14 | 15 | input signed [(Bits-1):0] a, 16 | input signed [(Bits-1):0] b, 17 | output signed [(Bits*2-1):0] mul 18 | 19 | input [(Bits-1):0] a, 20 | input [(Bits-1):0] b, 21 | output [(Bits*2-1):0] mul 22 | 23 | ); 24 | assign mul = a * b; 25 | endmodule 26 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Neg.v: -------------------------------------------------------------------------------- 1 | 4 | module DIG_Neg #( 5 | parameter Bits = 1 6 | ) 7 | ( 8 | input signed [(Bits-1):0] in, 9 | output signed [(Bits-1):0] out 10 | ); 11 | assign out = -in; 12 | endmodule 13 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_PinControl.v: -------------------------------------------------------------------------------- 1 | 1) { 3 | generics[0] := "Bits"; 4 | export bitRange := "[(Bits-1):0] "; 5 | export zval := "{Bits{1'bz}}"; 6 | } 7 | else { 8 | moduleName = moduleName+"_BUS"; 9 | export bitRange := ""; 10 | export zval := "1'bz"; 11 | } 12 | ?>module 1) { ?> 14 | #( 15 | parameter Bits = 2 16 | ) 17 | ( 18 | inout pin, 19 | input oe, 20 | input wr, 21 | output rd 22 | ); 23 | 24 | assign pin = oe ? wr : ; 25 | assign rd = oe ? wr : pin ; 26 | endmodule 27 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_PriorityEncoder.v: -------------------------------------------------------------------------------- 1 | 6 | module ( 7 | 8 | input in, 9 | 10 | output reg num, 11 | output any 12 | ); 13 | always @ (*) begin 14 | 0; n--) { -?> 15 | if (in == 1'b1) 16 | num = ; 17 | else 18 | 19 | num = ; 20 | end 21 | 22 | assign any = ; 27 | endmodule 28 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_RAMAsync.v: -------------------------------------------------------------------------------- 1 | module 7 | #( 8 | parameter Bits = 8, 9 | parameter AddrBits = 4 10 | ) 11 | ( 12 | input [(AddrBits-1):0] A, 13 | input [(Bits-1):0] D, 14 | input we, 15 | output [(Bits-1):0] Q 16 | ); 17 | reg [(Bits-1):0] memory[0:((1 << AddrBits) - 1)]; 18 | 19 | assign Q = memory[A]; 20 | 21 | always @ (we, A, D) begin 22 | if (we) 23 | memory[A] <= D; 24 | end 25 | endmodule 26 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_RAMDualAccess.v: -------------------------------------------------------------------------------- 1 | module 7 | #( 8 | parameter Bits = 8, 9 | parameter AddrBits = 4 10 | ) 11 | ( 12 | input C, // Clock signal 13 | input ld, 14 | input [(AddrBits-1):0] \1A , 15 | input [(AddrBits-1):0] \2A , 16 | input [(Bits-1):0] \1Din , 17 | input str, 18 | output [(Bits-1):0] \1D , 19 | output [(Bits-1):0] \2D 20 | ); 21 | // CAUTION: uses distributed RAM 22 | reg [(Bits-1):0] memory [0:((1 << AddrBits)-1)]; 23 | 24 | assign \1D = ld? memory[\1A ] : 'hz; 25 | assign \2D = memory[\2A ]; 26 | 27 | always @ (posedge C) begin 28 | if (str) 29 | memory[\1A ] <= \1Din ; 30 | end 31 | 32 | endmodule 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_RAMDualPort.v: -------------------------------------------------------------------------------- 1 | module 7 | #( 8 | parameter Bits = 8, 9 | parameter AddrBits = 4 10 | ) 11 | ( 12 | input [(AddrBits-1):0] A, 13 | input [(Bits-1):0] Din, 14 | input str, 15 | input C, 16 | input ld, 17 | output [(Bits-1):0] D 18 | ); 19 | reg [(Bits-1):0] memory[0:((1 << AddrBits) - 1)]; 20 | 21 | assign D = ld? memory[A] : 'hz; 22 | 23 | always @ (posedge C) begin 24 | if (str) 25 | memory[A] <= Din; 26 | end 27 | endmodule 28 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Register.v: -------------------------------------------------------------------------------- 1 | 12 | module 13 | 1) {?> #( 14 | parameter Bits = 1 15 | ) 16 | 17 | ( 18 | input C, 19 | input en, 20 | input D, 21 | output Q 22 | ); 23 | 24 | reg state = 'h0; 25 | 26 | assign Q = state; 27 | 28 | always @ (posedge C) begin 29 | if (en) 30 | state <= D; 31 | end 32 | endmodule -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_RegisterFile.v: -------------------------------------------------------------------------------- 1 | module 7 | #( 8 | parameter Bits = 8, 9 | parameter AddrBits = 4 10 | ) 11 | ( 12 | input [(Bits-1):0] Din, 13 | input we, 14 | input [(AddrBits-1):0] Rw, 15 | input C, 16 | input [(AddrBits-1):0] Ra, 17 | input [(AddrBits-1):0] Rb, 18 | output [(Bits-1):0] Da, 19 | output [(Bits-1):0] Db 20 | ); 21 | 22 | reg [(Bits-1):0] memory[0:((1 << AddrBits)-1)]; 23 | 24 | assign Da = memory[Ra]; 25 | assign Db = memory[Rb]; 26 | 27 | always @ (posedge C) begin 28 | if (we) 29 | memory[Rw] <= Din; 30 | end 31 | endmodule 32 | -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Reset.v: -------------------------------------------------------------------------------- 1 | 4 | module 5 | #( 6 | parameter invertOutput = 0 7 | ) 8 | ( 9 | output Reset 10 | ); 11 | // ToDo: how to deal with the reset pin? 12 | assign Reset = invertOutput; 13 | endmodule -------------------------------------------------------------------------------- /src/main/resources/verilog/DIG_Sub.v: -------------------------------------------------------------------------------- 1 | 4 | module DIG_Sub #( 5 | parameter Bits = 2 6 | ) 7 | ( 8 | input [(Bits-1):0] a, 9 | input [(Bits-1):0] b, 10 | input c_i, 11 | output [(Bits-1):0] s, 12 | output c_o 13 | ); 14 | wire [Bits:0] temp; 15 | 16 | assign temp = a - b - c_i; 17 | assign s = temp[(Bits-1):0]; 18 | assign c_o = temp[Bits]; 19 | endmodule 20 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Add.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | USE ieee.std_logic_unsigned.all; 4 | 5 | entity DIG_Add is 6 | generic ( Bits: integer ); 7 | port ( 8 | s: out std_logic_vector((Bits-1) downto 0); 9 | c_o: out std_logic; 10 | a: in std_logic_vector((Bits-1) downto 0); 11 | b: in std_logic_vector((Bits-1) downto 0); 12 | c_i: in std_logic ); 13 | end DIG_Add; 14 | 15 | architecture Behavioral of DIG_Add is 16 | signal temp : std_logic_vector(Bits downto 0); 17 | begin 18 | temp <= ('0' & a) + b + c_i; 19 | 20 | s <= temp((Bits-1) downto 0); 21 | c_o <= temp(Bits); 22 | end Behavioral; 23 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_BitSelector.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 7 | entity is 8 | port ( 9 | p_out: out std_logic; 10 | p_in: in ; 11 | sel: in ); 12 | end ; 13 | 14 | architecture Behavioral of is 15 | begin 16 | with sel select 17 | p_out <= 18 | 19 | p_in() when , 20 | 21 | when others; 22 | end Behavioral; 23 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Decoder.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 7 | entity is 8 | port ( 9 | 10 | out_: out std_logic; 11 | 12 | sel: in ); 13 | end ; 14 | 15 | architecture Behavioral of is 16 | begin 17 | 18 | out_ <= '1' when sel = else '0'; 19 | 20 | end Behavioral; 21 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Driver.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 9 | entity is 10 | 1) {?>generic ( Bits : integer ); 11 | port ( 12 | p_out: out ; 13 | p_in: in ; 14 | sel: in std_logic ); 15 | end ; 16 | 17 | architecture Behavioral of is 18 | begin 19 | p_out <= NOT p_in when sel = '1' else 'Z'(others => 'Z'); 20 | end Behavioral; 21 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_DriverInvSel.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 9 | entity is 10 | 1) {?>generic ( Bits : integer ); 11 | port ( 12 | p_out: out ; 13 | p_in: in ; 14 | sel: in std_logic ); 15 | end ; 16 | 17 | architecture Behavioral of is 18 | begin 19 | p_out <= NOT p_in when sel = '0' else 'Z'(others => 'Z'); 20 | end Behavioral; 21 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_External.tem: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_ExternalFile.tem: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_JK_FF.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 4 | entity DIG_JK_FF is 5 | generic (Default : std_logic); 6 | port ( 7 | Q: out std_logic; 8 | notQ: out std_logic; 9 | J: in std_logic; 10 | C: in std_logic; 11 | K: in std_logic ); 12 | end DIG_JK_FF; 13 | 14 | architecture Behavioral of DIG_JK_FF is 15 | signal temp: std_logic := Default; 16 | begin 17 | process (C) 18 | begin 19 | if rising_edge(C) then 20 | if (J='0' and K='1') then 21 | temp <= '0'; 22 | elsif (J='1' and K='0') then 23 | temp <= '1'; 24 | elsif (J='1' and K='1') then 25 | temp <= not (temp); 26 | end if; 27 | end if; 28 | end process; 29 | Q <= temp; 30 | notQ <= NOT( temp ); 31 | end Behavioral; -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Mul.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | USE ieee.numeric_std.all; 4 | 5 | 11 | 12 | entity is 13 | generic ( Bits: integer ); 14 | port ( 15 | a: in std_logic_vector ((Bits-1) downto 0); 16 | b: in std_logic_vector ((Bits-1) downto 0); 17 | mul: out std_logic_vector ((Bits*2-1) downto 0) ); 18 | end ; 19 | 20 | architecture Behavioral of is 21 | begin 22 | 23 | mul <= std_logic_vector(signed(a) * signed(b)); 24 | 25 | mul <= std_logic_vector(unsigned(a) * unsigned(b)); 26 | 27 | end Behavioral; -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Neg.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | USE ieee.numeric_std.all; 4 | 5 | entity DIG_Neg is 6 | generic ( Bits: integer ); 7 | port ( 8 | p_in: in std_logic_vector ((Bits-1) downto 0); 9 | p_out: out std_logic_vector ((Bits-1) downto 0) ); 10 | end DIG_Neg; 11 | 12 | architecture Behavioral of DIG_Neg is 13 | begin 14 | p_out <= std_logic_vector(-signed(p_in)); 15 | end Behavioral; -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_PriorityEncoder.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 7 | entity is 8 | port ( 9 | num: out ; 10 | any: out std_logic; 11 | 12 | in: in std_logic; 13 | 14 | end ; 15 | 16 | architecture Behavioral of is 17 | begin 18 | num <= 19 | 0;n--) { ?> 20 | when in = '1' else 21 | 22 | ; 23 | any <= ; 28 | end Behavioral; 29 | -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Register.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 9 | entity is 10 | 1) {?>generic ( Bits: integer ); 11 | port ( 12 | Q: out ; 13 | D: in ; 14 | C: in std_logic; 15 | en: in std_logic ); 16 | end ; 17 | 18 | architecture Behavioral of is 19 | signal state : := ; 20 | begin 21 | Q <= state; 22 | 23 | process ( C ) 24 | begin 25 | if rising_edge(C) and (en='1') then 26 | state <= D; 27 | end if; 28 | end process; 29 | end Behavioral; -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Reset.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | 4 | entity DIG_Reset is 5 | generic ( 6 | invertOutput : std_logic ); 7 | port ( 8 | Reset: out std_logic ); 9 | end DIG_Reset; 10 | 11 | architecture Behavioral of DIG_Reset is 12 | begin 13 | -- ToDo: how to deal with the reset pin? 14 | Reset <= invertOutput; 15 | end Behavioral; -------------------------------------------------------------------------------- /src/main/resources/vhdl/DIG_Sub.tem: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | USE ieee.std_logic_unsigned.all; 4 | 5 | entity DIG_Sub is 6 | generic ( Bits: integer ); 7 | port ( 8 | s: out std_logic_vector((Bits-1) downto 0); 9 | c_o: out std_logic; 10 | a: in std_logic_vector((Bits-1) downto 0); 11 | b: in std_logic_vector((Bits-1) downto 0); 12 | c_i: in std_logic ); 13 | end DIG_Sub; 14 | 15 | architecture Behavioral of DIG_Sub is 16 | signal temp : std_logic_vector(Bits downto 0); 17 | begin 18 | temp <= ('0' & a) - b - c_i; 19 | 20 | s <= temp((Bits-1) downto 0); 21 | c_o <= temp(Bits); 22 | end Behavioral; 23 | -------------------------------------------------------------------------------- /src/main/svg/exp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ./expicon.sh delete 3 | ./expicon.sh document-new-sub 4 | ./expicon.sh document-new 5 | ./expicon.sh document-open-new 6 | ./expicon.sh document-open 7 | ./expicon.sh document-save-as 8 | ./expicon.sh document-save 9 | ./expicon.sh help 10 | ./expicon.sh media-playback-start-2 11 | ./expicon.sh media-playback-start 12 | ./expicon.sh media-playback-start-T 13 | ./expicon.sh media-playback-stop 14 | ./expicon.sh media-seek-forward 15 | ./expicon.sh media-seek-forward-f 16 | ./expicon.sh media-skip-forward 17 | ./expicon.sh View-zoom-fit 18 | ./expicon.sh View-zoom-in 19 | ./expicon.sh View-zoom-out 20 | ./expicon.sh edit-redo 21 | ./expicon.sh edit-undo 22 | ./expicon.sh edit-copy 23 | ./expicon.sh measurement-graph 24 | ./expicon.sh dialog-error 25 | 26 | ./exptest.sh testFailed 27 | ./exptest.sh testPassed 28 | -------------------------------------------------------------------------------- /src/main/svg/expicon.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | inkscape $1.svg -w 28 -C -e ../resources/icons/$1.png 3 | inkscape $1.svg -w 56 -C -e ../resources/icons/$1_hi.png 4 | -------------------------------------------------------------------------------- /src/main/svg/exptest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | inkscape $1.svg -w 16 -C -e ../resources/icons/$1.png 3 | inkscape $1.svg -w 32 -C -e ../resources/icons/$1_hi.png 4 | -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/analyse/expression/NotTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.analyse.expression; 7 | 8 | import junit.framework.TestCase; 9 | 10 | import static de.neemann.digital.analyse.expression.Not.not; 11 | import static de.neemann.digital.analyse.expression.Variable.v; 12 | 13 | /** 14 | */ 15 | public class NotTest extends TestCase { 16 | 17 | public void testNot() throws Exception { 18 | assertEquals(Constant.ONE, not(Constant.ZERO)); 19 | assertEquals(Constant.ZERO, not(Constant.ONE)); 20 | 21 | Variable a = v("a"); 22 | assertEquals(a, not(not(a))); 23 | 24 | //assertEquals("¬a", not(a).toString()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/core/extern/handler/ProcessStarterTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.core.extern.handler; 7 | 8 | import de.neemann.digital.core.extern.ProcessStarter; 9 | import junit.framework.TestCase; 10 | 11 | public class ProcessStarterTest extends TestCase { 12 | 13 | public void testJoinStrings() { 14 | assertEquals(null, ProcessStarter.joinStrings(null,null)); 15 | assertEquals(null, ProcessStarter.joinStrings("","","")); 16 | assertEquals(null, ProcessStarter.joinStrings(" ","\n","\t")); 17 | assertEquals("Hello", ProcessStarter.joinStrings("Hello ","\n","\t")); 18 | assertEquals("Hello\nWorld", ProcessStarter.joinStrings("Hello ","\n","\tWorld")); 19 | } 20 | } -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/draw/graphics/ColorSchemeTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann. 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics; 7 | 8 | import junit.framework.TestCase; 9 | 10 | public class ColorSchemeTest extends TestCase { 11 | 12 | public void testCompleteness() { 13 | ColorScheme map = ColorScheme.COLOR_SCHEME.getDefault().getScheme(); 14 | for (ColorKey ck : ColorKey.values()) 15 | assertNotNull(map.getColor(ck)); 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/draw/graphics/GraphicSVGIndexTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics; 7 | 8 | import junit.framework.TestCase; 9 | 10 | /** 11 | */ 12 | public class GraphicSVGIndexTest extends TestCase { 13 | public void testFormatText() { 14 | GraphicSVG.TextStyle gs = new TextFormatSVG(); 15 | 16 | assertEquals("Z0", gs.format("Z_0", Style.NORMAL)); 17 | assertEquals("<a>", gs.format("", Style.NORMAL)); 18 | assertEquals("Z", gs.format("~Z", Style.NORMAL)); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/draw/graphics/GraphicSVGTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.graphics; 7 | 8 | import junit.framework.TestCase; 9 | 10 | /** 11 | */ 12 | public class GraphicSVGTest extends TestCase { 13 | public void testFormatText() throws Exception { 14 | GraphicSVG.TextStyle gs = new TextFormatSVG(); 15 | 16 | assertEquals("Z0", gs.format("Z0", Style.NORMAL)); 17 | assertEquals("<a>", gs.format("", Style.NORMAL)); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/draw/library/ResolveGenericsTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.draw.library; 7 | 8 | import junit.framework.TestCase; 9 | 10 | public class ResolveGenericsTest extends TestCase { 11 | 12 | public void testEscapeString() { 13 | check("Test", "Test"); 14 | check("\\\\", "\\"); 15 | check("\\n", "\n"); 16 | check("\\r", "\r"); 17 | check("\\t", "\t"); 18 | check("\\\"Test\\\"", "\"Test\""); 19 | } 20 | 21 | private void check(String expected, String found) { 22 | StringBuilder sb = new StringBuilder(); 23 | ResolveGenerics.escapeString(sb, found); 24 | assertEquals(expected, sb.toString()); 25 | } 26 | } -------------------------------------------------------------------------------- /src/test/java/de/neemann/digital/gui/components/EditorFactoryTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Helmut Neemann 3 | * Use of this source code is governed by the GPL v3 license 4 | * that can be found in the LICENSE file. 5 | */ 6 | package de.neemann.digital.gui.components; 7 | 8 | import de.neemann.digital.core.element.ElementAttributes; 9 | import de.neemann.digital.core.element.Keys; 10 | import junit.framework.TestCase; 11 | 12 | public class EditorFactoryTest extends TestCase { 13 | 14 | public void testKeyConstrains() { 15 | ElementAttributes attr= new ElementAttributes(); 16 | assertEquals(attr.get(Keys.INPUT_COUNT), attr.get(Keys.ADDR_BITS)); 17 | // see comments in EditorFactory$DataFieldEditor 18 | } 19 | } -------------------------------------------------------------------------------- /src/test/resources/dig/errorOrigin/main3.dig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | 7 | In 8 | 9 | 10 | 11 | 12 | Out 13 | 14 | 15 | 16 | 17 | midOk.dig 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/test/resources/dig/errorOrigin/main4.dig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | 7 | In 8 | 9 | 10 | 11 | 12 | Out 13 | 14 | 15 | 16 | 17 | And 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/test/resources/dig/external/ghdl/hdl/ghdlFile.vhdl: -------------------------------------------------------------------------------- 1 | LIBRARY ieee; 2 | USE ieee.std_logic_1164.all; 3 | USE ieee.std_logic_unsigned.all; 4 | 5 | entity add is 6 | port ( 7 | a: in std_logic_vector(3 downto 0); 8 | b: in std_logic_vector(3 downto 0); 9 | c_i: in std_logic; 10 | s: out std_logic_vector(3 downto 0); 11 | c_o: out std_logic ); 12 | end add; 13 | 14 | architecture add_arch of add is 15 | signal temp : std_logic_vector(4 downto 0); 16 | begin 17 | temp <= ('0' & a) + b + c_i; 18 | 19 | s <= temp(3 downto 0); 20 | c_o <= temp(4); 21 | end add_arch; 22 | -------------------------------------------------------------------------------- /src/test/resources/dig/external/verilog/verilogFile.v: -------------------------------------------------------------------------------- 1 | module add 2 | ( 3 | input [3:0] a, 4 | input [3:0] b, 5 | input c_i, 6 | output [3:0] s, 7 | output c_o 8 | ); 9 | wire [4:0] temp; 10 | 11 | assign temp = a + b + c_i; 12 | assign s = temp [3:0]; 13 | assign c_o = temp[4]; 14 | endmodule -------------------------------------------------------------------------------- /src/test/resources/dig/jarLib/pluginExample-1.0-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/dig/jarLib/pluginExample-1.0-SNAPSHOT.jar -------------------------------------------------------------------------------- /src/test/resources/dig/test/newRomManger/rom_A.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 1 3 | 2 4 | 3 5 | 4 6 | 5 7 | 6 8 | 7 9 | 8 10 | -------------------------------------------------------------------------------- /src/test/resources/dig/test/newRomManger/rom_B.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 9 3 | a 4 | b 5 | c 6 | d 7 | e 8 | f 9 | -------------------------------------------------------------------------------- /src/test/resources/dig/test/vhdl/romPreload/lut1.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 0 3 | 1 4 | 1 5 | 0 6 | 1 7 | 1 8 | 1 9 | 1 10 | -------------------------------------------------------------------------------- /src/test/resources/dig/test/vhdl/romPreload/lut2.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 0 3 | 1 4 | 1 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | -------------------------------------------------------------------------------- /src/test/resources/dig/testProgLoader.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | 55 3 | AA 4 | 56 5 | AB 6 | 7 | -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/de/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/de/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/en/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/en/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/es/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/es/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/fr/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/fr/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/it/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/it/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/pt/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/pt/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr00.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr01.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr02.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr03.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr04.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr05.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr06.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr07.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr08.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr09.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr10.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr11.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr12.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr13.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr14.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr20.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr21.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr22.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr23.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr24.png -------------------------------------------------------------------------------- /src/test/resources/docu/images/zh/scr25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/images/zh/scr25.png -------------------------------------------------------------------------------- /src/test/resources/docu/simsun.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hneemann/Digital/0fc1087e8aef407dffda4846e2b5f1311e9180e2/src/test/resources/docu/simsun.ttf -------------------------------------------------------------------------------- /src/test/resources/endianness/test.hex: -------------------------------------------------------------------------------- 1 | :100000000C9438000C9442000C9442000C94420072 2 | :100010000C9442000C9442000C9442000C94420058 3 | :100020000C9442000C9442000C9442000C94420048 4 | :100030000C9442000C9442000C9442000C94420038 5 | :100040000C9442000C9442000C9442000C94420028 6 | :100050000C9442000C9442000C9442000C94420018 7 | :100060000C9442000C9442000C9442000C94420008 8 | :1000700011241FBECFEFD0E1DEBFCDBF0E944400F0 9 | :100080000C944A000C9400008FEF84B986B18095DF 10 | :0800900085B9FCCFF894FFCF05 11 | :00000001FF -------------------------------------------------------------------------------- /src/test/resources/programs/fibonacci.hex: -------------------------------------------------------------------------------- 1 | v2.0 raw 2 | a0f 3 | 10e1 4 | 2be0 5 | 10e1 6 | af7 7 | 2bef 8 | 3d03 9 | 2e00 10 | 4400 11 | 3df6 12 | 10e1 13 | 2bed 14 | 1de 15 | 10e1 16 | 8002 17 | 320d 18 | 2102 19 | 3417 20 | 1001 21 | 10e1 22 | 2be0 23 | 10e1 24 | 801a 25 | 9f0 26 | 2bef 27 | 3df0 28 | ffff 29 | 31d0 30 | 8002 31 | 320d 32 | 1002 33 | 10e1 34 | 2be0 35 | 10e1 36 | 8026 37 | 9f0 38 | 2bef 39 | 3de4 40 | ffff 41 | 321d 42 | 201 43 | 1ed 44 | 2cde 45 | ce1 46 | 2cfe 47 | ce2 48 | 3b0f 49 | -------------------------------------------------------------------------------- /src/test/resources/testGAL/cupl/GAL22v10_Pin13.PLD: -------------------------------------------------------------------------------- 1 | Name GAL22v10_Pin13.PLD ; 2 | PartNo 00 ; 3 | Date 28.06.2016 ; 4 | Revision 01 ; 5 | Designer helmut.neemann ; 6 | Company unknown ; 7 | Assembly None ; 8 | Location unknown ; 9 | Device g22v10 ; 10 | 11 | ar = 'b'0 ; 12 | sp = 'b'0 ; 13 | 14 | /* inputs */ 15 | PIN 10 = A; 16 | PIN 11 = B; 17 | PIN 13 = C; 18 | 19 | /* outputs */ 20 | PIN 23 = Y; 21 | 22 | /* combinatorial logic */ 23 | Y = A & B & C; 24 | -------------------------------------------------------------------------------- /src/test/resources/testGAL/cupl/GAL22v10_Pin13.jed: -------------------------------------------------------------------------------- 1 |  2 | CUPL(WM) 5.0a Serial# 60008009 3 | Device g22v10 Library DLIB-h-40-1 4 | Created Tue Jun 28 09:00:51 2016 5 | Name GAL22v10_Pin13.PLD 6 | Partno 00 7 | Revision 01 8 | Date 28.06.2016 9 | Designer helmut.neemann 10 | Company unknown 11 | Assembly None 12 | Location unknown 13 | *QP24 14 | *QF5892 15 | *G0 16 | *F0 17 | *L00032 00000000000011111111111111111111 18 | *L00064 11111111111111111111111111111111 19 | *L00096 11111111111111111111111111110111 20 | *L00128 01010000000000000000000000000000 21 | *L05792 00000000000000001100000000000000 22 | *L05824 00000011000000110000001000000000 23 | *C0CA3 24 | *87C7 -------------------------------------------------------------------------------- /src/test/resources/testGAL/cupl/GALTest.PLD: -------------------------------------------------------------------------------- 1 | Name GALTest.PLD ; 2 | PartNo 00 ; 3 | Date 19.11.2016 ; 4 | Revision 01 ; 5 | Designer hneemann ; 6 | Company unknown ; 7 | Assembly None ; 8 | Location unknown ; 9 | Device g16v8a ; 10 | 11 | /* inputs */ 12 | PIN 2 = A_1; 13 | PIN 3 = A_2; 14 | PIN 4 = A_3; 15 | PIN 5 = A_4; 16 | PIN 6 = A_5; 17 | PIN 7 = A_6; 18 | PIN 8 = A_7; 19 | PIN 9 = A_8; 20 | 21 | /* outputs */ 22 | PIN 12 = Y_1; 23 | PIN 13 = Y_2; 24 | PIN 14 = Y_3; 25 | PIN 15 = Y_4; 26 | PIN 16 = Y_5; 27 | PIN 17 = Y_6; 28 | PIN 18 = Y_7; 29 | 30 | /* combinatorial logic */ 31 | Y_1 = A_1 & A_2; 32 | Y_2 = A_2 & A_3; 33 | Y_3 = A_3 & A_4; 34 | Y_4 = A_4 & A_5; 35 | Y_5 = A_5 & A_6; 36 | Y_6 = A_6 & A_7; 37 | Y_7 = A_7 & A_8; 38 | -------------------------------------------------------------------------------- /src/test/resources/toolchain/inc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Test content 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/test/resources/toolchain/inc2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | deep content 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/test/resources/toolchain/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | --------------------------------------------------------------------------------