From 3e3dfb36c1188399042a26b0975945309f3bf3bd Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Thu, 29 May 2014 21:36:47 -0700 Subject: [PATCH 1/4] Get rid of hardcoded INTERP entrypoint --- PLASMA/src/cmdstub.s | 1 + PLASMA/src/codegen.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/PLASMA/src/cmdstub.s b/PLASMA/src/cmdstub.s index 66964173..6baa674e 100644 --- a/PLASMA/src/cmdstub.s +++ b/PLASMA/src/cmdstub.s @@ -1,3 +1,4 @@ +INTERP = $03D0 ;* ;* MOVE CMD DOWN TO $1000-$2000 ;* diff --git a/PLASMA/src/codegen.c b/PLASMA/src/codegen.c index bb5ec00b..5a48b962 100755 --- a/PLASMA/src/codegen.c +++ b/PLASMA/src/codegen.c @@ -509,7 +509,7 @@ void emit_def(char *name, int is_bytecode) { //printf("%s%c\n", name, LBL); if (is_bytecode) - printf("\tJSR $03D0\n"); + printf("\tJSR\tINTERP\n"); } } void emit_codetag(int tag) From a096d73ae525278268ec0a4a83f6498cdb274fe0 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Fri, 30 May 2014 22:56:19 -0700 Subject: [PATCH 2/4] Free up end-of-module memory --- PLASMA/src/cmd.pla | 24 ++++++++++++------------ PLASMA/src/plvm02.s | 38 +++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/PLASMA/src/cmd.pla b/PLASMA/src/cmd.pla index c13fe94c..fd503a95 100644 --- a/PLASMA/src/cmd.pla +++ b/PLASMA/src/cmd.pla @@ -167,11 +167,9 @@ asm syscall INX LDA ESTKL,X STA CMD - STX ESP JSR $BF00 CMD: !BYTE 00 PARAMS: !WORD 0000 - LDX ESP STA ESTKL,X LDY #$00 STY ESTKH,X @@ -1018,7 +1016,7 @@ def adddef(bank, addr, deflast) end def loadmod(mod) word refnum, rdlen, modsize, bytecode, defofst, defcnt, init, fixup - word addr, defaddr, modaddr, modfix + word addr, defaddr, modaddr, modfix, modend word deftbl, deflast word moddep, rld, esd, sym byte defbank, str[16], filename[64] @@ -1048,7 +1046,7 @@ def loadmod(mod) ; Load module dependencies. ; while ^moddep - if lookupmod(moddep) == 0 + if !lookupmod(moddep) close(refnum) refnum = 0 if loadmod(moddep) < 0 @@ -1063,7 +1061,7 @@ def loadmod(mod) deftbl = allocheap(defcnt * 5 + 1) deflast = deftbl ^deflast = 0 - if refnum == 0 + if !refnum ; ; Reset read pointer. ; @@ -1094,9 +1092,10 @@ def loadmod(mod) ; modfix = modaddr - modfix bytecode = defofst + modfix - MODADDR - rld = modaddr + modsize ; Re-Locatable Directory - esd = rld ; Extern+Entry Symbol Directory - while ^esd <> $00 ; Scan to end of ESD + modend = modaddr + modsize + rld = modend ; Re-Locatable Directory + esd = rld ; Extern+Entry Symbol Directory + while !^esd ; Scan to end of ESD esd = esd + 4 loop esd = esd + 1 @@ -1106,6 +1105,7 @@ def loadmod(mod) if ^MACHID & $30 == $30 defbank = 1 defaddr = allocxheap(rld - bytecode) + modend = bytecode else defbank = 0 defaddr = bytecode @@ -1173,11 +1173,11 @@ def loadmod(mod) ; Move bytecode to AUX bank. ; memxcpy(0, defaddr, bytecode, modsize - (bytecode - modaddr)) - ; - ; Free up the bytecode in main memory. - ; - releaseheap(bytecode) fin + ; + ; Free up the end-of-module in main memory. + ; + releaseheap(modend) else perr = perr | 0x100 return -perr diff --git a/PLASMA/src/plvm02.s b/PLASMA/src/plvm02.s index 57035ecb..58ee6ca1 100644 --- a/PLASMA/src/plvm02.s +++ b/PLASMA/src/plvm02.s @@ -209,8 +209,8 @@ PAGE3 = * ;* ;* PAGE 3 VECTORS INTO INTERPRETER ;* - BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY - JMP INTERP +INTERP BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY + JMP DINTERP BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY JMP IINTRP BIT LCRDEN+LCBNK2 ; $03DC - INDIRECT INTERPX ENTRY @@ -306,7 +306,7 @@ DISABLE80 !BYTE 21, 13, '1', 26, 13 ;* ;* ENTER INTO BYTECODE INTERPRETER ;* -INTERP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD +DINTERP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD BIT LCRWEN+LCBNK2 PLA STA IPL @@ -384,10 +384,6 @@ TIMER JSR JMPTMR ;* JMPTMR JMP (TMRVEC) ;* -;* INDIRECT JUMP TO (TMP) -;* -JMPTMP JMP (TMP) -;* ;* ADD TOS TO TOS-1 ;* ADD LDA ESTKL,X @@ -1818,17 +1814,17 @@ IBRNCHX LDA IPL ;* CALL +INC_IP LDA (IP),Y - STA TMPL + STA CALLADR+1 +INC_IP LDA (IP),Y - STA TMPH + STA CALLADR+2 LDA IPH PHA LDA IPL PHA TYA PHA - JSR JMPTMP +CALLADR JSR $FFFF PLA TAY PLA @@ -1841,10 +1837,10 @@ CALL +INC_IP ; CALLX +INC_IP LDA (IP),Y - STA TMPL + STA CALXADR+1 +INC_IP LDA (IP),Y - STA TMPH + STA CALXADR+2 LDA IPH PHA LDA IPL @@ -1853,7 +1849,7 @@ CALLX +INC_IP PHA STA ALTRDOFF CLI - JSR JMPTMP +CALXADR JSR $FFFF SEI STA ALTRDON PLA @@ -1869,9 +1865,9 @@ CALLX +INC_IP ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* ICAL LDA ESTKL,X - STA TMPL + STA ICALADR+1 LDA ESTKH,X - STA TMPH + STA ICALADR+2 INX LDA IPH PHA @@ -1879,7 +1875,7 @@ ICAL LDA ESTKL,X PHA TYA PHA - JSR JMPTMP +ICALADR JSR $FFFF PLA TAY PLA @@ -1891,9 +1887,9 @@ ICAL LDA ESTKL,X JMP NEXTOP ; ICALX LDA ESTKL,X - STA TMPL + STA ICLXADR+1 LDA ESTKH,X - STA TMPH + STA ICLXADR+2 INX LDA IPH PHA @@ -1903,7 +1899,7 @@ ICALX LDA ESTKL,X PHA STA ALTRDOFF CLI - JSR JMPTMP +ICLXADR JSR $FFFF SEI STA ALTRDON PLA @@ -1952,7 +1948,7 @@ ENTER4 LDA ESTKH,X STA (IFP),Y DEY INX - DEC TMPL + DEC NPARMS BNE ENTER4 ENTER5 LDY IPY JMP NEXTOP @@ -1992,7 +1988,7 @@ ENTERX4 LDA ESTKH,X STA (IFP),Y DEY INX - DEC TMPL + DEC NPARMS BNE ENTERX4 ENTERX5 STA ALTRDON LDY IPY From ddf5ac11282e7b249a1b5e70ffa08429c885e249 Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Sun, 1 Jun 2014 01:52:40 -0500 Subject: [PATCH 3/4] Total completion of refactoring, got all the bugs out of the refactored classes (finally!) :-) --- .../outlaweditor/ui/EntitySelectorCell.java | 66 +++++++++++++++++++ .../ui/MapEditorTabController.java | 2 +- .../ui/TileEditorTabController.java | 3 + .../ui/impl/ApplicationUIControllerImpl.java | 56 +--------------- .../ui/impl/ImageEditorTabControllerImpl.java | 3 +- .../ui/impl/MapEditorTabControllerImpl.java | 16 +++-- .../ui/impl/TileEditorTabControllerImpl.java | 3 +- .../main/resources/MythosScriptEditor.fxml | 2 +- 8 files changed, 87 insertions(+), 64 deletions(-) create mode 100644 OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/EntitySelectorCell.java diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/EntitySelectorCell.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/EntitySelectorCell.java new file mode 100644 index 00000000..01814ea7 --- /dev/null +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/EntitySelectorCell.java @@ -0,0 +1,66 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.badvision.outlaweditor.ui; + +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.scene.control.ListCell; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.ComboBoxListCell; +import org.badvision.outlaweditor.data.PropertyHelper; +import org.badvision.outlaweditor.ui.impl.ApplicationUIControllerImpl; + +/** + * + * @author blurry + */ +public abstract class EntitySelectorCell extends ComboBoxListCell { + static Map lastSelected = new HashMap<>(); + TextField nameField; + + public EntitySelectorCell(TextField tileNameField) { + super.setPrefWidth(125); + nameField = tileNameField; + } + + @Override + public void updateSelected(boolean sel) { + if (sel) { + Object o = lastSelected.get(nameField); + if (o != null && !o.equals(getItem())) { + ((ListCell) o).updateSelected(false); + } + textProperty().unbind(); + textProperty().bind(nameField.textProperty()); + lastSelected.put(nameField, this); + } else { + updateItem(getItem(), false); + } + } + + @Override + public void updateItem(T item, boolean empty) { + textProperty().unbind(); + super.updateItem(item, empty); + if (item != null && !(item instanceof String)) { + try { + textProperty().bind(PropertyHelper.stringProp(item, "name")); + } catch (NoSuchMethodException ex) { + Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); + } + finishUpdate(item); + } else { + setText(null); + } + } + + public void finishUpdate(T item) { + } + +} diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java index e059de64..36e9d7e1 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java @@ -127,7 +127,7 @@ public abstract class MapEditorTabController { @FXML abstract public void scrollMapUp(ActionEvent event); - protected void initalize() { + public void initalize() { assert mapEditorAnchorPane != null : "fx:id=\"mapEditorAnchorPane\" was not injected: check your FXML file 'mapEditorTab.fxml'."; assert mapHeightField != null : "fx:id=\"mapHeightField\" was not injected: check your FXML file 'mapEditorTab.fxml'."; assert mapNameField != null : "fx:id=\"mapNameField\" was not injected: check your FXML file 'mapEditorTab.fxml'."; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java index f2398019..685a7f0b 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java @@ -85,4 +85,7 @@ public abstract class TileEditorTabController { abstract public void rebuildTileSelectors(); + public void initalize() { + + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java index b1327c06..4895f5d9 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java @@ -1,17 +1,9 @@ package org.badvision.outlaweditor.ui.impl; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javafx.event.Event; -import javafx.scene.control.ListCell; -import javafx.scene.control.TextField; -import javafx.scene.control.cell.ComboBoxListCell; import javafx.scene.input.DataFormat; import org.badvision.outlaweditor.Application; import org.badvision.outlaweditor.Editor; -import static org.badvision.outlaweditor.data.PropertyHelper.*; import org.badvision.outlaweditor.data.TileUtils; import org.badvision.outlaweditor.data.TilesetUtils; import org.badvision.outlaweditor.data.xml.Tile; @@ -34,6 +26,9 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { rebuildTileSelectors(); } }); + tileController.initalize(); + mapController.initalize(); + imageController.initalize(); } @Override @@ -127,51 +122,6 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { public static final DataFormat SCRIPT_DATA_FORMAT = new DataFormat("MythosScript"); - abstract public static class EntitySelectorCell extends ComboBoxListCell { - - static Map lastSelected = new HashMap<>(); - TextField nameField; - - public EntitySelectorCell(TextField tileNameField) { - super.setPrefWidth(125); - nameField = tileNameField; - } - - @Override - public void updateSelected(boolean sel) { - if (sel) { - Object o = lastSelected.get(nameField); - if (o != null && !o.equals(getItem())) { - ((ListCell) o).updateSelected(false); - } - textProperty().unbind(); - textProperty().bind(nameField.textProperty()); - lastSelected.put(nameField, this); - } else { - updateItem(getItem(), false); - } - } - - @Override - public void updateItem(T item, boolean empty) { - textProperty().unbind(); - super.updateItem(item, empty); - if (item != null && !(item instanceof String)) { - try { - textProperty().bind(stringProp(item, "name")); - } catch (NoSuchMethodException ex) { - Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); - } - finishUpdate(item); - } else { - setText(null); - } - } - - public void finishUpdate(T item) { - } - }; - @Override public void clearData() { tileController.setCurrentTile(null); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java index 4985b50b..abd8a8a2 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java @@ -1,5 +1,6 @@ package org.badvision.outlaweditor.ui.impl; +import org.badvision.outlaweditor.ui.EntitySelectorCell; import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; @@ -52,7 +53,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { imageSelector.setCellFactory(new Callback, ListCell>() { @Override public ListCell call(ListView param) { - return new ApplicationUIControllerImpl.EntitySelectorCell(imageNameField) { + return new EntitySelectorCell(imageNameField) { @Override public void finishUpdate(Image item) { } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java index 5a4b0cda..9da4a41d 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java @@ -1,5 +1,6 @@ package org.badvision.outlaweditor.ui.impl; +import org.badvision.outlaweditor.ui.EntitySelectorCell; import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; @@ -185,6 +186,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { } } + @Override public void completeInflightOperations() { if (getCurrentEditor() != null) { getCurrentEditor().getCurrentMap().updateBackingMap(); @@ -248,7 +250,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { } @Override - protected void initalize() { + public void initalize() { super.initalize(); mapSelect.setButtonCell(new ComboBoxListCell() { { @@ -256,7 +258,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { } @Override - public void updateItem(org.badvision.outlaweditor.data.xml.Map item, boolean empty) { + public void updateItem(Map item, boolean empty) { textProperty().unbind(); super.updateItem(item, empty); if (item != null) { @@ -266,13 +268,13 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { } } }); - mapSelect.setCellFactory(new Callback, ListCell>() { + mapSelect.setCellFactory(new Callback, ListCell>() { @Override - public ListCell call(ListView param) { - return new ApplicationUIControllerImpl.EntitySelectorCell(mapNameField) { + public ListCell call(ListView param) { + return new EntitySelectorCell(mapNameField) { @Override - public void finishUpdate(org.badvision.outlaweditor.data.xml.Map item) { - } + public void finishUpdate(Map item) { + } }; } }); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java index 0004ea94..3ac9f942 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java @@ -1,5 +1,6 @@ package org.badvision.outlaweditor.ui.impl; +import org.badvision.outlaweditor.ui.EntitySelectorCell; import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; @@ -156,7 +157,7 @@ public class TileEditorTabControllerImpl extends TileEditorTabController { tileSelector.setCellFactory(new Callback, ListCell>() { @Override public ListCell call(ListView param) { - return new ApplicationUIControllerImpl.EntitySelectorCell(tileNameField) { + return new EntitySelectorCell(tileNameField) { @Override public void finishUpdate(Tile item) { setGraphic(new ImageView(TileUtils.getImage(item, Application.currentPlatform))); diff --git a/OutlawEditor/src/main/resources/MythosScriptEditor.fxml b/OutlawEditor/src/main/resources/MythosScriptEditor.fxml index db283b69..0e40c5bd 100644 --- a/OutlawEditor/src/main/resources/MythosScriptEditor.fxml +++ b/OutlawEditor/src/main/resources/MythosScriptEditor.fxml @@ -5,7 +5,7 @@ - + From beee37122ffde6596ae3523035284b03ae163066 Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Sun, 1 Jun 2014 02:25:37 -0500 Subject: [PATCH 4/4] Cleaned up map tab layout a little, added script info pane --- .../src/main/resources/mapEditorTab.fxml | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/OutlawEditor/src/main/resources/mapEditorTab.fxml b/OutlawEditor/src/main/resources/mapEditorTab.fxml index 01aa1742..36b720d4 100644 --- a/OutlawEditor/src/main/resources/mapEditorTab.fxml +++ b/OutlawEditor/src/main/resources/mapEditorTab.fxml @@ -1,19 +1,17 @@ - - - +