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 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 |
5 | ?>module = moduleName ?>
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 |
2 | if (elem.inputBits > 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 |
19 | } else {
20 | generics[0] := "outputBits";
21 | moduleName = "DIG_BitExtenderSingle";
22 | -?>
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 |
2 | moduleName = "BitSel" + elem.'Selector Bits';
3 | Bits := 1 << elem.'Selector Bits';
4 | inRange := format("[%d:0]", Bits - 1);
5 | selRange := format("[%d:0]", elem.'Selector Bits' - 1);
6 | ?>
7 | module = moduleName ?> (
8 | input = inRange ?> in,
9 | input = selRange ?> sel,
10 | output out
11 | );
12 | assign out = in[sel];
13 | endmodule
14 |
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_BlockRAMDualPort.v:
--------------------------------------------------------------------------------
1 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 | generics[1] := "AddrBits";
5 |
6 | ?>module = moduleName ?>
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 |
2 | if (elem.Signed)
3 | moduleName = "CompSigned";
4 | else
5 | moduleName = "CompUnsigned";
6 |
7 | generics[0] := "Bits";
8 | ?>
9 | module = moduleName ?> #(
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 | - if (elem.Signed) { ?>
20 | assign \> = $signed(a) > $signed(b);
21 | assign \= = $signed(a) == $signed(b);
22 | assign \< = $signed(a) < $signed(b);
23 | - } else { ?>
24 | assign \> = a > b;
25 | assign \= = a == b;
26 | assign \< = a < b;
27 | - } ?>
28 | endmodule
29 |
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_Decoder.v:
--------------------------------------------------------------------------------
1 |
2 | moduleName = "Decoder" + elem.'Selector Bits';
3 | outCount := 1 << elem.'Selector Bits';
4 | selRange := format("[%d:0]", elem.'Selector Bits' - 1);
5 | ?>
6 | module = moduleName ?> (
7 | - for (i:=0; i
8 | output out_= i ?>,
9 | - } ?>
10 | input = selRange ?> sel
11 | );
12 | - for (i:=0; i
13 | assign out_= i ?> = (sel == = format("%d'h%x", elem.'Selector Bits', i) ?>)? 1'b1 : 1'b0;
14 | - } ?>
15 | endmodule
16 |
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_Driver.v:
--------------------------------------------------------------------------------
1 |
2 | if (elem.Bits = 1) {
3 | moduleName = "Driver";
4 | export bitRange := "";
5 | export zval := "1'bz";
6 | }
7 | else {
8 | generics[0] := "Bits";
9 | moduleName = "DriverBus";
10 | export bitRange := "[(Bits-1):0] ";
11 | export zval := "{Bits{1'bz}}";
12 | }
13 | ?>
14 | module = moduleName ?>
15 | - if (elem.Bits > 1) { ?>#(
16 | parameter Bits = 2
17 | )
18 | - } ?>
19 | (
20 | input = bitRange ?>in,
21 | input sel,
22 | output = bitRange ?>out
23 | );
24 | assign out = (sel == 1'b1)? if (elem.invertDriverOutput) { ?>~ - } ?>in : = zval ?>;
25 | endmodule
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_DriverInvSel.v:
--------------------------------------------------------------------------------
1 |
2 | if (elem.Bits = 1) {
3 | moduleName = "DriverInv";
4 | export bitRange := "";
5 | export zval := "1'bz";
6 | }
7 | else {
8 | generics[0] := "Bits";
9 | moduleName = "DriverInvBus";
10 | export bitRange := "[(Bits-1):0] ";
11 | export zval := "{Bits{1'bz}}";
12 | }
13 | ?>
14 | module = moduleName ?>
15 | - if (elem.Bits > 1) { ?>#(
16 | parameter Bits = 2
17 | )
18 | - } ?>
19 | (
20 | input = bitRange ?>in,
21 | input sel,
22 | output = bitRange ?>out
23 | );
24 | assign out = (sel == 1'b0)? if (elem.invertDriverOutput) { ?>~ - } ?>in : = zval ?>;
25 | endmodule
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_External.v:
--------------------------------------------------------------------------------
1 | =elem.Code;
2 |
3 | moduleName=elem.Label;
4 |
5 | if (elem.applicationType!="IVERILOG")
6 | panic("err_canOnlyExportExternalVerilog");
7 |
8 | ?>
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_ExternalFile.v:
--------------------------------------------------------------------------------
1 | =loadFile(elem.CodeFile);
2 |
3 | moduleName=elem.Label;
4 |
5 | if (elem.applicationType!="IVERILOG")
6 | panic("err_canOnlyExportExternalVerilog");
7 |
8 | ?>
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_JK_FF.v:
--------------------------------------------------------------------------------
1 |
2 | generics[0] := "Default";
3 |
4 | ?>module = moduleName ?>
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 |
2 | generics[0] := "Default";
3 |
4 | ?>module = moduleName ?>
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 |
2 |
3 | if (elem.Signed)
4 | moduleName="DIG_Mul_signed";
5 | else
6 | moduleName="DIG_Mul_unsigned";
7 |
8 | generics[0] := "Bits";
9 | ?>
10 | module = moduleName ?> #(
11 | parameter Bits = 1
12 | )
13 | (
14 | if (elem.Signed) {?>
15 | input signed [(Bits-1):0] a,
16 | input signed [(Bits-1):0] b,
17 | output signed [(Bits*2-1):0] mul
18 | } else { ?>
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 |
2 | generics[0] := "Bits";
3 | ?>
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 |
2 | if (elem.Bits > 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 = moduleName ?>
13 | if (elem.Bits > 1) { ?>
14 | #(
15 | parameter Bits = 2
16 | )
17 | } ?>(
18 | inout = bitRange ?>pin,
19 | input oe,
20 | input = bitRange ?>wr,
21 | output = bitRange ?>rd
22 | );
23 |
24 | assign pin = oe ? wr : = zval ?>;
25 | assign rd = oe ? wr : pin ;
26 | endmodule
27 |
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_PriorityEncoder.v:
--------------------------------------------------------------------------------
1 |
2 | moduleName = "PriorityEncoder" + elem.'Selector Bits';
3 | inCount := 1 << elem.'Selector Bits';
4 | selRange := format("[%d:0]", elem.'Selector Bits' - 1);
5 | -?>
6 | module = moduleName ?> (
7 | - for (n:=0; n
8 | input in= n ?>,
9 | - } ?>
10 | output reg = selRange ?> num,
11 | output any
12 | );
13 | always @ (*) begin
14 | for (n:=inCount-1; n>0; n--) { -?>
15 | if (in= n ?> == 1'b1)
16 | num = = format("%d'h%x", elem.'Selector Bits', n) ?>;
17 | else= " " ?>
18 | - } ?>
19 | num = = format("%d'h0", elem.'Selector Bits') ?>;
20 | end
21 |
22 | assign any =
23 | for (n:=0; n;
27 | endmodule
28 |
--------------------------------------------------------------------------------
/src/main/resources/verilog/DIG_RAMAsync.v:
--------------------------------------------------------------------------------
1 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 | generics[1] := "AddrBits";
5 |
6 | ?>module = moduleName ?>
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 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 | generics[1] := "AddrBits";
5 |
6 | ?>module = moduleName ?>
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 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 | generics[1] := "AddrBits";
5 |
6 | ?>module = moduleName ?>
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 |
2 | if (elem.Bits = 1) {
3 | moduleName = "DIG_Register";
4 | export bitRange := "";
5 | }
6 | else {
7 | moduleName = "DIG_Register_BUS";
8 | generics[0] := "Bits";
9 | export bitRange := "[(Bits - 1):0]";
10 | }
11 | ?>
12 | module = moduleName ?>
13 | - if (elem.Bits > 1) {?> #(
14 | parameter Bits = 1
15 | )
16 | - } ?>
17 | (
18 | input C,
19 | input en,
20 | input = bitRange ?>D,
21 | output = bitRange ?>Q
22 | );
23 |
24 | reg = bitRange ?> 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 |
2 | // Module instantiation parameters
3 | generics[0] := "Bits";
4 | generics[1] := "AddrBits";
5 |
6 | ?>module = moduleName ?>
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 |
2 | generics[0] := "invertOutput";
3 | ?>
4 | module = moduleName ?>
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 |
2 | generics[0] := "Bits";
3 | ?>
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 ); vhdl.registerGeneric("Bits");?>
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 |
4 | entityName:="BIT_SEL_"+elem.'Selector Bits';
5 | Bits:=1<
7 | entity =entityName?> is
8 | port (
9 | p_out: out std_logic;
10 | p_in: in = vhdl.type(Bits)?>;
11 | sel: in = vhdl.type(elem.'Selector Bits')?> );
12 | end =entityName?>;
13 |
14 | architecture Behavioral of =entityName?> is
15 | begin
16 | with sel select
17 | p_out <=
18 | - for (n:=0;n
19 | p_in(=n?>) when = vhdl.value(n, elem.'Selector Bits') ?>,
20 | - } ?>
21 | =vhdl.zero(elem.Bits)?> when others;
22 | end Behavioral;
23 |
--------------------------------------------------------------------------------
/src/main/resources/vhdl/DIG_Decoder.tem:
--------------------------------------------------------------------------------
1 | LIBRARY ieee;
2 | USE ieee.std_logic_1164.all;
3 |
4 | entityName:="DECODER_"+elem.'Selector Bits';
5 | outputs:=1<
7 | entity =entityName?> is
8 | port (
9 | - for (i:=0;i
10 | out_=i?>: out std_logic;
11 | - } ?>
12 | sel: in = vhdl.type(elem.'Selector Bits')?> );
13 | end =entityName?>;
14 |
15 | architecture Behavioral of =entityName?> is
16 | begin
17 | - for (i:=0;i
18 | out_=i?> <= '1' when sel = = vhdl.value(i,elem.'Selector Bits')?> 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 |
4 | if (elem.Bits=1)
5 | export entityName:="DRIVER_INV_GATE";
6 | else
7 | export entityName:="DRIVER_INV_GATE_BUS";
8 | ?>
9 | entity =entityName?> is
10 | 1) {?>generic ( Bits : integer ); vhdl.registerGeneric("Bits"); }?>
11 | port (
12 | p_out: out = vhdl.genericType(elem.Bits)?>;
13 | p_in: in = vhdl.genericType(elem.Bits)?>;
14 | sel: in std_logic );
15 | end =entityName?>;
16 |
17 | architecture Behavioral of =entityName?> is
18 | begin
19 | p_out <= if (elem.invertDriverOutput) { ?>NOT } ?>p_in when sel = '1' else if (elem.Bits=1) { ?>'Z'} else {?>(others => 'Z') } ?>;
20 | end Behavioral;
21 |
--------------------------------------------------------------------------------
/src/main/resources/vhdl/DIG_DriverInvSel.tem:
--------------------------------------------------------------------------------
1 | LIBRARY ieee;
2 | USE ieee.std_logic_1164.all;
3 |
4 | if (elem.Bits=1)
5 | export entityName:="DRIVER_INV_GATE";
6 | else
7 | export entityName:="DRIVER_INV_GATE_BUS";
8 | ?>
9 | entity =entityName?> is
10 | 1) {?>generic ( Bits : integer ); vhdl.registerGeneric("Bits"); }?>
11 | port (
12 | p_out: out = vhdl.genericType(elem.Bits)?>;
13 | p_in: in = vhdl.genericType(elem.Bits)?>;
14 | sel: in std_logic );
15 | end =entityName?>;
16 |
17 | architecture Behavioral of =entityName?> is
18 | begin
19 | p_out <= if (elem.invertDriverOutput) { ?>NOT } ?>p_in when sel = '0' else if (elem.Bits=1) { ?>'Z'} else {?>(others => 'Z') } ?>;
20 | end Behavioral;
21 |
--------------------------------------------------------------------------------
/src/main/resources/vhdl/DIG_External.tem:
--------------------------------------------------------------------------------
1 | =elem.Code;
2 |
3 | entityName:=elem.Label;
4 |
5 | if (elem.applicationType!="GHDL")
6 | panic("err_canOnlyExportExternalVHDL");
7 |
8 | ?>
--------------------------------------------------------------------------------
/src/main/resources/vhdl/DIG_ExternalFile.tem:
--------------------------------------------------------------------------------
1 | =loadFile(elem.CodeFile);
2 |
3 | entityName:=elem.Label;
4 |
5 | if (elem.applicationType!="GHDL")
6 | panic("err_canOnlyExportExternalVHDL");
7 |
8 | ?>
--------------------------------------------------------------------------------
/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); vhdl.registerGeneric("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 |
6 | if (elem.Signed)
7 | export entityName:="DIG_Mul_signed";
8 | else
9 | export entityName:="DIG_Mul_unsigned";
10 | ?>
11 |
12 | entity =entityName?> is
13 | generic ( Bits: integer ); vhdl.registerGeneric("Bits");?>
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 =entityName?>;
19 |
20 | architecture Behavioral of =entityName?> is
21 | begin
22 | if (elem.Signed) {?>
23 | mul <= std_logic_vector(signed(a) * signed(b));
24 | } else { ?>
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 ); vhdl.registerGeneric("Bits");?>
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 |
4 | entityName:="PRIORITY_GATE_"+elem.'Selector Bits';
5 | inputs:=1<
7 | entity =entityName?> is
8 | port (
9 | num: out = vhdl.type(elem.'Selector Bits')?>;
10 | any: out std_logic;
11 | - for (n:=0;n
12 | in=n?>: in std_logic;
13 | - } ?>
14 | end =entityName?>;
15 |
16 | architecture Behavioral of =entityName?> is
17 | begin
18 | num <=
19 | - for (n:=inputs-1;n>0;n--) { ?>
20 | = vhdl.value(n,elem.'Selector Bits')?> when in=n?> = '1' else
21 | - } ?>
22 | = vhdl.value(0,elem.'Selector Bits')?> ;
23 | any <=
24 | for (n:=0;n;
28 | end Behavioral;
29 |
--------------------------------------------------------------------------------
/src/main/resources/vhdl/DIG_Register.tem:
--------------------------------------------------------------------------------
1 | LIBRARY ieee;
2 | USE ieee.std_logic_1164.all;
3 |
4 | if (elem.Bits=1)
5 | export entityName:="DIG_Register";
6 | else
7 | export entityName:="DIG_Register_BUS";
8 | ?>
9 | entity =entityName?> is
10 | if (elem.Bits>1) {?>generic ( Bits: integer ); vhdl.registerGeneric("Bits"); }?>
11 | port (
12 | Q: out = vhdl.genericType(elem.Bits)?>;
13 | D: in = vhdl.genericType(elem.Bits)?>;
14 | C: in std_logic;
15 | en: in std_logic );
16 | end =entityName?>;
17 |
18 | architecture Behavioral of =entityName?> is
19 | signal state : = vhdl.genericType(elem.Bits)?> := = vhdl.zero(elem.Bits)?>;
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 ); vhdl.registerGeneric("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 ); vhdl.registerGeneric("Bits");?>
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 |
--------------------------------------------------------------------------------