diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java index 73de69512..3d2a307c7 100644 --- a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java +++ b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java @@ -18,7 +18,7 @@ public class ATF1502CuplExporter extends Gal16v8CuplExporter { * Creates a new project name */ public ATF1502CuplExporter() { - this(System.getProperty("user.name"), new Date()); + this(System.getProperty("user.name"), new Date(), "f1502ispplcc44"); } /** @@ -27,8 +27,8 @@ public class ATF1502CuplExporter extends Gal16v8CuplExporter { * @param username user name * @param date date */ - public ATF1502CuplExporter(String username, Date date) { - super(username, date, "f1502ispplcc44", new PinMap() + public ATF1502CuplExporter(String username, Date date, String type) { + super(username, date, type, new PinMap() .setAvailBidirectional(4, 5, 6, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 37, 38, 39, 40)); diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504CuplExporter.java b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504CuplExporter.java new file mode 100644 index 000000000..9e89dc65e --- /dev/null +++ b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504CuplExporter.java @@ -0,0 +1,19 @@ +package de.neemann.digital.builder.ATF1502; + +import java.util.Date; + +/** + * Creates a CUPL file + * + * @author hneemann + */ +public class ATF1504CuplExporter extends ATF1502CuplExporter { + + /** + * Creates a new project name + */ + public ATF1504CuplExporter() { + super(System.getProperty("user.name"), new Date(), "f1504ispplcc44"); + } + +} diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504TT2Exporter.java b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504TT2Exporter.java new file mode 100644 index 000000000..a99706d2a --- /dev/null +++ b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1504TT2Exporter.java @@ -0,0 +1,19 @@ +package de.neemann.digital.builder.ATF1502; + +/** + * Creates a TT2 file suitable for the ATF1502 + * + * @author hneemann + */ +public class ATF1504TT2Exporter extends ATF1502TT2Exporter { + + /** + * Creates a new project name + */ + public ATF1504TT2Exporter() { + super(); + setDevice("f1502ispplcc44"); + } + + +} diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/CreateCHN.java b/src/main/java/de/neemann/digital/builder/ATF1502/CreateCHN.java index 082d5940c..62ea1c7b0 100644 --- a/src/main/java/de/neemann/digital/builder/ATF1502/CreateCHN.java +++ b/src/main/java/de/neemann/digital/builder/ATF1502/CreateCHN.java @@ -11,6 +11,18 @@ import java.io.*; * Created by hneemann on 10.03.17. */ public class CreateCHN implements ExpressionToFileExporter.PostProcess { + + private final String device; + + /** + * create a new instance + * + * @param device the device name used in the chn file + */ + public CreateCHN(String device) { + this.device = device; + } + @Override public File execute(File file) throws IOException { File chnFile = Main.checkSuffix(file, "chn"); @@ -18,7 +30,7 @@ public class CreateCHN implements ExpressionToFileExporter.PostProcess { try (Writer chn = new OutputStreamWriter(new FileOutputStream(chnFile), "UTF-8")) { chn.write("1 4 1 0 \r\n" + "\r\n" - + "ATF1502AS\r\n" + + device + "\r\n" + "10\r\n" + "1\r\n"); chn.write(file.getPath()); diff --git a/src/main/java/de/neemann/digital/builder/tt2/StartFitter.java b/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java similarity index 78% rename from src/main/java/de/neemann/digital/builder/tt2/StartFitter.java rename to src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java index 8f5910c79..82ef0956a 100644 --- a/src/main/java/de/neemann/digital/builder/tt2/StartFitter.java +++ b/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java @@ -15,7 +15,7 @@ import java.util.ArrayList; * Starts a fitter to create a JEDEC file. * Created by hneemann on 10.03.17. */ -public class StartFitter implements ExpressionToFileExporter.PostProcess { +public class StartATF1502Fitter implements ExpressionToFileExporter.PostProcess { private final JDialog parent; private final File fitterExe; @@ -24,9 +24,19 @@ public class StartFitter implements ExpressionToFileExporter.PostProcess { * * @param parent the parent dialog */ - public StartFitter(JDialog parent) { + public StartATF1502Fitter(JDialog parent) { + this(parent, Settings.getInstance().get(Keys.SETTINGS_ATF1502_FITTER)); + } + + /** + * Creates a new instance + * + * @param parent the parent dialog + * @param fitterExe fitter executable + */ + public StartATF1502Fitter(JDialog parent, File fitterExe) { this.parent = parent; - this.fitterExe = Settings.getInstance().get(Keys.SETTINGS_ATF1502_FITTER); + this.fitterExe = fitterExe; } @Override diff --git a/src/main/java/de/neemann/digital/builder/tt2/StartATF1504Fitter.java b/src/main/java/de/neemann/digital/builder/tt2/StartATF1504Fitter.java new file mode 100644 index 000000000..657ebdf9a --- /dev/null +++ b/src/main/java/de/neemann/digital/builder/tt2/StartATF1504Fitter.java @@ -0,0 +1,26 @@ +package de.neemann.digital.builder.tt2; + +import de.neemann.digital.core.element.Keys; +import de.neemann.digital.gui.Settings; + +import javax.swing.*; +import java.io.File; + +/** + * StartATF1504Fitter start the fitter for ATF1504 + * Created by hneemann on 12.03.17. + */ +public class StartATF1504Fitter extends StartATF1502Fitter { + /** + * Creates a new intance + * + * @param parent the parent dialog + */ + public StartATF1504Fitter(JDialog parent) { + super(parent, getATF1504(Settings.getInstance().get(Keys.SETTINGS_ATF1502_FITTER))); + } + + private static File getATF1504(File file) { + return new File(file.getParentFile(), "fit1504.exe"); + } +} diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index 6b579a28c..44138f774 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -15,9 +15,7 @@ import de.neemann.digital.analyse.expression.modify.NOr; import de.neemann.digital.analyse.expression.modify.TwoInputs; import de.neemann.digital.analyse.format.TruthTableFormatterLaTeX; import de.neemann.digital.analyse.quinemc.BoolTableByteArray; -import de.neemann.digital.builder.ATF1502.ATF1502CuplExporter; -import de.neemann.digital.builder.ATF1502.ATF1502TT2Exporter; -import de.neemann.digital.builder.ATF1502.CreateCHN; +import de.neemann.digital.builder.ATF1502.*; import de.neemann.digital.builder.*; import de.neemann.digital.builder.Gal16v8.Gal16v8CuplExporter; import de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter; @@ -25,7 +23,8 @@ import de.neemann.digital.builder.Gal22v10.Gal22v10CuplExporter; import de.neemann.digital.builder.Gal22v10.Gal22v10JEDECExporter; import de.neemann.digital.builder.circuit.CircuitBuilder; import de.neemann.digital.builder.jedec.FuseMapFillerException; -import de.neemann.digital.builder.tt2.StartFitter; +import de.neemann.digital.builder.tt2.StartATF1502Fitter; +import de.neemann.digital.builder.tt2.StartATF1504Fitter; import de.neemann.digital.draw.elements.Circuit; import de.neemann.digital.draw.shapes.ShapeFactory; import de.neemann.digital.gui.Main; @@ -441,12 +440,31 @@ public class TableDialog extends JDialog { public void actionPerformed(ActionEvent actionEvent) { createHardware( new ExpressionToFileExporter(new ATF1502TT2Exporter()) - .addProcessingStep(new StartFitter(TableDialog.this)) - .addProcessingStep(new CreateCHN()), filename, "tt2"); + .addProcessingStep(new StartATF1502Fitter(TableDialog.this)) + .addProcessingStep(new CreateCHN("ATF1502AS")), filename, "tt2"); } }.setToolTip(Lang.get("menu_table_createTT2_tt")).createJMenuItem()); hardware.add(atf1502); + JMenu atf1504 = new JMenu("ATF1504"); + atf1504.add(new ToolTipAction(Lang.get("menu_table_createCUPL")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + createCUPL(new ATF1504CuplExporter()); + } + }.setToolTip(Lang.get("menu_table_createCUPL_tt")).createJMenuItem()); + atf1504.add(new ToolTipAction(Lang.get("menu_table_createTT2")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + createHardware( + new ExpressionToFileExporter(new ATF1504TT2Exporter()) + .addProcessingStep(new StartATF1504Fitter(TableDialog.this)) + .addProcessingStep(new CreateCHN("ATF1504AS")), filename, "tt2"); + } + }.setToolTip(Lang.get("menu_table_createTT2_tt")).createJMenuItem()); + hardware.add(atf1504); + + createMenu.add(hardware); diff --git a/src/test/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporterTest.java b/src/test/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporterTest.java index 553f37b1a..a2e54815d 100644 --- a/src/test/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporterTest.java +++ b/src/test/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporterTest.java @@ -24,7 +24,7 @@ public class ATF1502CuplExporterTest extends TestCase { Expression y0s = not(y0); Expression y1s = or(and(not(y0), y1), and(y0, not(y1))); - ATF1502CuplExporter ce = new ATF1502CuplExporter("user", new Date(0)); + ATF1502CuplExporter ce = new ATF1502CuplExporter("user", new Date(0), "f1502ispplcc44"); ce.setProjectName("test"); ce.getBuilder() .addSequential("Y_0", y0s)