diff --git a/.idea/misc.xml b/.idea/misc.xml index bfbb0ff..e0844bc 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/programs/fill.mia b/programs/fill.mia index f7ce768..d9ca8c2 100644 --- a/programs/fill.mia +++ b/programs/fill.mia @@ -12,3 +12,4 @@ Num: word 522 +s \ No newline at end of file diff --git a/programs/test.mia b/programs/test.mia new file mode 100644 index 0000000..e69de29 diff --git a/src/Anzeige.java b/src/Anzeige.java index 5f560d6..1e8568d 100644 --- a/src/Anzeige.java +++ b/src/Anzeige.java @@ -13,11 +13,7 @@ import com.apple.eawt.AppEvent.OpenFilesEvent; import com.apple.eawt.AppEvent.QuitEvent; */ -import com.formdev.flatlaf.FlatDarkLaf; -import com.formdev.flatlaf.FlatIntelliJLaf; import com.formdev.flatlaf.FlatLightLaf; -import com.formdev.flatlaf.FlatPropertiesLaf; -import javafx.scene.input.KeyCode; import res.R; import java.awt.event.ActionEvent; @@ -227,7 +223,7 @@ void FenstereintragEntfernen(int var1) { this.windowsMenu.getItem(var1 + 3).setText(var2.TitelGeben()); } - void Aktivieren() { + void show() { if (!this.window.isVisible()) { this.window.setVisible(true); } @@ -235,7 +231,7 @@ void Aktivieren() { this.window.toFront(); } - void Ausblenden() { + void hide() { this.window.setVisible(false); } @@ -254,7 +250,7 @@ class FensterAktion implements ActionListener { } public void actionPerformed(ActionEvent var1) { - this.anzeige.Aktivieren(); + this.anzeige.show(); } } } diff --git a/src/AssemblerAnzeige.java b/src/AssemblerAnzeige.java index 1c8f233..415a4dc 100644 --- a/src/AssemblerAnzeige.java +++ b/src/AssemblerAnzeige.java @@ -3,6 +3,8 @@ // (powered by Fernflower decompiler) // +import res.R; + import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; @@ -59,11 +61,11 @@ public void actionPerformed(ActionEvent var1) { public void actionPerformed(ActionEvent var1) { } }); - JMenuItem var1 = new JMenuItem("Ausschneiden", 88); + JMenuItem var1 = new JMenuItem(R.getResources().getString("edit_menu_cut"), 88); var1.setAccelerator(KeyStroke.getKeyStroke(88, 256)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Kopieren", 67); + var1 = new JMenuItem(R.getResources().getString("edit_menu_copy"), 67); var1.setAccelerator(KeyStroke.getKeyStroke(67, 256)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { @@ -71,11 +73,11 @@ public void actionPerformed(ActionEvent var1) { } }); this.editMenu.add(var1); - var1 = new JMenuItem("Einfügen", 86); + var1 = new JMenuItem(R.getResources().getString("edit_menu_paste"), 86); var1.setAccelerator(KeyStroke.getKeyStroke(86, 256)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Alles auswählen", 65); + var1 = new JMenuItem(R.getResources().getString("edit_menu_select_all"), 65); var1.setAccelerator(KeyStroke.getKeyStroke(65, 256)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { diff --git a/src/Kontrolleur.java b/src/Controller.java similarity index 71% rename from src/Kontrolleur.java rename to src/Controller.java index 224b945..5da8b94 100644 --- a/src/Kontrolleur.java +++ b/src/Controller.java @@ -8,29 +8,31 @@ import model.SpeicherLesen; import model.minilanguage.ParserEinfach; import model.minilanguage.ParserErweitert; +import res.R; -class Kontrolleur implements KontrolleurInterface { +class Controller implements KontrolleurInterface { private Cpu cpu; - private Cpu cpuEinfach; + private Cpu cpuSimple; private Cpu cpuDetail; - private FensterVerwaltung verwaltung; + private WindowManager windowManager; private boolean erweitert; - Kontrolleur(Cpu cpuSimple, Cpu cpuDetailed) { - this.cpuEinfach = cpuSimple; - this.cpuDetail = cpuDetailed; - this.cpu = cpuDetailed; - this.verwaltung = null; + Controller(Cpu cpuSimple, Cpu cpuDetail) { + this.cpuSimple = cpuSimple; + this.cpuDetail = cpuDetail; + this.cpu = cpuDetail; + this.windowManager = null; this.erweitert = false; } - void VerwaltungSetzen(FensterVerwaltung var1) { - this.verwaltung = var1; - var1.CpuAnzeigeWählen(true, false); + void setWindowManager(WindowManager manager) { + this.windowManager = manager; + + manager.setCpuDisplayMode(true, false); } public void CpuHexaSetzen(boolean var1) { - this.cpuEinfach.HexaSetzen(var1); + this.cpuSimple.HexaSetzen(var1); this.cpuDetail.HexaSetzen(var1); } @@ -46,6 +48,7 @@ public boolean assemble(String assemblyText, Editor editor) { if (fehlerVerwaltung.FehlerAufgetreten()) { editor.FehlerAnzeigen(fehlerVerwaltung.FehlertextMelden(), fehlerVerwaltung.FehlerpositionMelden()); } else { + editor.displayStatusMessage(R.getResources().getString("editor_assembly_success")); this.cpu.ZurückSetzen(); } @@ -77,7 +80,7 @@ public boolean AssemblertextZeigen(String var1, Editor var2) { var2.FehlerAnzeigen(var3.FehlertextMelden(), var3.FehlerpositionMelden()); } else { AssemblerAnzeige var4 = new AssemblerAnzeige(this, var5); - this.verwaltung.EditorEintragen(var4); + this.windowManager.EditorEintragen(var4); } return !var3.FehlerAufgetreten(); @@ -105,55 +108,55 @@ public void MikroSchritt() { public void NeuAusführen() { Editor editor = new Editor(this); - this.verwaltung.EditorEintragen(editor); - editor.Aktivieren(); + this.windowManager.EditorEintragen(editor); + editor.show(); } public void ÖffnenAusführen() { Editor editor = new Editor(this); - this.verwaltung.EditorEintragen(editor); + this.windowManager.EditorEintragen(editor); editor.DateiLesen(); } public void ÖffnenAusführen(String path) { Editor editor = new Editor(this); - this.verwaltung.EditorEintragen(editor); + this.windowManager.EditorEintragen(editor); editor.DateiLesen(path); } public void SchließenAusführen(Anzeige var1) { - this.verwaltung.EditorAustragen(var1); + this.windowManager.EditorAustragen(var1); } public void FensterTitelÄndernWeitergeben(Anzeige var1) { - this.verwaltung.EditorTitelÄndern(var1); + this.windowManager.EditorTitelÄndern(var1); } public void CpuFensterAuswählen() { - this.verwaltung.CpuFensterAuswählen(); + this.windowManager.CpuFensterAuswählen(); } public void SpeicherFensterAuswählen() { - this.verwaltung.SpeicherFensterAuswählen(); + this.windowManager.SpeicherFensterAuswählen(); } public void EinfacheDarstellungAnzeigen() { - this.cpu.Übertragen(this.cpuEinfach); - this.cpu = this.cpuEinfach; - this.verwaltung.CpuAnzeigeWählen(false, this.erweitert); + this.cpu.Übertragen(this.cpuSimple); + this.cpu = this.cpuSimple; + this.windowManager.setCpuDisplayMode(false, this.erweitert); } public void DetailDarstellungAnzeigen() { this.cpu.Übertragen(this.cpuDetail); this.cpu = this.cpuDetail; - this.verwaltung.CpuAnzeigeWählen(true, this.erweitert); + this.windowManager.setCpuDisplayMode(true, this.erweitert); } public void ErweiterungenEinschalten(boolean var1) { this.erweitert = var1; this.cpu.ErweitertSetzen(var1); this.cpu.ZurückSetzen(); - this.verwaltung.CpuAnzeigeWählen(this.cpu == this.cpuDetail, this.erweitert); + this.windowManager.setCpuDisplayMode(this.cpu == this.cpuDetail, this.erweitert); } public void ZeitschrankeSetzen(int var1) { @@ -161,7 +164,7 @@ public void ZeitschrankeSetzen(int var1) { } public void BeendenAusführen() { - this.verwaltung.BeendenMitteilen(); + this.windowManager.BeendenMitteilen(); System.exit(0); } } diff --git a/src/CpuAnzeige.java b/src/CpuDisplay.java similarity index 96% rename from src/CpuAnzeige.java rename to src/CpuDisplay.java index 3509365..cc21fd4 100644 --- a/src/CpuAnzeige.java +++ b/src/CpuDisplay.java @@ -14,7 +14,7 @@ import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; -class CpuAnzeige extends Anzeige implements CpuBeobachter { +class CpuDisplay extends Anzeige implements CpuBeobachter { private JLabel labelA; private JLabel labelPC; private JLabel labelIR1; @@ -43,7 +43,7 @@ class CpuAnzeige extends Anzeige implements CpuBeobachter { protected JButton einzelButton; JCheckBoxMenuItem erweiterungenItem; - CpuAnzeige(KontrolleurInterface var1) { + CpuDisplay(KontrolleurInterface var1) { super(var1); } @@ -187,7 +187,7 @@ protected void initLayout() { this.window.add(this.ausfuehrenButton); this.ausfuehrenButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.Ausführen(); + CpuDisplay.this.controller.Ausführen(); } }); this.einzelButton = new JButton("Einzelschritt"); @@ -196,7 +196,7 @@ public void actionPerformed(ActionEvent var1) { this.window.add(this.einzelButton); this.einzelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.EinzelSchritt(); + CpuDisplay.this.controller.EinzelSchritt(); } }); @@ -408,7 +408,7 @@ protected void initMenus() { var1.setAccelerator(KeyStroke.getKeyStroke(69, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.EinfacheDarstellungAnzeigen(); + CpuDisplay.this.controller.EinfacheDarstellungAnzeigen(); } }); this.toolsMenu.add(var1); @@ -416,7 +416,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(68, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.DetailDarstellungAnzeigen(); + CpuDisplay.this.controller.DetailDarstellungAnzeigen(); } }); this.toolsMenu.add(var1); @@ -425,7 +425,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(65, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - Zeitschranke.show(CpuAnzeige.this.controller); + SetTimeoutDialog.show(CpuDisplay.this.controller); } }); this.toolsMenu.add(var1); @@ -434,7 +434,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(82, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.ZurückSetzen(); + CpuDisplay.this.controller.ZurückSetzen(); } }); this.toolsMenu.add(var1); @@ -444,7 +444,7 @@ public void actionPerformed(ActionEvent var1) { this.erweiterungenItem.setSelected(false); this.erweiterungenItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeige.this.controller.ErweiterungenEinschalten(CpuAnzeige.this.erweiterungenItem.isSelected()); + CpuDisplay.this.controller.ErweiterungenEinschalten(CpuDisplay.this.erweiterungenItem.isSelected()); } }); this.toolsMenu.add(this.erweiterungenItem); diff --git a/src/CpuAnzeigeErweitert.java b/src/CpuExtendedDisplay.java similarity index 97% rename from src/CpuAnzeigeErweitert.java rename to src/CpuExtendedDisplay.java index f80ea7e..5d7df5e 100644 --- a/src/CpuAnzeigeErweitert.java +++ b/src/CpuExtendedDisplay.java @@ -6,7 +6,7 @@ import javax.swing.JLabel; import javax.swing.border.LineBorder; -class CpuAnzeigeErweitert extends CpuAnzeige { +class CpuExtendedDisplay extends CpuDisplay { private JLabel labelSP; private JLabel labelAdr4; private JLabel labelAdr5; @@ -14,7 +14,7 @@ class CpuAnzeigeErweitert extends CpuAnzeige { private JLabel labelMem5; private JLabel spLabel; - CpuAnzeigeErweitert(KontrolleurInterface controller) { + CpuExtendedDisplay(KontrolleurInterface controller) { super(controller); } diff --git a/src/CpuAnzeigeDetail.java b/src/CpuGraphicalDisplay.java similarity index 90% rename from src/CpuAnzeigeDetail.java rename to src/CpuGraphicalDisplay.java index cde2fc4..0879713 100644 --- a/src/CpuAnzeigeDetail.java +++ b/src/CpuGraphicalDisplay.java @@ -12,13 +12,13 @@ import java.awt.event.ActionListener; import javax.swing.*; -class CpuAnzeigeDetail extends Anzeige implements CpuBeobachter { +class CpuGraphicalDisplay extends Anzeige implements CpuBeobachter { private CpuBild bild; private CpuBildGroß bildgross; private JPanel content; private JCheckBoxMenuItem erweiterungenItem; - CpuAnzeigeDetail(KontrolleurInterface var1) { + CpuGraphicalDisplay(KontrolleurInterface var1) { super(var1); } @@ -39,21 +39,21 @@ protected void initLayout() { var1.add(var2); var2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.Ausführen(); + CpuGraphicalDisplay.this.controller.Ausführen(); } }); var2 = new JButton(R.getResources().getString("cpu_step")); var1.add(var2); var2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.EinzelSchritt(); + CpuGraphicalDisplay.this.controller.EinzelSchritt(); } }); var2 = new JButton(R.getResources().getString("cpu_micro_step")); var1.add(var2); var2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.MikroSchritt(); + CpuGraphicalDisplay.this.controller.MikroSchritt(); } }); this.content.doLayout(); @@ -109,7 +109,7 @@ protected void initMenus() { var1.setAccelerator(KeyStroke.getKeyStroke(69, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.EinfacheDarstellungAnzeigen(); + CpuGraphicalDisplay.this.controller.EinfacheDarstellungAnzeigen(); } }); this.toolsMenu.add(var1); @@ -117,7 +117,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(68, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.DetailDarstellungAnzeigen(); + CpuGraphicalDisplay.this.controller.DetailDarstellungAnzeigen(); } }); this.toolsMenu.add(var1); @@ -126,7 +126,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(65, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - Zeitschranke.show(CpuAnzeigeDetail.this.controller); + SetTimeoutDialog.show(CpuGraphicalDisplay.this.controller); } }); this.toolsMenu.add(var1); @@ -135,7 +135,7 @@ public void actionPerformed(ActionEvent var1) { var1.setAccelerator(KeyStroke.getKeyStroke(82, kommando + 512)); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.ZurückSetzen(); + CpuGraphicalDisplay.this.controller.ZurückSetzen(); } }); this.toolsMenu.add(var1); @@ -145,7 +145,7 @@ public void actionPerformed(ActionEvent var1) { this.erweiterungenItem.setSelected(false); this.erweiterungenItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { - CpuAnzeigeDetail.this.controller.ErweiterungenEinschalten(CpuAnzeigeDetail.this.erweiterungenItem.isSelected()); + CpuGraphicalDisplay.this.controller.ErweiterungenEinschalten(CpuGraphicalDisplay.this.erweiterungenItem.isSelected()); } }); this.toolsMenu.add(this.erweiterungenItem); diff --git a/src/FensterVerwaltung.java b/src/FensterVerwaltung.java deleted file mode 100644 index e4f1022..0000000 --- a/src/FensterVerwaltung.java +++ /dev/null @@ -1,113 +0,0 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by Fernflower decompiler) -// - -import java.util.ArrayList; -import java.util.Iterator; - -class FensterVerwaltung { - private ArrayList offen = new ArrayList(); - private Anzeige cpuanzeige; - private Anzeige cpuanzeigeEinfach; - private Anzeige cpuanzeigeDetail; - private Anzeige cpuanzeigeEinfachErweitert; - private Anzeige speicheranzeige; - - FensterVerwaltung(Anzeige cpuDisplay, Anzeige cpuDisplay2, Anzeige cpuDisplayAdvanced, Anzeige storageDisplay) { - this.cpuanzeige = cpuDisplay; - this.cpuanzeigeEinfach = cpuDisplay; - this.cpuanzeigeDetail = cpuDisplay2; - this.cpuanzeigeEinfachErweitert = cpuDisplayAdvanced; - cpuDisplay2.Ausblenden(); - cpuDisplayAdvanced.Ausblenden(); - this.speicheranzeige = storageDisplay; - } - - void EditorEintragen(Anzeige var1) { - int var2; - for(var2 = 0; var2 < this.offen.size(); ++var2) { - var1.FenstereintragHinzufügen(var2, (Anzeige)this.offen.get(var2)); - } - - this.offen.add(var1); - var2 = this.offen.indexOf(var1); - Iterator var3 = this.offen.iterator(); - - while(var3.hasNext()) { - Anzeige var4 = (Anzeige)var3.next(); - var4.FenstereintragHinzufügen(var2, var1); - } - - this.cpuanzeige.FenstereintragHinzufügen(var2, var1); - this.speicheranzeige.FenstereintragHinzufügen(var2, var1); - } - - void EditorAustragen(Anzeige var1) { - int var2 = this.offen.indexOf(var1); - this.offen.remove(var1); - Iterator var3 = this.offen.iterator(); - - while(var3.hasNext()) { - Anzeige var4 = (Anzeige)var3.next(); - var4.FenstereintragEntfernen(var2); - } - - this.cpuanzeige.FenstereintragEntfernen(var2); - this.speicheranzeige.FenstereintragEntfernen(var2); - } - - void EditorTitelÄndern(Anzeige var1) { - int var2 = this.offen.indexOf(var1); - Iterator var3 = this.offen.iterator(); - - while(var3.hasNext()) { - Anzeige var4 = (Anzeige)var3.next(); - var4.FenstereintragÄndern(var2, var1); - } - - this.cpuanzeige.FenstereintragÄndern(var2, var1); - this.speicheranzeige.FenstereintragÄndern(var2, var1); - } - - void CpuFensterAuswählen() { - this.cpuanzeige.Aktivieren(); - } - - void SpeicherFensterAuswählen() { - this.speicheranzeige.Aktivieren(); - } - - void CpuAnzeigeWählen(boolean var1, boolean var2) { - if (var1) { - this.cpuanzeige = this.cpuanzeigeDetail; - this.cpuanzeigeDetail.Aktivieren(); - this.cpuanzeigeEinfach.Ausblenden(); - this.cpuanzeigeEinfachErweitert.Ausblenden(); - } else { - if (var2) { - this.cpuanzeige = this.cpuanzeigeEinfachErweitert; - this.cpuanzeigeEinfachErweitert.Aktivieren(); - this.cpuanzeigeEinfach.Ausblenden(); - } else { - this.cpuanzeige = this.cpuanzeigeEinfach; - this.cpuanzeigeEinfach.Aktivieren(); - this.cpuanzeigeEinfachErweitert.Ausblenden(); - } - - this.cpuanzeigeDetail.Ausblenden(); - ((CpuAnzeige)this.cpuanzeige).erweiterungenItem.setSelected(var2); - } - - } - - void BeendenMitteilen() { - Iterator var1 = this.offen.iterator(); - - while(var1.hasNext()) { - Anzeige var2 = (Anzeige)var1.next(); - var2.BeendenMitteilen(); - } - - } -} diff --git a/src/Minimaschine.java b/src/Minimaschine.java index 55059fb..a513d15 100644 --- a/src/Minimaschine.java +++ b/src/Minimaschine.java @@ -10,24 +10,25 @@ private Minimaschine(String[] args) { Cpu cpuEinfach = Cpu.CpuErzeugen("einfach"); Cpu cpuDetail = Cpu.CpuErzeugen("detail"); - Kontrolleur kontrolleur = new Kontrolleur(cpuEinfach, cpuDetail); - CpuAnzeige cpuAnzeige = new CpuAnzeige(kontrolleur); - CpuAnzeigeDetail cpuAnzeigeDetail = new CpuAnzeigeDetail(kontrolleur); - CpuAnzeigeErweitert cpuAnzeigeErweitert = new CpuAnzeigeErweitert(kontrolleur); - SpeicherAnzeige speicherAnzeige = new SpeicherAnzeige(kontrolleur); + Controller controller = new Controller(cpuEinfach, cpuDetail); - FensterVerwaltung windowManagement = new FensterVerwaltung(cpuAnzeige, cpuAnzeigeDetail, cpuAnzeigeErweitert, speicherAnzeige); - kontrolleur.VerwaltungSetzen(windowManagement); + CpuDisplay cpuDisplay = new CpuDisplay(controller); + CpuGraphicalDisplay cpuAnzeigeDetail = new CpuGraphicalDisplay(controller); + CpuExtendedDisplay cpuExtendedDisplay = new CpuExtendedDisplay(controller); + SpeicherAnzeige speicherAnzeige = new SpeicherAnzeige(controller); - cpuEinfach.Registrieren(cpuAnzeige); + WindowManager windowManagement = new WindowManager(cpuDisplay, cpuAnzeigeDetail, cpuExtendedDisplay, speicherAnzeige); + controller.setWindowManager(windowManagement); + + cpuEinfach.Registrieren(cpuDisplay); cpuDetail.Registrieren(cpuAnzeigeDetail); - cpuEinfach.Registrieren(cpuAnzeigeErweitert); + cpuEinfach.Registrieren(cpuExtendedDisplay); cpuEinfach.SpeicherbeobachterSetzen(speicherAnzeige); if (!Anzeige.IstMacOS()) { for(int var10 = 0; var10 < args.length; ++var10) { - kontrolleur.ÖffnenAusführen(args[var10]); + controller.ÖffnenAusführen(args[var10]); } } diff --git a/src/Zeitschranke.java b/src/SetTimeoutDialog.java similarity index 86% rename from src/Zeitschranke.java rename to src/SetTimeoutDialog.java index c5311e9..3a4a8c8 100644 --- a/src/Zeitschranke.java +++ b/src/SetTimeoutDialog.java @@ -18,12 +18,12 @@ import javax.swing.JTextField; import javax.swing.border.EmptyBorder; -class Zeitschranke { +class SetTimeoutDialog { private JDialog dialog; - private static Zeitschranke timeoutDialog = null; + private static SetTimeoutDialog timeoutDialog = null; private KontrolleurInterface kontrolleur; - private Zeitschranke(KontrolleurInterface controller) { + private SetTimeoutDialog(KontrolleurInterface controller) { this.kontrolleur = controller; this.dialog = new JDialog((JFrame)null); this.dialog.setTitle(R.getResources().getString("dialog_timeout_title")); @@ -54,8 +54,8 @@ private Zeitschranke(KontrolleurInterface controller) { public void actionPerformed(ActionEvent var1) { try { int var2 = Integer.parseInt(inputField.getText()); - Zeitschranke.this.kontrolleur.ZeitschrankeSetzen(var2); - Zeitschranke.this.dialog.setVisible(false); + SetTimeoutDialog.this.kontrolleur.ZeitschrankeSetzen(var2); + SetTimeoutDialog.this.dialog.setVisible(false); } catch (Exception var3) { inputField.selectAll(); } @@ -71,7 +71,7 @@ public void actionPerformed(ActionEvent var1) { static void show(KontrolleurInterface controller) { if (timeoutDialog == null) { - timeoutDialog = new Zeitschranke(controller); + timeoutDialog = new SetTimeoutDialog(controller); } timeoutDialog.dialog.setLocationRelativeTo(null); timeoutDialog.dialog.setVisible(true); diff --git a/src/SpeicherAnzeige.java b/src/SpeicherAnzeige.java index 6db9b3e..2cc07c9 100644 --- a/src/SpeicherAnzeige.java +++ b/src/SpeicherAnzeige.java @@ -15,13 +15,9 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFrame; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.KeyStroke; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableModel; @@ -67,7 +63,7 @@ public int getRowCount() { public Object getValueAt(int var1, int var2) { if (var2 == 0) { - return new Integer(var1 * 10); + return var1 * 10; } else { int var3 = var1 * 10 + (var2 - 1); if (var3 < 65536) { @@ -158,9 +154,12 @@ public Component getTableCellRendererComponent(JTable var1, Object var2, boolean return var7; } }); + + this.table.getTableHeader().setReorderingAllowed(false); this.table.getTableHeader().setFont(this.table.getTableHeader().getFont().deriveFont(1)); this.scrollpane = new JScrollPane(this.table); this.tableGross = new JTable(this.dataModel); + this.table.getTableHeader().setReorderingAllowed(false); this.tableGross.setRowHeight(30); for(var1 = 0; var1 < 11; ++var1) { @@ -209,33 +208,33 @@ protected void initMenus() { this.saveMenuItem.setEnabled(false); this.saveAsMenuItem.setEnabled(false); this.printMenuItem.setEnabled(false); - JMenuItem var1 = new JMenuItem("Widerrufen", 90); + JMenuItem var1 = new JMenuItem(R.getResources().getString("edit_menu_undo"), 90); var1.setAccelerator(KeyStroke.getKeyStroke(90, kommando)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Wiederholen"); + var1 = new JMenuItem(R.getResources().getString("edit_menu_redo")); var1.setAccelerator(KeyStroke.getKeyStroke(90, 64 + kommando)); var1.setEnabled(false); this.editMenu.add(var1); this.editMenu.addSeparator(); - var1 = new JMenuItem("Ausschneiden", 88); + var1 = new JMenuItem(R.getResources().getString("edit_menu_cut"), 88); var1.setAccelerator(KeyStroke.getKeyStroke(88, kommando)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Kopieren", 67); + var1 = new JMenuItem(R.getResources().getString("edit_menu_copy"), 67); var1.setAccelerator(KeyStroke.getKeyStroke(67, kommando)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Einfügen", 86); + var1 = new JMenuItem(R.getResources().getString("edit_menu_paste"), 86); var1.setAccelerator(KeyStroke.getKeyStroke(86, kommando)); var1.setEnabled(false); this.editMenu.add(var1); - var1 = new JMenuItem("Alles auswählen", 65); + var1 = new JMenuItem(R.getResources().getString("edit_menu_select_all"), 65); var1.setAccelerator(KeyStroke.getKeyStroke(65, kommando)); var1.setEnabled(false); this.editMenu.add(var1); this.toolsMenu.addSeparator(); - var1 = new JMenuItem("Speicher löschen", 65); + var1 = new JMenuItem(R.getResources().getString("memory_clear_memory"), 65); var1.setEnabled(true); var1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent var1) { @@ -244,7 +243,7 @@ public void actionPerformed(ActionEvent var1) { }); this.toolsMenu.add(var1); this.toolsMenu.addSeparator(); - this.hexaItem = new JCheckBoxMenuItem("Darstellung hexadezimal"); + this.hexaItem = new JCheckBoxMenuItem(R.getResources().getString("memory_display_hex")); this.hexaItem.setEnabled(true); this.hexaItem.setSelected(false); this.hexaItem.addActionListener(new ActionListener() { @@ -258,7 +257,7 @@ public void actionPerformed(ActionEvent var1) { SpeicherAnzeige.this.controller.CpuInvalidieren(); } }); - this.opcodeItem = new JCheckBoxMenuItem("Opcodes anzeigen"); + this.opcodeItem = new JCheckBoxMenuItem(R.getResources().getString("memory_display_op")); this.opcodeItem.setEnabled(true); this.opcodeItem.setSelected(false); this.opcodeItem.addActionListener(new ActionListener() { @@ -273,7 +272,7 @@ public void actionPerformed(ActionEvent var1) { this.toolsMenu.add(this.hexaItem); this.toolsMenu.add(this.opcodeItem); this.toolsMenu.addSeparator(); - this.editItem = new JCheckBoxMenuItem("Speicher editieren"); + this.editItem = new JCheckBoxMenuItem(R.getResources().getString("memory_edit")); this.editItem.setEnabled(true); this.editItem.setSelected(false); this.editItem.addActionListener(new ActionListener() { diff --git a/src/WindowManager.java b/src/WindowManager.java new file mode 100644 index 0000000..1aa34cb --- /dev/null +++ b/src/WindowManager.java @@ -0,0 +1,114 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +import java.util.ArrayList; +import java.util.Iterator; + +class WindowManager { + private ArrayList offen = new ArrayList(); + private Anzeige cpuDisplay; + private Anzeige cpuSimpleDisplay; + private Anzeige cpuGraphicalDisplay; + private Anzeige cpuSimpleExtendedDisplay; + private Anzeige speicheranzeige; + + WindowManager(Anzeige cpuDisplay, Anzeige cpuDisplay2, Anzeige cpuDisplayAdvanced, Anzeige storageDisplay) { + this.cpuDisplay = cpuDisplay; + this.cpuSimpleDisplay = cpuDisplay; + this.cpuGraphicalDisplay = cpuDisplay2; + this.cpuSimpleExtendedDisplay = cpuDisplayAdvanced; + cpuDisplay2.hide(); + cpuDisplayAdvanced.hide(); + this.speicheranzeige = storageDisplay; + } + + void EditorEintragen(Anzeige var1) { + int var2; + for(var2 = 0; var2 < this.offen.size(); ++var2) { + var1.FenstereintragHinzufügen(var2, (Anzeige)this.offen.get(var2)); + } + + this.offen.add(var1); + var2 = this.offen.indexOf(var1); + Iterator var3 = this.offen.iterator(); + + while(var3.hasNext()) { + Anzeige var4 = (Anzeige)var3.next(); + var4.FenstereintragHinzufügen(var2, var1); + } + + this.cpuDisplay.FenstereintragHinzufügen(var2, var1); + this.speicheranzeige.FenstereintragHinzufügen(var2, var1); + } + + void EditorAustragen(Anzeige var1) { + int var2 = this.offen.indexOf(var1); + this.offen.remove(var1); + Iterator var3 = this.offen.iterator(); + + while(var3.hasNext()) { + Anzeige var4 = (Anzeige)var3.next(); + var4.FenstereintragEntfernen(var2); + } + + this.cpuDisplay.FenstereintragEntfernen(var2); + this.speicheranzeige.FenstereintragEntfernen(var2); + } + + void EditorTitelÄndern(Anzeige var1) { + int var2 = this.offen.indexOf(var1); + Iterator var3 = this.offen.iterator(); + + while(var3.hasNext()) { + Anzeige var4 = (Anzeige)var3.next(); + var4.FenstereintragÄndern(var2, var1); + } + + this.cpuDisplay.FenstereintragÄndern(var2, var1); + this.speicheranzeige.FenstereintragÄndern(var2, var1); + } + + void CpuFensterAuswählen() { + this.cpuDisplay.show(); + } + + void SpeicherFensterAuswählen() { + this.speicheranzeige.show(); + } + + void setCpuDisplayMode(boolean graphical, boolean extended) { + if (graphical) { + this.cpuDisplay = this.cpuGraphicalDisplay; + this.cpuGraphicalDisplay.show(); + this.cpuSimpleDisplay.hide(); + this.cpuSimpleExtendedDisplay.hide(); + + } else { + if (extended) { + this.cpuDisplay = this.cpuSimpleExtendedDisplay; + this.cpuSimpleExtendedDisplay.show(); + this.cpuSimpleDisplay.hide(); + } else { + this.cpuDisplay = this.cpuSimpleDisplay; + this.cpuSimpleDisplay.show(); + this.cpuSimpleExtendedDisplay.hide(); + } + + this.cpuGraphicalDisplay.hide(); + ((CpuDisplay)this.cpuDisplay).erweiterungenItem.setSelected(extended); + } + + } + + void BeendenMitteilen() { + for(Anzeige display : this.offen) { + display.BeendenMitteilen(); + } + + + + + } +} diff --git a/src/model/Cpu.java b/src/model/Cpu.java index 2d2b67d..49240e3 100644 --- a/src/model/Cpu.java +++ b/src/model/Cpu.java @@ -129,28 +129,29 @@ private String HexaString(String var1) { return var1; } - protected void Melden(String var1, String var2, String var3, String var4, String var5, boolean var6, int var7, int var8, int var9, String var10) { + protected void Melden(String data, String address, String alu1, String alu2, String alu3, boolean var6, int var7, int var8, int var9, String microStepName) { this.letzterDa = true; - this.datenWert_letzter = var1; - this.adressWert_letzter = var2; - this.alu1_letzter = var3; - this.alu2_letzter = var4; - this.alu3_letzter = var5; - this.mikro_letzter = var10; + this.datenWert_letzter = data; + this.adressWert_letzter = address; + this.alu1_letzter = alu1; + this.alu2_letzter = alu2; + this.alu3_letzter = alu3; + this.mikro_letzter = microStepName; this.opMnemo_letzter = var6; + String var11 = "" + this.a.WertGeben(); String var12 = "" + this.adresse; String var13 = "" + (this.befehlscode + this.adressmodus * 256); if (this.hexaAnzeige) { - var1 = this.HexaString(var1); - var3 = this.HexaString(var3); - var4 = this.HexaString(var4); - var5 = this.HexaString(var5); + data = this.HexaString(data); + alu1 = this.HexaString(alu1); + alu2 = this.HexaString(alu2); + alu3 = this.HexaString(alu3); var11 = this.HexaString(var11); var12 = this.HexaString(var12); var13 = this.HexaString(var13); - if (var2.length() > 0 && !" ".equals(var2)) { - var2 = var2 + " [" + this.HexaString(var2) + "]"; + if (address.length() > 0 && !" ".equals(address)) { + address = address + " [" + this.HexaString(address) + "]"; } } @@ -202,7 +203,7 @@ protected void Melden(String var1, String var2, String var3, String var4, String while(var15.hasNext()) { CpuBeobachter var16 = (CpuBeobachter)var15.next(); - var16.Befehlsmeldung(var1, var2, var3, var4, var5, var11, this.sp.WertGeben() < 0 ? "" + (this.sp.WertGeben() + 65536) : "" + this.sp.WertGeben(), this.eqflag, this.ltflag, this.ovflag, var6 ? (this.adressmodus == 2 ? var17 + "I" : var17) : var13, var12, "" + this.pc.WertGeben(), this.progadr, this.progmem, this.dataadr, this.datamem, this.stackadr, this.stackmem, var10); + var16.Befehlsmeldung(data, address, alu1, alu2, alu3, var11, this.sp.WertGeben() < 0 ? "" + (this.sp.WertGeben() + 65536) : "" + this.sp.WertGeben(), this.eqflag, this.ltflag, this.ovflag, var6 ? (this.adressmodus == 2 ? var17 + "I" : var17) : var13, var12, "" + this.pc.WertGeben(), this.progadr, this.progmem, this.dataadr, this.datamem, this.stackadr, this.stackmem, microStepName); } } @@ -214,12 +215,12 @@ public void AnzeigeWiederholen() { } - protected void Fehlermeldung(String var1) { - Iterator var2 = this.beobachter.iterator(); + protected void reportError(String message) { + Iterator listeners = this.beobachter.iterator(); - while(var2.hasNext()) { - CpuBeobachter var3 = (CpuBeobachter)var2.next(); - var3.Fehlermeldung(var1); + while(listeners.hasNext()) { + CpuBeobachter listener = (CpuBeobachter) listeners.next(); + listener.Fehlermeldung(message); } } @@ -384,7 +385,7 @@ protected void OpcodeTesten() { } while(this.befehlscode != 99 && this.befehlscode != -1 && var1 > System.currentTimeMillis()); if (this.befehlscode != 99 && this.befehlscode != -1) { - this.Fehlermeldung("Programmabbruch wegen Zeitüberschreitung"); + this.reportError("Programmabbruch wegen Zeitüberschreitung"); } } diff --git a/src/model/CpuDetail.java b/src/model/CpuDetail.java index 39a4205..5a3c8c6 100644 --- a/src/model/CpuDetail.java +++ b/src/model/CpuDetail.java @@ -5,6 +5,8 @@ package model; +import res.R; + class CpuDetail extends Cpu { private MikroSchritte mikroStatus; private int op1; @@ -14,12 +16,12 @@ class CpuDetail extends Cpu { CpuDetail(Speicher var1) { super(var1); - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; this.pcAlt = 0; } public void ZurückSetzen() { - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; this.pcAlt = 0; super.ZurückSetzen(); } @@ -27,26 +29,26 @@ class CpuDetail extends Cpu { public void Schritt() { do { this.MikroSchritt(); - } while(this.mikroStatus != MikroSchritte.komplett); + } while(this.mikroStatus != MikroSchritte.COMPLETE); } public void MikroSchritt() { switch(this.mikroStatus) { - case komplett: - this.mikroStatus = MikroSchritte.fetch_opcode; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, this.sp.WertGeben(), "komplett"); + case COMPLETE: + this.mikroStatus = MikroSchritte.FETCH_OPCODE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, this.sp.WertGeben(), R.getResources().getString("micro_step_complete")); break; - case fetch_opcode: + case FETCH_OPCODE: this.pcAlt = this.pc.WertGeben(); int var1 = this.speicher.WortOhneVorzeichenGeben(this.pcAlt); this.pc.Inkrementieren(1); this.adressmodus = var1 / 256; this.befehlscode = var1 % 256; - this.mikroStatus = MikroSchritte.fetch_adressteil; - this.Melden("" + var1, "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), "", "", "", false, this.pcAlt, -1, this.sp.WertGeben(), "fetch_op"); + this.mikroStatus = MikroSchritte.FETCH_ADDRESS; + this.Melden("" + var1, "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), "", "", "", false, this.pcAlt, -1, this.sp.WertGeben(), R.getResources().getString("micro_step_fetch_op")); break; - case fetch_adressteil: + case FETCH_ADDRESS: this.pcAlt = this.pc.WertGeben(); this.adresse = this.speicher.WortMitVorzeichenGeben(this.pcAlt); this.pc.Inkrementieren(1); @@ -56,46 +58,46 @@ public void MikroSchritt() { var3 = "" + this.adresse; this.adresse += this.sp.WertGeben(); this.adressmodus = 2; - this.mikroStatus = MikroSchritte.decode; - this.Melden("$" + this.adresse + "(SP)", "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), var3, "" + this.sp.WertGeben(), "" + this.adresse, false, -1, -1, -1, "fetch_adr"); + this.mikroStatus = MikroSchritte.DECODE; + this.Melden("$" + this.adresse + "(SP)", "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), var3, "" + this.sp.WertGeben(), "" + this.adresse, false, -1, -1, -1, R.getResources().getString("micro_step_fetch_addr")); } else { if (this.adressmodus == 3) { - this.mikroStatus = MikroSchritte.fetch_indirekt; + this.mikroStatus = MikroSchritte.FETCH_INDIRECT; this.adressmodus = 1; } else { - this.mikroStatus = MikroSchritte.decode; + this.mikroStatus = MikroSchritte.DECODE; } - this.Melden("" + this.adresse, "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), "", "", "", false, -1, -1, -1, "fetch_adr"); + this.Melden("" + this.adresse, "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), "", "", "", false, -1, -1, -1, R.getResources().getString("micro_step_fetch_addr")); } } else { var3 = "" + this.adresse; this.adresse += this.sp.WertGeben(); if (this.adressmodus == 5) { - this.mikroStatus = MikroSchritte.fetch_indirekt; + this.mikroStatus = MikroSchritte.FETCH_INDIRECT; } else { - this.mikroStatus = MikroSchritte.decode; + this.mikroStatus = MikroSchritte.DECODE; } this.adressmodus = 1; - this.Melden("" + this.adresse + "(SP)", "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), var3, "" + this.sp.WertGeben(), "" + this.adresse, false, -1, -1, -1, "fetch_adr"); + this.Melden("" + this.adresse + "(SP)", "" + (this.pcAlt < 0 ? 65536 + this.pcAlt : this.pcAlt), var3, "" + this.sp.WertGeben(), "" + this.adresse, false, -1, -1, -1, R.getResources().getString("micro_step_fetch_addr")); } break; - case fetch_indirekt: - this.mikroStatus = MikroSchritte.decode; + case FETCH_INDIRECT: + this.mikroStatus = MikroSchritte.DECODE; int var2 = this.adresse; this.adresse = this.speicher.WortMitVorzeichenGeben(this.adresse); - this.Melden("" + this.adresse, "" + var2, "", "", "", false, -1, -1, -1, "fetch_indir"); + this.Melden("" + this.adresse, "" + var2, "", "", "", false, -1, -1, -1, R.getResources().getString("micro_step_fetch_indir")); break; - case decode: + case DECODE: this.OpcodeTesten(); - this.mikroStatus = MikroSchritte.execute_1; - this.Melden("", "", "", "", "", true, -1, -1, -1, "dekode"); + this.mikroStatus = MikroSchritte.EXECUTE_1; + this.Melden("", "", "", "", "", true, -1, -1, -1, R.getResources().getString("micro_step_decode")); break; - case execute_1: + case EXECUTE_1: this.Excecute1(); break; - case execute_2: + case EXECUTE_2: this.Excecute2(); } @@ -105,14 +107,14 @@ private void Excecute1() { int var1; switch(this.befehlscode) { case 0: - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, -1, -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 1: this.ZurückSetzen(); this.speicher.SpeicherLöschen(); - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, -1, -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 2: case 3: @@ -193,57 +195,57 @@ private void Excecute1() { int var2; switch(this.befehlscode) { case 5: - this.mikroStatus = MikroSchritte.execute_2; + this.mikroStatus = MikroSchritte.EXECUTE_2; var1 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("", "", "" + var1, "-1", "" + (var1 - 1), true, -1, -1, -1, "exec_1"); + this.Melden("", "", "" + var1, "-1", "" + (var1 - 1), true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); this.sp.Dekrementieren(1); return; case 6: - this.mikroStatus = MikroSchritte.execute_2; + this.mikroStatus = MikroSchritte.EXECUTE_2; var1 = this.speicher.WortMitVorzeichenGeben(this.sp.WertGeben()); this.pc.WertSetzen(var1); - this.Melden("" + (var1 < 0 ? var1 + 65536 : var1), "" + (this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben()), "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.Melden("" + (var1 < 0 ? var1 + 65536 : var1), "" + (this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben()), "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); return; case 7: - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; var2 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); this.sp.Dekrementieren(this.adresse); var1 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("", "", "" + var2, "" + this.adresse, "" + var1, true, -1, -1, this.sp.WertGeben(), "exec_1"); + this.Melden("", "", "" + var2, "" + this.adresse, "" + var1, true, -1, -1, this.sp.WertGeben(), R.getResources().getString("micro_step_exec_1")); return; case 8: - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; var2 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); this.sp.Inkrementieren(this.adresse); var1 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("", "", "" + var2, "" + this.adresse, "" + var1, true, -1, -1, this.sp.WertGeben(), "exec_1"); + this.Melden("", "", "" + var2, "" + this.adresse, "" + var1, true, -1, -1, this.sp.WertGeben(), R.getResources().getString("micro_step_exec_1")); return; case 25: - this.mikroStatus = MikroSchritte.execute_2; + this.mikroStatus = MikroSchritte.EXECUTE_2; var1 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("", "", "" + var1, "-1", "" + (var1 - 1), true, -1, -1, -1, "exec_1"); + this.Melden("", "", "" + var1, "-1", "" + (var1 - 1), true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); this.sp.Dekrementieren(1); return; case 26: - this.mikroStatus = MikroSchritte.execute_2; + this.mikroStatus = MikroSchritte.EXECUTE_2; this.a.WertSetzen(this.speicher.WortMitVorzeichenGeben(this.sp.WertGeben())); this.ovflag = false; var1 = this.a.WertGeben(); this.ltflag = var1 < 0; this.eqflag = var1 == 0; var1 = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("" + this.a.WertGeben(), "" + var1, "", "", "", true, -1, -1, this.sp.WertGeben(), "exec_1"); + this.Melden("" + this.a.WertGeben(), "" + var1, "", "", "", true, -1, -1, this.sp.WertGeben(), R.getResources().getString("micro_step_exec_1")); return; default: - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", false, -1, -1, -1, "exec_1"); - this.Fehlermeldung("Illegaler Befehlscode"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", false, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); + this.reportError(R.getResources().getString("cpu_illegal_opcode")); this.befehlscode = -1; } } else { - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", false, -1, -1, -1, "exec_1"); - this.Fehlermeldung("Illegaler Befehlscode"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", false, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); + this.reportError(R.getResources().getString("cpu_illegal_opcode")); this.befehlscode = -1; } break; @@ -261,11 +263,11 @@ private void Excecute1() { case 45: this.op1 = this.a.WertGeben(); this.op2 = this.OperandenwertGeben(this.adresse, this.adressmodus); - this.mikroStatus = MikroSchritte.execute_2; + this.mikroStatus = MikroSchritte.EXECUTE_2; if (this.adressmodus == 1) { - this.Melden("" + this.op2, "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "" + this.op1, "" + this.op2, "", true, -1, this.adresse, -1, "exec_1"); + this.Melden("" + this.op2, "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "" + this.op1, "" + this.op2, "", true, -1, this.adresse, -1, R.getResources().getString("micro_step_exec_1")); } else { - this.Melden("", "", "" + this.op1, "" + this.op2, "", true, -1, -1, -1, "exec_1"); + this.Melden("", "", "" + this.op1, "" + this.op2, "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); } break; case 20: @@ -274,87 +276,87 @@ private void Excecute1() { var1 = this.a.WertGeben(); this.ltflag = var1 < 0; this.eqflag = var1 == 0; - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; if (this.adressmodus == 1) { - this.Melden("" + var1, "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "", "", "", true, -1, this.adresse, -1, "exec_1"); + this.Melden("" + var1, "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "", "", "", true, -1, this.adresse, -1, R.getResources().getString("micro_step_exec_1")); } else { - this.Melden("", "", "", "", "", true, -1, -1, -1, "exec_1"); + this.Melden("", "", "", "", "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); } break; case 21: this.speicher.WortSetzen(this.adresse, this.a.WertGeben()); - this.mikroStatus = MikroSchritte.komplett; - this.Melden("" + this.a.WertGeben(), "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "", "", "", true, -1, this.adresse, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("" + this.a.WertGeben(), "" + (this.adresse < 0 ? 65536 + this.adresse : this.adresse), "", "", "", true, -1, this.adresse, -1, R.getResources().getString("micro_step_exec_1")); break; case 30: if (!this.ltflag && !this.eqflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 31: if (!this.ltflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 32: if (this.ltflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 33: if (this.ltflag || this.eqflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 34: if (this.eqflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 35: if (!this.eqflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 36: this.pc.WertSetzen(this.adresse); - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 37: if (this.ovflag) { this.pc.WertSetzen(this.adresse); } - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 46: this.op1 = this.a.WertGeben(); - this.mikroStatus = MikroSchritte.execute_2; - this.Melden("", "", "" + this.op1, "", "", true, -1, -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.EXECUTE_2; + this.Melden("", "", "" + this.op1, "", "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); break; case 99: - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "", "", "", true, -1, -1, -1, "exec_1"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "", "", "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_1")); } } @@ -362,17 +364,17 @@ private void Excecute1() { private void Excecute2() { switch(this.befehlscode) { case 5: - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; this.speicher.WortSetzen(this.sp.WertGeben(), this.pc.WertGeben()); this.res = this.pc.WertGeben() < 0 ? this.pc.WertGeben() + 65536 : this.pc.WertGeben(); this.pc.WertSetzen(this.adresse); - this.Melden("" + this.res, "" + (this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben()), "", "", "", true, this.pc.WertGeben(), -1, -1, "exec_2"); + this.Melden("" + this.res, "" + (this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben()), "", "", "", true, this.pc.WertGeben(), -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 6: case 26: - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; this.res = this.sp.WertGeben() < 0 ? this.sp.WertGeben() + 65536 : this.sp.WertGeben(); - this.Melden("", "", "" + this.res, "1", "" + (this.res + 1), true, -1, -1, -1, "exec_2"); + this.Melden("", "", "" + this.res, "1", "" + (this.res + 1), true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); this.sp.Inkrementieren(1); case 7: case 8: @@ -408,8 +410,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 11: this.res = this.op1 - this.op2; @@ -418,8 +420,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 12: this.res = this.op1 * this.op2; @@ -428,12 +430,12 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 13: if (this.op2 == 0) { - this.Fehlermeldung("Division durch 0"); + this.reportError("Division durch 0"); this.res = this.op1; this.ovflag = true; } else { @@ -445,12 +447,12 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 14: if (this.op2 == 0) { - this.Fehlermeldung("Division durch 0"); + this.reportError("Division durch 0"); this.res = this.op1; this.ovflag = true; } else { @@ -462,20 +464,20 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 15: this.ovflag = false; this.ltflag = this.op1 < this.op2; this.eqflag = this.op1 == this.op2; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "", true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "", true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 25: - this.mikroStatus = MikroSchritte.komplett; + this.mikroStatus = MikroSchritte.COMPLETE; this.res = this.sp.WertGeben(); - this.Melden("" + this.a.WertGeben(), "" + (this.res < 0 ? 65536 + this.res : this.res), "", "", "", true, -1, -1, this.res, "exec_2"); + this.Melden("" + this.a.WertGeben(), "" + (this.res < 0 ? 65536 + this.res : this.res), "", "", "", true, -1, -1, this.res, R.getResources().getString("micro_step_exec_2")); this.speicher.WortSetzen(this.res, this.a.WertGeben()); break; case 40: @@ -485,8 +487,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 41: this.res = this.op1 | this.op2; @@ -495,8 +497,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 42: this.res = this.op1 ^ this.op2; @@ -505,8 +507,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 43: this.res = this.op1 << this.op2; @@ -515,8 +517,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 44: this.res = (this.op1 & '\uffff') >> this.op2; @@ -525,8 +527,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 45: this.res = this.op1 >> this.op2; @@ -535,8 +537,8 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "" + this.op2, "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); break; case 46: this.res = ~this.op1; @@ -545,15 +547,15 @@ private void Excecute2() { this.res = this.a.WertGeben(); this.ltflag = this.res < 0; this.eqflag = this.res == 0; - this.mikroStatus = MikroSchritte.komplett; - this.Melden("", "", "" + this.op1, "", "" + this.res, true, -1, -1, -1, "exec_2"); + this.mikroStatus = MikroSchritte.COMPLETE; + this.Melden("", "", "" + this.op1, "", "" + this.res, true, -1, -1, -1, R.getResources().getString("micro_step_exec_2")); } } public void Übertragen(Cpu var1) { if (this != var1) { - while(this.mikroStatus != MikroSchritte.komplett) { + while(this.mikroStatus != MikroSchritte.COMPLETE) { this.MikroSchritt(); } } diff --git a/src/model/CpuEinfach.java b/src/model/CpuEinfach.java index 221b6d4..7295760 100644 --- a/src/model/CpuEinfach.java +++ b/src/model/CpuEinfach.java @@ -5,6 +5,8 @@ package model; +import res.R; + class CpuEinfach extends Cpu { CpuEinfach(Speicher storage) { super(storage); @@ -135,11 +137,11 @@ public void Schritt() { this.eqflag = var3 == 0; break label288; default: - this.Fehlermeldung("Illegaler Befehlscode"); + this.reportError(R.getResources().getString("cpu_illegal_opcode")); this.befehlscode = -1; } } else { - this.Fehlermeldung("Illegaler Befehlscode"); + this.reportError(R.getResources().getString("cpu_illegal_opcode")); this.befehlscode = -1; } break; @@ -167,7 +169,7 @@ public void Schritt() { var1 = this.a.WertGeben(); var2 = this.OperandenwertGeben(this.adresse, this.adressmodus); if (var2 == 0) { - this.Fehlermeldung("Division durch 0"); + this.reportError(R.getResources().getString("cpu_zero_division")); var3 = var1; this.ovflag = true; } else { @@ -184,7 +186,7 @@ public void Schritt() { var1 = this.a.WertGeben(); var2 = this.OperandenwertGeben(this.adresse, this.adressmodus); if (var2 == 0) { - this.Fehlermeldung("Division durch 0"); + this.reportError(R.getResources().getString("cpu_zero_division")); var3 = 0; this.ovflag = true; } else { diff --git a/src/model/FehlerVerwaltung.java b/src/model/FehlerVerwaltung.java index f831246..c257f96 100644 --- a/src/model/FehlerVerwaltung.java +++ b/src/model/FehlerVerwaltung.java @@ -14,9 +14,9 @@ public class FehlerVerwaltung { public FehlerVerwaltung() { } - public void FehlerEintragen(String var1, int var2) { - this.meldungen.add(var1); - this.positionen.add(var2); + public void FehlerEintragen(String message, int position) { + this.meldungen.add(message); + this.positionen.add(position); } public boolean FehlerAufgetreten() { diff --git a/src/model/MikroSchritte.java b/src/model/MikroSchritte.java index 6df0e6e..ee0c6b1 100644 --- a/src/model/MikroSchritte.java +++ b/src/model/MikroSchritte.java @@ -6,13 +6,13 @@ package model; enum MikroSchritte { - komplett, - fetch_opcode, - fetch_adressteil, - fetch_indirekt, - decode, - execute_1, - execute_2; + COMPLETE, + FETCH_OPCODE, + FETCH_ADDRESS, + FETCH_INDIRECT, + DECODE, + EXECUTE_1, + EXECUTE_2; private MikroSchritte() { } diff --git a/src/model/Parser.java b/src/model/Parser.java index e2ac365..839ed92 100644 --- a/src/model/Parser.java +++ b/src/model/Parser.java @@ -5,6 +5,8 @@ package model; +import res.R; + import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; @@ -20,11 +22,11 @@ class Parser { private HashMap fixierungen; private boolean erweitert; - Parser(Scanner var1, Speicher var2, FehlerVerwaltung var3, boolean var4) { - this.scanner = var1; - this.speicher = var2; - this.fehler = var3; - this.erweitert = var4; + Parser(Scanner scanner, Speicher memory, FehlerVerwaltung exceptionHandler, boolean extended) { + this.scanner = scanner; + this.speicher = memory; + this.fehler = exceptionHandler; + this.erweitert = extended; this.pc = 0; this.befehle = AssemblerBefehle.AssemblerbefehleGeben(); this.marken = new HashMap(40); @@ -41,27 +43,27 @@ void Parse() { Scanner var10001 = this.scanner; if (this.aktToken != 2) { if (this.aktToken != 0) { - this.fehler.FehlerEintragen("Bezeichner erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_label_name"), this.scanner.PositionGeben()); this.Überspringen(); } } else { - String var1 = this.scanner.BezeichnerGeben(); + String label = this.scanner.BezeichnerGeben(); int var6 = this.scanner.PositionGeben(); this.aktToken = this.scanner.NächstesToken(); var10001 = this.scanner; if (this.aktToken == 4) { - if (this.marken.containsKey(var1)) { - this.fehler.FehlerEintragen("Marke doppelt vereinbart", this.scanner.PositionGeben()); - } else if (!this.erweitert || !var1.equals("SP") && !var1.equals("sp")) { - this.marken.put(var1, this.pc); + if (this.marken.containsKey(label)) { + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_label_exists"), this.scanner.PositionGeben()); + } else if (!this.erweitert || !label.equals("SP") && !label.equals("sp")) { + this.marken.put(label, this.pc); } else { - this.fehler.FehlerEintragen("unzulässiger Name für Marke: " + var1, this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_label") + ": " + label, this.scanner.PositionGeben()); } this.aktToken = this.scanner.NächstesToken(); var10001 = this.scanner; if (this.aktToken == 2) { - var1 = this.scanner.BezeichnerGeben(); + label = this.scanner.BezeichnerGeben(); var6 = this.scanner.PositionGeben(); this.aktToken = this.scanner.NächstesToken(); } else { @@ -75,15 +77,15 @@ void Parse() { continue; } - this.fehler.FehlerEintragen("Bezeichner erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_label_name"), this.scanner.PositionGeben()); } } - if (!this.befehle.BezeichnerTesten(var1)) { - this.fehler.FehlerEintragen("Kein gültiger Befehl: " + var1, var6); + if (!this.befehle.BezeichnerTesten(label)) { + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_instruction") + ": " + label, var6); this.Überspringen(); } else { - int var2 = this.befehle.OpcodeGeben(var1); + int var2 = this.befehle.OpcodeGeben(label); byte var3 = 0; byte var5; if (var2 < 0) { @@ -102,22 +104,23 @@ void Parse() { } else { this.speicher.WortSetzen(this.pc, 0); ++this.pc; - this.fehler.FehlerEintragen("Zahl erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_number"), this.scanner.PositionGeben()); } } else { int var4; + var4 = 0; + if (var2 >= 300) { - var4 = 0; var3 = 2; var2 -= 300; var5 = 1; var10001 = this.scanner; if (this.aktToken == 2) { - var1 = this.scanner.BezeichnerGeben(); - if (this.marken.containsKey(var1)) { - var4 = (Integer)this.marken.get(var1); + label = this.scanner.BezeichnerGeben(); + if (this.marken.containsKey(label)) { + var4 = (Integer)this.marken.get(label); } else { - this.fixierungen.put(this.pc + 1, var1); + this.fixierungen.put(this.pc + 1, label); } this.aktToken = this.scanner.NächstesToken(); @@ -138,27 +141,22 @@ void Parse() { var4 = var5 * this.scanner.ZahlGeben(); this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("Zahl erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_number"), this.scanner.PositionGeben()); } } - this.speicher.WortSetzen(this.pc, var3 * 256 + var2); - ++this.pc; - this.speicher.WortSetzen(this.pc, var4); - ++this.pc; } else { - var4 = 0; var3 = 0; var10001 = this.scanner; if (this.aktToken != 9) { var10001 = this.scanner; if (this.aktToken == 2) { var3 = 1; - var1 = this.scanner.BezeichnerGeben(); - if (this.marken.containsKey(var1)) { - var4 = (Integer)this.marken.get(var1); + label = this.scanner.BezeichnerGeben(); + if (this.marken.containsKey(label)) { + var4 = (Integer)this.marken.get(label); } else { - this.fixierungen.put(this.pc + 1, var1); + this.fixierungen.put(this.pc + 1, label); } this.aktToken = this.scanner.NächstesToken(); @@ -176,17 +174,17 @@ void Parse() { var10001 = this.scanner; if (this.aktToken == 2) { if (!this.scanner.BezeichnerGeben().equals("SP") && !this.scanner.BezeichnerGeben().equals("sp")) { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } this.aktToken = this.scanner.NächstesToken(); } else { var10001 = this.scanner; if (this.aktToken == 3) { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } @@ -194,7 +192,7 @@ void Parse() { if (this.aktToken == 10) { this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("')' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("')' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } } @@ -206,11 +204,11 @@ void Parse() { var5 = 1; var10001 = this.scanner; if (this.aktToken == 2) { - var1 = this.scanner.BezeichnerGeben(); - if (this.marken.containsKey(var1)) { - var4 = (Integer)this.marken.get(var1); + label = this.scanner.BezeichnerGeben(); + if (this.marken.containsKey(label)) { + var4 = (Integer)this.marken.get(label); } else { - this.fixierungen.put(this.pc + 1, var1); + this.fixierungen.put(this.pc + 1, label); } this.aktToken = this.scanner.NächstesToken(); @@ -238,24 +236,24 @@ void Parse() { var10001 = this.scanner; if (this.aktToken == 2) { if (!this.scanner.BezeichnerGeben().equals("SP") && !this.scanner.BezeichnerGeben().equals("sp")) { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } var10001 = this.scanner; if (this.aktToken == 10) { this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("')' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("')' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } } } else { - this.fehler.FehlerEintragen("Zahl erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_number"), this.scanner.PositionGeben()); } } } else if (this.erweitert) { @@ -270,7 +268,7 @@ void Parse() { } else { var10001 = this.scanner; if (this.aktToken == 2) { - this.fehler.FehlerEintragen("Zahl erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_number"), this.scanner.PositionGeben()); this.aktToken = this.scanner.NächstesToken(); } } @@ -281,17 +279,17 @@ void Parse() { var10001 = this.scanner; if (this.aktToken == 2) { if (!this.scanner.BezeichnerGeben().equals("SP") && !this.scanner.BezeichnerGeben().equals("sp")) { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } this.aktToken = this.scanner.NächstesToken(); } else { var10001 = this.scanner; if (this.aktToken == 3) { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("'SP' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("'SP' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } @@ -299,7 +297,7 @@ void Parse() { if (this.aktToken == 10) { this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("')' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("')' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } else { this.fehler.FehlerEintragen("(", this.scanner.PositionGeben()); @@ -313,14 +311,14 @@ void Parse() { var3 = 3; var10001 = this.scanner; if (this.aktToken == 2) { - var1 = this.scanner.BezeichnerGeben(); - if (this.erweitert && (var1.equals("SP") || var1.equals("sp"))) { + label = this.scanner.BezeichnerGeben(); + if (this.erweitert && (label.equals("SP") || label.equals("sp"))) { var3 = 4; var4 = 0; - } else if (this.marken.containsKey(var1)) { - var4 = (Integer)this.marken.get(var1); + } else if (this.marken.containsKey(label)) { + var4 = (Integer)this.marken.get(label); } else { - this.fixierungen.put(this.pc + 1, var1); + this.fixierungen.put(this.pc + 1, label); } this.aktToken = this.scanner.NächstesToken(); @@ -330,7 +328,7 @@ void Parse() { var4 = this.scanner.ZahlGeben(); this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("Zahl oder Bezeichner erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_expected_number_or_label"), this.scanner.PositionGeben()); } } @@ -338,22 +336,22 @@ void Parse() { if (this.aktToken == 10) { this.aktToken = this.scanner.NächstesToken(); } else { - this.fehler.FehlerEintragen("')' erwartet", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen("')' " + R.getResources().getString("parse_error_x_expected"), this.scanner.PositionGeben()); } } - this.speicher.WortSetzen(this.pc, var3 * 256 + var2); - ++this.pc; - this.speicher.WortSetzen(this.pc, var4); - ++this.pc; } + this.speicher.WortSetzen(this.pc, var3 * 256 + var2); + ++this.pc; + this.speicher.WortSetzen(this.pc, var4); + ++this.pc; } switch(var2) { case 1: case 99: if (var3 != 0) { - this.fehler.FehlerEintragen("Unzulässige Adressteile", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_address"), this.scanner.PositionGeben()); } case 2: case 3: @@ -436,30 +434,30 @@ void Parse() { break; case 5: if (var3 == 0) { - this.fehler.FehlerEintragen("Fehlender Adressteil", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_missing_address"), this.scanner.PositionGeben()); } else if (var3 == 2) { - this.fehler.FehlerEintragen("Unzulässige Adressart", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_address_mode"), this.scanner.PositionGeben()); } if (!this.erweitert) { - this.fehler.FehlerEintragen("Erweiterte Befehle nicht zulässig", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_extended_instruction"), this.scanner.PositionGeben()); } break; case 6: case 25: case 26: if (var3 != 0) { - this.fehler.FehlerEintragen("Unzulässige Adressteile", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_address"), this.scanner.PositionGeben()); } if (!this.erweitert) { - this.fehler.FehlerEintragen("Erweiterte Befehle nicht zulässig", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_extended_instruction"), this.scanner.PositionGeben()); } break; case 7: case 8: if (var3 != 2) { - this.fehler.FehlerEintragen("Unzulässige Adressteile", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_address"), this.scanner.PositionGeben()); } break; case 10: @@ -469,7 +467,7 @@ void Parse() { case 15: case 20: if (var3 == 0) { - this.fehler.FehlerEintragen("Fehlender Adressteil", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_missing_address"), this.scanner.PositionGeben()); } break; case 21: @@ -481,14 +479,14 @@ void Parse() { case 35: case 36: if (var3 == 0) { - this.fehler.FehlerEintragen("Fehlender Adressteil", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_missing_address"), this.scanner.PositionGeben()); } else if (var3 == 2) { - this.fehler.FehlerEintragen("Unzulässige Adressart", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_invalid_address_mode"), this.scanner.PositionGeben()); } } if (this.aktToken != 0 && this.aktToken != 5) { - this.fehler.FehlerEintragen("Überflüssige Adressteile", this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_unnecessary_address"), this.scanner.PositionGeben()); } } } @@ -505,7 +503,7 @@ void Parse() { if (this.marken.containsKey(var8.getValue())) { this.speicher.WortSetzen((Integer)var8.getKey(), (Integer)this.marken.get(var8.getValue())); } else { - this.fehler.FehlerEintragen("Marke nicht definiert: " + (String)var8.getValue(), this.scanner.PositionGeben()); + this.fehler.FehlerEintragen(R.getResources().getString("parse_error_label_not_defined") + ": " + (String)var8.getValue(), this.scanner.PositionGeben()); } } diff --git a/src/res/lang.properties b/src/res/lang.properties index 4e82b33..6a5c658 100644 --- a/src/res/lang.properties +++ b/src/res/lang.properties @@ -4,13 +4,20 @@ version = v2.1 aboutMM = About Macromachine aboutDetail = A Program for emulating a simple CPU -window_cpu_title = CPU Control + file_picker_open_title = Select a file to open file_picker_save_title = Save window_memory_title = Memory View +memory_clear_memory = Clear memory +memory_display_hex = Use hexadecimal +memory_display_op = Display opcodes +memory_edit = Enable editing + +window_cpu_title = CPU Control + cpu_run = Run cpu_step = Next Step cpu_micro_step = Micro Step @@ -22,12 +29,42 @@ cpu_data_bus = Data Bus cpu_address_bus = Address Bus cpu_instruction_reg = Instruction Register cpu_stack_pointer = Stack Pointer +cpu_illegal_opcode = Illegal Opcode +cpu_zero_division = Zero division + + + + +micro_step_complete = complete +micro_step_fetch_op = fetch_op +micro_step_fetch_addr = fetch_addr +micro_step_fetch_indir = fetch_indir +micro_step_decode = decode +micro_step_exec_1 = exec_1 +micro_step_exec_2 = exec_2 + + +parse_error_expected_label_name = Expected label name +parse_error_label_exists = Label already exists +parse_error_invalid_label = Invalid label name +parse_error_invalid_instruction = Invalid instruction +parse_error_expected_number = Number expected +parse_error_expected_number_or_label = Number or label expected +parse_error_x_expected = expected +parse_error_invalid_address = Invalid Address +parse_error_missing_address = Missing address +parse_error_invalid_address_mode = Invalid addressing mode +parse_error_unnecessary_address = Unnecessary address +parse_error_label_not_defined = Label not defined +parse_error_extended_instruction = Extended instruction is not allowed + window_editor_title = Editor editor_assemble = Assemble editor_confirm_exit_unsaved1 = You have unsaved changes. editor_confirm_exit_unsaved2 = Do you wan't to save your changes? editor_confirm_exit_unsaved_title = Save changes +editor_assembly_success = Successfully assembled dialog_timeout_title = Processor Timeout dialog_timeout_prompt = Enter processor timeout in seconds